OSDN Git Service

Cleanup for 0.95 shell problems
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / NeverNote.java
index bc58d73..87e91fd 100644 (file)
@@ -212,9 +212,7 @@ public class NeverNote extends QMainWindow{
     ApplicationLogger          logger;
     List<String>                       selectedNotebookGUIDs;          // List of notebook GUIDs
     List<String>                       selectedTagGUIDs;                       // List of selected tag GUIDs
-    String                                     previousSelectedTag;            // Tag that was selected last time
     List<String>                       selectedNoteGUIDs;                      // List of selected notes
-    String                                     previousSelectedNotebook;       // Notebook selected last time
     String                                     selectedSavedSearchGUID;        // Currently selected saved searches
     private final HashMap<String, ExternalBrowse>      externalWindows;        // Notes being edited by an external window;
     
@@ -668,14 +666,18 @@ public class NeverNote extends QMainWindow{
        historyGuids.add(currentNoteGuid);
        historyPosition = 1;
        
+       menuBar.blockSignals(true);
+       menuBar.narrowListView.blockSignals(true);
+       menuBar.wideListView.blockSignals(true);
         if (Global.getListView() == Global.View_List_Narrow) { 
                menuBar.narrowListView.setChecked(true);
-//             narrowListView();
         }
         else{ 
                menuBar.wideListView.setChecked(true);
-//             wideListView();
         }
+        menuBar.blockSignals(false);
+       menuBar.narrowListView.blockSignals(false);
+       menuBar.wideListView.blockSignals(false);
 
         if (Global.getListView() == Global.View_List_Wide) {
                browserIndexSplitter.addWidget(noteTableView);
@@ -950,8 +952,12 @@ public class NeverNote extends QMainWindow{
                Global.keepRunning = false;
                try {
                        logger.log(logger.MEDIUM, "Waiting for indexThread to stop");
-                       indexRunner.thread().join(50);
-                       logger.log(logger.MEDIUM, "Index thread has stopped");
+                       if (indexRunner.thread().isAlive())
+                               indexRunner.thread().join(50);
+                       if (!indexRunner.thread().isAlive())
+                               logger.log(logger.MEDIUM, "Index thread has stopped");
+                       else
+                               logger.log(logger.MEDIUM, "Index thread still running - bypassing");
                } catch (InterruptedException e1) {
                        e1.printStackTrace();
                }
@@ -1187,7 +1193,8 @@ public class NeverNote extends QMainWindow{
     // Setup the tree containing the user's notebooks.
     private void initializeNotebookTree() {       
        logger.log(logger.HIGH, "Entering NeverNote.initializeNotebookTree");
-       notebookTree.itemClicked.connect(this, "notebookTreeSelection()");
+//     notebookTree.itemClicked.connect(this, "notebookTreeSelection()");
+       notebookTree.selectionSignal.connect(this, "notebookTreeSelection()");
        listManager.notebookSignal.refreshNotebookTreeCounts.connect(notebookTree, "updateCounts(List, List)");
        logger.log(logger.HIGH, "Leaving NeverNote.initializeNotebookTree");
     }   
@@ -1210,65 +1217,36 @@ public class NeverNote extends QMainWindow{
        menuBar.notebookIconAction.setEnabled(true);
        menuBar.notebookStackAction.setEnabled(true);
        List<QTreeWidgetItem> selections = notebookTree.selectedItems();
-       QTreeWidgetItem currentSelection;
        selectedNotebookGUIDs.clear();
-       if (!Global.mimicEvernoteInterface) {
-               for (int i=0; i<selections.size(); i++) {
-                       currentSelection = selections.get(i);
-                       if (!currentSelection.text(2).equals("STACK"))
-                               selectedNotebookGUIDs.add(currentSelection.text(2));
-                       else {
-                               String stackName = currentSelection.text(0);
-                               for (int j=0; j<listManager.getNotebookIndex().size(); j++) {
-                                       Notebook book = listManager.getNotebookIndex().get(j);
-                                       if (book.getStack()!=null && book.getStack().equalsIgnoreCase(stackName))
-                                               selectedNotebookGUIDs.add(book.getGuid());
-                               }
-                       }
-               }
-       
-               
-               // There is the potential for no notebooks to be selected if this 
-               // happens then we make it look like all notebooks were selecetd.
-               // If that happens, just select the "all notebooks"
-               selections = notebookTree.selectedItems();
-               if (selections.size()==0) {
-                       selectedNotebookGUIDs.clear();
-                       menuBar.notebookEditAction.setEnabled(false);
-                       menuBar.notebookDeleteAction.setEnabled(false);
-                       menuBar.notebookIconAction.setEnabled(false);
-               menuBar.notebookStackAction.setEnabled(false);
-               }
-               if (selectedNotebookGUIDs.size() == 1 && selectedNotebookGUIDs.get(0).equals(previousSelectedNotebook)) {
-                       previousSelectedNotebook = selectedNotebookGUIDs.get(0);
-                       previousSelectedNotebook = "";
-                       notebookTree.clearSelection();
-                       notebookTreeSelection();
-                       return;
-               }
-               if (selectedNotebookGUIDs.size() == 1)
-                       previousSelectedNotebook = selectedNotebookGUIDs.get(0);
-               if (selectedNotebookGUIDs.size() > 1) 
-                       previousSelectedNotebook = "";
+               String guid = "";
+               String stackName = "";
+               if (selections.size() > 0) {
+               guid = (selections.get(0).text(2));
+               stackName = selections.get(0).text(0);
+       }
+               if (!Global.mimicEvernoteInterface) {
+                       // If no notebooks are selected, we make it look like the "all notebooks" one was selected
+                       if (selections.size()==0) {
+                               selectedNotebookGUIDs.clear();
+                               for (int i=0; i < listManager.getNotebookIndex().size(); i++) {
+                                       selectedNotebookGUIDs.add(listManager.getNotebookIndex().get(i).getGuid());
+                               }
+                               menuBar.notebookEditAction.setEnabled(false);
+                               menuBar.notebookDeleteAction.setEnabled(false);
+                               menuBar.notebookStackAction.setEnabled(false);
+                               menuBar.notebookIconAction.setEnabled(false);
+                       }
+               }
+       if (!guid.equals("") && !guid.equals("STACK")) {
+               selectedNotebookGUIDs.add(guid);
+               menuBar.notebookIconAction.setEnabled(true);
        } else {
-               String guid = "";
-               String stackName = "";
-               if (selections.size() > 0) {
-                       guid = (selections.get(0).text(2));
-                       stackName = selections.get(0).text(0);
-               }
-               if (!guid.equals("") && !guid.equals("STACK")) {
-                       selectedNotebookGUIDs.add(guid);
-                       menuBar.notebookIconAction.setEnabled(true);
-               }
-               else {
-                       menuBar.notebookIconAction.setEnabled(true);
-                               for (int j=0; j<listManager.getNotebookIndex().size(); j++) {
-                                       Notebook book = listManager.getNotebookIndex().get(j);
-                                       if (book.getStack() != null && book.getStack().equalsIgnoreCase(stackName))
-                                               selectedNotebookGUIDs.add(book.getGuid());
-                               }
-               }
+               menuBar.notebookIconAction.setEnabled(true);
+                       for (int j=0; j<listManager.getNotebookIndex().size(); j++) {
+                               Notebook book = listManager.getNotebookIndex().get(j);
+                               if (book.getStack() != null && book.getStack().equalsIgnoreCase(stackName))
+                                       selectedNotebookGUIDs.add(book.getGuid());
+                       }
        }
        listManager.setSelectedNotebooks(selectedNotebookGUIDs);
        listManager.loadNotesIndex();
@@ -1619,9 +1597,10 @@ public class NeverNote extends QMainWindow{
                }
         }
 
-        notebookTreeSelection();
-        notebookTree.load(listManager.getNotebookIndex(), listManager.getLocalNotebooks());
-        listManager.countNotebookResults(listManager.getNoteIndex());
+               notebookIndexUpdated();
+//        notebookTreeSelection();
+//        notebookTree.load(listManager.getNotebookIndex(), listManager.getLocalNotebooks());
+//        listManager.countNotebookResults(listManager.getNoteIndex());
         logger.log(logger.HIGH, "Entering NeverNote.deleteNotebook");
        }
        // A note's notebook has been updated
@@ -1921,7 +1900,8 @@ public class NeverNote extends QMainWindow{
     private void initializeTagTree() {
        logger.log(logger.HIGH, "Entering NeverNote.initializeTagTree");
 //     tagTree.itemSelectionChanged.connect(this, "tagTreeSelection()");
-       tagTree.itemClicked.connect(this, "tagTreeSelection()");
+//     tagTree.itemClicked.connect(this, "tagTreeSelection()");
+       tagTree.selectionSignal.connect(this, "tagTreeSelection()");
        listManager.tagSignal.refreshTagTreeCounts.connect(tagTree, "updateCounts(List)");
        logger.log(logger.HIGH, "Leaving NeverNote.initializeTagTree");
     }
@@ -1952,17 +1932,6 @@ public class NeverNote extends QMainWindow{
                menuBar.tagDeleteAction.setEnabled(false);
                menuBar.tagIconAction.setEnabled(true);
        }
-       if (selectedTagGUIDs.size() == 1 && selectedTagGUIDs.get(0).equals(previousSelectedTag)) {
-               previousSelectedTag = selectedTagGUIDs.get(0);
-               previousSelectedTag = "";
-               tagTree.clearSelection();
-               tagTreeSelection();
-               return;
-       }
-       if (selectedTagGUIDs.size() == 1)
-               previousSelectedTag = selectedTagGUIDs.get(0);
-       if (selectedTagGUIDs.size() > 1) 
-               previousSelectedTag = "";
        listManager.setSelectedTags(selectedTagGUIDs);
        listManager.loadNotesIndex();
        noteIndexUpdated(false);
@@ -2539,6 +2508,9 @@ public class NeverNote extends QMainWindow{
        // otherwise we trigger off searchFieldChanged.
        @SuppressWarnings("unused")
        private void searchFieldTextChanged(String text) {
+               QWebSettings.setMaximumPagesInCache(0);
+               QWebSettings.setObjectCacheCapacities(0, 0, 0);
+
                if (text.trim().equals("")) {
                        searchFieldCleared();
                        if (searchPerformed) {
@@ -2548,8 +2520,6 @@ public class NeverNote extends QMainWindow{
                                noteCache.clear();
                                readOnlyCache.clear();
                                inkNoteCache.clear();
-                               QWebSettings.setMaximumPagesInCache(0);
-                               QWebSettings.setObjectCacheCapacities(0, 0, 0);
                                
                                listManager.setEnSearch("");
                                listManager.loadNotesIndex();
@@ -3726,7 +3696,12 @@ public class NeverNote extends QMainWindow{
        saveNoteColumnPositions();
        saveNoteIndexWidth();
        saveWindowState();
-       Global.setListView(Global.View_List_Narrow);
+               int sortCol = noteTableView.proxyModel.sortColumn();
+               int sortOrder = noteTableView.proxyModel.sortOrder().value();
+               Global.setSortColumn(sortCol);
+               Global.setSortOrder(sortOrder);
+
+               Global.setListView(Global.View_List_Narrow);
        
        menuBar.wideListView.blockSignals(true);
        menuBar.narrowListView.blockSignals(true);
@@ -3743,12 +3718,22 @@ public class NeverNote extends QMainWindow{
        noteTableView.repositionColumns();
        noteTableView.resizeColumnWidths();
        noteTableView.resizeRowHeights();
+       
+       sortCol = Global.getSortColumn();
+               sortOrder = Global.getSortOrder();
+               noteTableView.sortByColumn(sortCol, SortOrder.resolve(sortOrder));
+               
        showColumns();
        noteTableView.load(false);
        scrollToCurrentGuid();
     }
     public void wideListView() {
-       saveWindowState();
+               int sortCol = noteTableView.proxyModel.sortColumn();
+               int sortOrder = noteTableView.proxyModel.sortOrder().value();
+               Global.setSortColumn(sortCol);
+               Global.setSortOrder(sortOrder);
+
+               saveWindowState();
        saveNoteColumnPositions();
        saveNoteIndexWidth();
        Global.setListView(Global.View_List_Wide);
@@ -3768,6 +3753,11 @@ public class NeverNote extends QMainWindow{
        noteTableView.repositionColumns();
        noteTableView.resizeColumnWidths();
        noteTableView.resizeRowHeights();
+       
+       sortCol = Global.getSortColumn();
+               sortOrder = Global.getSortOrder();
+               noteTableView.sortByColumn(sortCol, SortOrder.resolve(sortOrder));
+       
        showColumns();
        noteTableView.load(false);
        scrollToCurrentGuid();
@@ -4347,38 +4337,44 @@ public class NeverNote extends QMainWindow{
     @SuppressWarnings("unused")
        private void invalidateNoteCache(String guid, String content) {
        String v = noteCache.remove(guid);
-       if (content != null && !noteDirty) {
-               //noteCache.put(guid, content);
-       }
-               if (guid.equals(currentNoteGuid) && !noteDirty)
+//             if (guid.equals(currentNoteGuid) && !noteDirty)
                        refreshEvernoteNote(true);
     }
     // Signal received that a note guid has changed
     @SuppressWarnings("unused")
        private void noteGuidChanged(String oldGuid, String newGuid) {
        if (noteCache.containsKey(oldGuid)) {
-               String cache = noteCache.get(oldGuid);
-               noteCache.put(newGuid, cache);
-               noteCache.remove(oldGuid);
+               if (!oldGuid.equals(currentNoteGuid)) {
+                       String cache = noteCache.get(oldGuid);
+                       noteCache.put(newGuid, cache);
+                       noteCache.remove(oldGuid);
+               } else {
+                       noteCache.remove(oldGuid);
+                       noteCache.put(newGuid, browserWindow.getContent());
+               }
        }
+  
        listManager.updateNoteGuid(oldGuid, newGuid, false);
        if (currentNoteGuid.equals(oldGuid)) {
                if (currentNote != null)
                        currentNote.setGuid(newGuid);
                currentNoteGuid = newGuid;
        }
-               if (externalWindows.containsKey(oldGuid)) {
+               
+       if (externalWindows.containsKey(oldGuid)) {
                        ExternalBrowse b = externalWindows.get(oldGuid);
                        externalWindows.remove(oldGuid);
                        b.getBrowserWindow().getNote().setGuid(newGuid);
                        externalWindows.put(newGuid, b);
                }
+
        for (int i=0; i<listManager.getNoteIndex().size(); i++) {
                if (listManager.getNoteIndex().get(i).getGuid().equals(newGuid)) {
                        noteTableView.proxyModel.addGuid(newGuid);
                        i=listManager.getNoteIndex().size();
                }
        }
+       
        if (listManager.getNoteTableModel().titleColors.containsKey(oldGuid)) {
                int color = listManager.getNoteTableModel().titleColors.get(oldGuid);
                listManager.getNoteTableModel().titleColors.put(newGuid, color);