OSDN Git Service

Added the ability to view debugging logs.
authorRandy Baumgarte <randy@fbn.cx>
Sat, 29 Jan 2011 23:29:06 +0000 (18:29 -0500)
committerRandy Baumgarte <randy@fbn.cx>
Sun, 30 Jan 2011 13:38:26 +0000 (08:38 -0500)
src/cx/fbn/nevernote/NeverNote.java
src/cx/fbn/nevernote/dialog/LogFileDialog.java [new file with mode: 0644]
src/cx/fbn/nevernote/gui/MainMenuBar.java

index 9cd3854..35a3c3e 100644 (file)
@@ -107,7 +107,6 @@ import com.trolltech.qt.gui.QHBoxLayout;
 import com.trolltech.qt.gui.QIcon;
 import com.trolltech.qt.gui.QImage;
 import com.trolltech.qt.gui.QLabel;
 import com.trolltech.qt.gui.QIcon;
 import com.trolltech.qt.gui.QImage;
 import com.trolltech.qt.gui.QLabel;
-import com.trolltech.qt.gui.QListWidget;
 import com.trolltech.qt.gui.QMainWindow;
 import com.trolltech.qt.gui.QMenu;
 import com.trolltech.qt.gui.QMessageBox;
 import com.trolltech.qt.gui.QMainWindow;
 import com.trolltech.qt.gui.QMenu;
 import com.trolltech.qt.gui.QMessageBox;
@@ -143,6 +142,7 @@ import cx.fbn.nevernote.dialog.DatabaseLoginDialog;
 import cx.fbn.nevernote.dialog.DatabaseStatus;
 import cx.fbn.nevernote.dialog.FindDialog;
 import cx.fbn.nevernote.dialog.IgnoreSync;
 import cx.fbn.nevernote.dialog.DatabaseStatus;
 import cx.fbn.nevernote.dialog.FindDialog;
 import cx.fbn.nevernote.dialog.IgnoreSync;
+import cx.fbn.nevernote.dialog.LogFileDialog;
 import cx.fbn.nevernote.dialog.LoginDialog;
 import cx.fbn.nevernote.dialog.NotebookArchive;
 import cx.fbn.nevernote.dialog.NotebookEdit;
 import cx.fbn.nevernote.dialog.LoginDialog;
 import cx.fbn.nevernote.dialog.NotebookArchive;
 import cx.fbn.nevernote.dialog.NotebookEdit;
@@ -2479,15 +2479,8 @@ public class NeverNote extends QMainWindow{
        @SuppressWarnings("unused")
        private void logger() {
                logger.log(logger.HIGH, "Entering NeverNote.logger");
        @SuppressWarnings("unused")
        private void logger() {
                logger.log(logger.HIGH, "Entering NeverNote.logger");
-               QDialog dialog = new QDialog(this);
-               QHBoxLayout layout = new QHBoxLayout();
-               QListWidget textBox = new QListWidget();
-               layout.addWidget(textBox);
-               textBox.addItems(emitLog);
-               
-               dialog.setLayout(layout);
-               dialog.setWindowTitle(tr("Mesasge Log"));
-               dialog.show();
+               LogFileDialog dialog = new LogFileDialog(emitLog);
+               dialog.exec();
                logger.log(logger.HIGH, "Leaving NeverNote.logger");
        }
        // Menu option "help/about" was selected
                logger.log(logger.HIGH, "Leaving NeverNote.logger");
        }
        // Menu option "help/about" was selected
diff --git a/src/cx/fbn/nevernote/dialog/LogFileDialog.java b/src/cx/fbn/nevernote/dialog/LogFileDialog.java
new file mode 100644 (file)
index 0000000..c90e72f
--- /dev/null
@@ -0,0 +1,221 @@
+/*\r
+ * This file is part of NeverNote \r
+ * Copyright 2009 Randy Baumgarte\r
+ * \r
+ * This file may be licensed under the terms of of the\r
+ * GNU General Public License Version 2 (the ``GPL'').\r
+ *\r
+ * Software distributed under the License is distributed\r
+ * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either\r
+ * express or implied. See the GPL for the specific language\r
+ * governing rights and limitations.\r
+ *\r
+ * You should have received a copy of the GPL along with this\r
+ * program. If not, go to http://www.gnu.org/licenses/gpl.html\r
+ * or write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
+ *\r
+*/\r
+\r
+package cx.fbn.nevernote.dialog;\r
+\r
+import java.io.BufferedReader;\r
+import java.io.File;\r
+import java.io.FileNotFoundException;\r
+import java.io.FileReader;\r
+import java.io.IOException;\r
+import java.util.List;\r
+\r
+import com.trolltech.qt.gui.QComboBox;\r
+import com.trolltech.qt.gui.QDialog;\r
+import com.trolltech.qt.gui.QHBoxLayout;\r
+import com.trolltech.qt.gui.QIcon;\r
+import com.trolltech.qt.gui.QLabel;\r
+import com.trolltech.qt.gui.QTextEdit;\r
+import com.trolltech.qt.gui.QVBoxLayout;\r
+\r
+import cx.fbn.nevernote.Global;\r
+\r
+public class LogFileDialog extends QDialog {\r
+       public final QComboBox          fileCombo;       \r
+       public final QTextEdit          textField;\r
+       private final List<String>              logs;\r
+       private final String iconPath = new String("classpath:cx/fbn/nevernote/icons/");\r
+       \r
+       // Constructor\r
+       public LogFileDialog(List<String> l) {\r
+               setWindowTitle(tr("Application Logs"));\r
+               logs = l;\r
+               setWindowIcon(new QIcon(iconPath+"notebook-green.png"));\r
+               QVBoxLayout main = new QVBoxLayout();\r
+               setLayout(main);\r
+               fileCombo = new QComboBox(this);\r
+               \r
+               QHBoxLayout comboLayout = new QHBoxLayout();\r
+               comboLayout.addWidget(new QLabel(tr("Log File:")));\r
+               comboLayout.addWidget(fileCombo);\r
+               comboLayout.addStretch(100);\r
+               fileCombo.currentIndexChanged.connect(this, "indexChanged(Integer)");\r
+               \r
+               main.addLayout(comboLayout);\r
+                               \r
+               textField = new QTextEdit(this);\r
+               main.addWidget(textField);\r
+               \r
+               fileCombo.addItem(tr("Message Log"), "MessageLog");\r
+               fileCombo.addItem(tr("Application Log"), "NeverNoteLog");\r
+               fileCombo.addItem(tr("Synchronization Log"), "SyncLog");\r
+               fileCombo.addItem(tr("Save Log"), "SaveLog");\r
+               fileCombo.addItem(tr("Tag Counter Log"), "TagCounterLog");\r
+               fileCombo.addItem(tr("Notebook Counter Log"), "NotebookCounterLog");\r
+               fileCombo.addItem(tr("Trash Counter Log"), "TrashCounterLog");\r
+               fileCombo.addItem(tr("Note Browser Log"), "NoteBrowserLog");\r
+               fileCombo.addItem(tr("Export Log"), "ExportLog");\r
+               fileCombo.addItem(tr("Import Log"), "ImportLog");\r
+//             fileCombo.addItem(tr("Global Log"), "GlobalLog");\r
+               fileCombo.addItem(tr("Index Log"), "IndexLog");\r
+               fileCombo.addItem(tr("Database Connection Log"), "DatabaseLog");\r
+               fileCombo.addItem(tr("Thumbnail Generator Log"), "ThumbnailLog");\r
+               fileCombo.addItem(tr("NeverNote Database SQL Trace File"), "NeverNoteDBLog");\r
+               fileCombo.addItem(tr("Index Database SQL Trace File"), "IndexDBLog");\r
+               fileCombo.addItem(tr("Resource Database SQL Trace File"), "ResourceDBLog");\r
+               \r
+               \r
+       }\r
+       \r
+       @SuppressWarnings("unused")\r
+       private void restoreAsNewPushed() {\r
+               this.close();\r
+       }\r
+       @SuppressWarnings("unused")\r
+       private void restorePushed() {\r
+               this.close();\r
+       }\r
+       @SuppressWarnings("unused")\r
+       private void cancelPressed() {\r
+               this.close();\r
+       }\r
+       \r
+       @SuppressWarnings("unused")\r
+       private void indexChanged(Integer index) {\r
+               String value = (String) fileCombo.itemData(index);\r
+\r
+               if (value.equals("MessageLog")) {\r
+                       textField.clear();\r
+                       for (int i=0; i<logs.size(); i++) {\r
+                               textField.append(logs.get(i));\r
+                       }\r
+                       return;\r
+               }               \r
+               if (value.equals("NeverNoteLog")) {\r
+                       loadFile("nevernote.log");\r
+                       return;\r
+               }\r
+               if (value.equals("SyncLog")) {\r
+                       loadFile("syncRunner.log");\r
+                       return;\r
+               }\r
+               if (value.equals("SaveLog")) {\r
+                       loadFile("saveRunner.log");\r
+                       return;\r
+               }\r
+               if (value.equals("SaveLog")) {\r
+                       loadFile("saveRunner.log");\r
+                       return;\r
+               }\r
+               if (value.equals("TagCounterLog")) {\r
+                       loadFile("tag_counter.log");\r
+                       return;\r
+               }\r
+               if (value.equals("NotebookCounterLog")) {\r
+                       loadFile("notebook_counter.log");\r
+                       return;\r
+               }\r
+               if (value.equals("TrashCounterLog")) {\r
+                       loadFile("trash_counter.log");\r
+                       return;\r
+               }\r
+               if (value.equals("NoteBrowserLog")) {\r
+                       loadFile("browser.log");\r
+                       return;\r
+               }\r
+               if (value.equals("ExportLog")) {\r
+                       loadFile("export.log");\r
+                       return;\r
+               }\r
+               if (value.equals("ImportLog")) {\r
+                       loadFile("import.log");\r
+                       return;\r
+               }\r
+               if (value.equals("GlobalLog")) {\r
+                       loadFile("global.log");\r
+                       return;\r
+               }\r
+               if (value.equals("IndexLog")) {\r
+                       loadFile("indexRunner.log");\r
+                       return;\r
+               }\r
+               if (value.equals("DatabaseLog")) {\r
+                       loadFile("nevernote-database.log");\r
+                       return;\r
+               }\r
+               if (value.equals("ThumbnailLog")) {\r
+                       loadFile("thumbnailRunner.log");\r
+                       return;\r
+               }\r
+               if (value.equals("NeverNoteDBLog")) {\r
+                       loadTraceFile("NeverNote.trace.db");\r
+                       return;\r
+               }       \r
+               if (value.equals("IndexDBLog")) {\r
+                       loadTraceFile("Index.trace.db");\r
+                       return;\r
+               }       \r
+               if (value.equals("ResourceDBLog")) {\r
+                       loadTraceFile("Resources.trace.db");\r
+                       return;\r
+               }       \r
+       }\r
+       \r
+       private void loadFile(String file) {\r
+               textField.clear();\r
+               File f = Global.getFileManager().getLogsDirFile(file);\r
+               try {\r
+                       BufferedReader in = new BufferedReader(new FileReader(f.getAbsolutePath()));\r
+                       String data;\r
+                       while ((data=in.readLine()) != null) {\r
+                               textField.append(data);\r
+                       }\r
+               } catch (FileNotFoundException e) {\r
+                       e.printStackTrace();\r
+                       return;\r
+               } catch (IOException e) {\r
+                       // TODO Auto-generated catch block\r
+                       e.printStackTrace();\r
+               }               \r
+       }\r
+               \r
+       private void loadTraceFile(String file) {\r
+               textField.clear();\r
+               File f = Global.getFileManager().getDbDirFile(file);\r
+               try {\r
+                       BufferedReader in = new BufferedReader(new FileReader(f.getAbsolutePath()));\r
+                       String data;\r
+                       while ((data=in.readLine()) != null) {\r
+                               textField.append(data);\r
+                       }\r
+               } catch (FileNotFoundException e) {\r
+                       return;\r
+               } catch (IOException e) {\r
+                       e.printStackTrace();\r
+               }\r
+       }\r
+}\r
\r
+\r
+\r
+       \r
+       \r
+       \r
+       \r
+\r
index 3857ffe..450ab24 100644 (file)
@@ -589,7 +589,7 @@ public class MainMenuBar extends QMenuBar {
                        encryptDatabaseAction.setToolTip("Decrypt the database upon shutdown");\r
                }\r
                \r
                        encryptDatabaseAction.setToolTip("Decrypt the database upon shutdown");\r
                }\r
                \r
-               loggerAction = new QAction(tr("Log"), this);\r
+               loggerAction = new QAction(tr("Logs"), this);\r
                loggerAction.setToolTip("Show the detailed application log");\r
                loggerAction.triggered.connect(parent, "logger()");\r
                setupShortcut(loggerAction, "About_Log");\r
                loggerAction.setToolTip("Show the detailed application log");\r
                loggerAction.triggered.connect(parent, "logger()");\r
                setupShortcut(loggerAction, "About_Log");\r