OSDN Git Service

Add selective sync, cleanup debug messages, & correct network sync not disconnecting...
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / NeverNote.java
index 87e91fd..861d9fe 100644 (file)
@@ -139,6 +139,7 @@ import cx.fbn.nevernote.dialog.DBEncryptDialog;
 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.LoginDialog;
 import cx.fbn.nevernote.dialog.NotebookArchive;
 import cx.fbn.nevernote.dialog.NotebookEdit;
@@ -1460,7 +1461,13 @@ public class NeverNote extends QMainWindow{
                                nbooks.add(listManager.getNotebookIndex().get(i));
                }
                
-               browserWindow.setNotebookList(nbooks);
+               
+               FilterEditorNotebooks notebookFilter = new FilterEditorNotebooks(conn, logger);
+               List<Notebook> filteredBooks = notebookFilter.getValidNotebooks(currentNote, listManager.getNotebookIndex());
+               browserWindow.setNotebookList(filteredBooks);
+               Iterator<String> set = externalWindows.keySet().iterator();
+               while(set.hasNext())
+                       externalWindows.get(set.next()).getBrowserWindow().setNotebookList(filteredBooks);
                logger.log(logger.HIGH, "Leaving NeverNote.editNotebook");
        }
        // Publish a notebook
@@ -1689,8 +1696,17 @@ public class NeverNote extends QMainWindow{
                        if (!found)
                                nbooks.add(listManager.getNotebookIndex().get(i));
                }
+               
+               FilterEditorNotebooks notebookFilter = new FilterEditorNotebooks(conn, logger);
+               List<Notebook> filteredBooks = notebookFilter.getValidNotebooks(currentNote, listManager.getNotebookIndex());
+               browserWindow.setNotebookList(filteredBooks);
+               
+               // Update any external windows
+               Iterator<String> set = externalWindows.keySet().iterator();
+               while(set.hasNext())
+                       externalWindows.get(set.next()).getBrowserWindow().setNotebookList(filteredBooks);
+               
                waitCursor(false);
-               browserWindow.setNotebookList(nbooks);
        }
        // Change the notebook's icon
        @SuppressWarnings("unused")
@@ -2988,6 +3004,7 @@ public class NeverNote extends QMainWindow{
                menuBar.connectAction.setText(tr("Connect"));
                menuBar.connectAction.setToolTip(tr("Connect to Evernote"));
                menuBar.synchronizeAction.setEnabled(false);
+               Global.isConnected = false;
                synchronizeAnimationTimer.stop();
                return;
        }
@@ -4020,11 +4037,6 @@ public class NeverNote extends QMainWindow{
                                nbooks.add(listManager.getNotebookIndex().get(i));
                }
                
-//             browser.setNotebookList(nbooks);
-               
-               FilterEditorNotebooks notebookFilter = new FilterEditorNotebooks(conn, logger);
-               browserWindow.setNotebookList(notebookFilter.getValidNotebooks(currentNote, listManager.getNotebookIndex()));
-
                browser.setTitle(currentNote.getTitle());
                browser.setTag(getTagNamesForNote(currentNote));
                browser.setAuthor(currentNote.getAttributes().getAuthor());
@@ -4037,7 +4049,6 @@ public class NeverNote extends QMainWindow{
                        browser.setSubjectDate(currentNote.getCreated());
                browser.setUrl(currentNote.getAttributes().getSourceURL());
                
-//             browser.setAllTags(listManager.getTagIndex());
                FilterEditorTags tagFilter = new FilterEditorTags(conn, logger);
                List<Tag> tagList = tagFilter.getValidTags(currentNote);
                browser.setAllTags(tagList);
@@ -4049,6 +4060,10 @@ public class NeverNote extends QMainWindow{
                browser.loadingData(false);
                if (thumbnailViewer.isActiveWindow())
                        thumbnailView();
+               
+               FilterEditorNotebooks notebookFilter = new FilterEditorNotebooks(conn, logger);
+               browser.setNotebookList(notebookFilter.getValidNotebooks(currentNote, listManager.getNotebookIndex()));
+
                waitCursor(false);
                logger.log(logger.HIGH, "Leaving NeverNote.refreshEvernoteNote");
        }
@@ -4643,9 +4658,11 @@ public class NeverNote extends QMainWindow{
     private void setupOnlineMenu() {
        if (!Global.isConnected) {
                menuBar.noteOnlineHistoryAction.setEnabled(false);
+               menuBar.selectiveSyncAction.setEnabled(false);
                return;
        } else {
                menuBar.noteOnlineHistoryAction.setEnabled(true);
+               menuBar.selectiveSyncAction.setEnabled(true);
        }
     }
     @SuppressWarnings("unused")
@@ -4777,7 +4794,101 @@ public class NeverNote extends QMainWindow{
        refreshEvernoteNote(true);
        setMessage(tr("Note has been restored."));
     }
-    
+    @SuppressWarnings("unused")
+       private void setupSelectiveSync() {
+       
+       // Get a list of valid notebooks
+       List<Notebook> notebooks = null; 
+       List<Tag> tags = null;
+       try {
+                       notebooks = syncRunner.noteStore.listNotebooks(syncRunner.authToken);
+                       tags = syncRunner.noteStore.listTags(syncRunner.authToken);
+               } catch (EDAMUserException e) {
+                       setMessage("EDAMUserException: " +e.getMessage());
+                       return;
+               } catch (EDAMSystemException e) {
+                       setMessage("EDAMSystemException: " +e.getMessage());
+                       return;
+               } catch (TException e) {
+                       setMessage("EDAMTransactionException: " +e.getMessage());
+                       return;
+               }
+       
+               // Split up notebooks into synchronized & non-synchronized
+       List<Notebook> ignoredBooks = new ArrayList<Notebook>();
+       List<String> dbIgnoredNotebooks = conn.getSyncTable().getIgnoreRecords("NOTEBOOK");
+       
+       for (int i=notebooks.size()-1; i>=0; i--) {
+               for (int j=0; j<dbIgnoredNotebooks.size(); j++) {
+                       if (notebooks.get(i).getGuid().equalsIgnoreCase(dbIgnoredNotebooks.get(j))) {
+                               ignoredBooks.add(notebooks.get(i));
+                               j=dbIgnoredNotebooks.size();
+                       }
+               }
+       }
+       
+       // split up tags into synchronized & non-synchronized
+       List<Tag> ignoredTags = new ArrayList<Tag>();
+       List<String> dbIgnoredTags = conn.getSyncTable().getIgnoreRecords("TAG");
+       
+       for (int i=tags.size()-1; i>=0; i--) {
+               for (int j=0; j<dbIgnoredTags.size(); j++) {
+                       if (tags.get(i).getGuid().equalsIgnoreCase(dbIgnoredTags.get(j))) {
+                               ignoredTags.add(tags.get(i));
+                               j=dbIgnoredTags.size();
+                       }
+               }
+       }
+       
+               IgnoreSync ignore = new IgnoreSync(notebooks, ignoredBooks, tags, ignoredTags);
+               ignore.exec();
+               if (!ignore.okClicked())
+                       return;
+               
+               waitCursor(true);
+               
+               // Clear out old notebooks & add  the new ones
+               List<String> oldIgnoreNotebooks = conn.getSyncTable().getIgnoreRecords("NOTEBOOK");
+               for (int i=0; i<oldIgnoreNotebooks.size(); i++) {
+                       conn.getSyncTable().deleteRecord("IGNORENOTEBOOK-"+oldIgnoreNotebooks.get(i));
+               }
+               
+               List<String> newNotebooks = new ArrayList<String>();
+               for (int i=ignore.getIgnoredBookList().count()-1; i>=0; i--) {
+                       String text = ignore.getIgnoredBookList().takeItem(i).text();
+                       for (int j=0; j<notebooks.size(); j++) {
+                               if (notebooks.get(j).getName().equalsIgnoreCase(text)) {
+                                       Notebook n = notebooks.get(j);
+                                       conn.getSyncTable().addRecord("IGNORENOTEBOOK-"+n.getGuid(), n.getGuid());
+                                       j=notebooks.size();
+                                       newNotebooks.add(n.getGuid());
+                               }
+                       }
+               }
+               
+               // Clear out old tags & add new ones
+               List<String> oldIgnoreTags = conn.getSyncTable().getIgnoreRecords("TAG");
+               for (int i=0; i<oldIgnoreTags.size(); i++) {
+                       conn.getSyncTable().deleteRecord("IGNORETAG-"+oldIgnoreTags.get(i));
+               }
+               
+               List<String> newTags = new ArrayList<String>();
+               for (int i=ignore.getIgnoredTagList().count()-1; i>=0; i--) {
+                       String text = ignore.getIgnoredTagList().takeItem(i).text();
+                       for (int j=0; j<tags.size(); j++) {
+                               if (tags.get(j).getName().equalsIgnoreCase(text)) {
+                                       Tag t = tags.get(j);
+                                       conn.getSyncTable().addRecord("IGNORETAG-"+t.getGuid(), t.getGuid());
+                                       newTags.add(t.getGuid());
+                                       j=tags.size();
+                               }
+                       }
+               }
+               
+               conn.getNoteTable().expungeIgnoreSynchronizedNotes(newNotebooks, newTags);
+               waitCursor(false);
+               refreshLists();
+    }
     
     
        //**********************************************************