OSDN Git Service

Correct problem moving conflicting notes on linked notebooks.
authorRandy Baumgarte <randy@fbn.cx>
Thu, 13 Jan 2011 18:59:16 +0000 (13:59 -0500)
committerRandy Baumgarte <randy@fbn.cx>
Sun, 30 Jan 2011 13:36:18 +0000 (08:36 -0500)
src/cx/fbn/nevernote/NeverNote.java
src/cx/fbn/nevernote/sql/NoteTable.java
src/cx/fbn/nevernote/threads/SyncRunner.java

index c503d64..bb8dfa6 100644 (file)
@@ -1040,6 +1040,7 @@ public class NeverNote extends QMainWindow{
                syncRunner.noteSignal.noteChanged.connect(this, "invalidateNoteCache(String, String)");
                syncRunner.resourceSignal.resourceGuidChanged.connect(this, "noteResourceGuidChanged(String,String,String)");
                syncRunner.noteSignal.noteDownloaded.connect(listManager, "noteDownloaded(Note)");
+               syncRunner.noteSignal.notebookChanged.connect(this, "updateNoteNotebook(String, String)");
                
                syncRunner.syncSignal.refreshLists.connect(this, "refreshLists()");
        }
index bd2ab8e..598a648 100644 (file)
@@ -760,6 +760,34 @@ public class NoteTable {
                return notes;   \r
        }\r
        // Get a list of notes that need to be updated\r
+       public List <Note> getDirtyLinkedNotes() {\r
+               String guid;\r
+               Note tempNote;\r
+               List<Note> notes = new ArrayList<Note>();\r
+               List<String> index = new ArrayList<String>();\r
+               \r
+               boolean check;                  \r
+        NSqlQuery query = new NSqlQuery(db.getConnection());\r
+                                       \r
+               check = query.exec("Select guid from Note where isDirty = true and isExpunged = false and notebookGuid in (select guid from notebook where linked = true)");\r
+               if (!check) \r
+                       logger.log(logger.EXTREME, "Note SQL retrieve has failed: " +query.lastError().toString());\r
+               \r
+               // Get a list of the notes\r
+               while (query.next()) {\r
+                       guid = new String();\r
+                       guid = query.valueString(0);\r
+                       index.add(guid); \r
+               }       \r
+               \r
+               // Start getting notes\r
+               for (int i=0; i<index.size(); i++) {\r
+                       tempNote = getNote(index.get(i), true,true,false,true,true);\r
+                       notes.add(tempNote);\r
+               }\r
+               return notes;   \r
+       }\r
+       // Get a list of notes that need to be updated\r
        public List <Note> getDirtyLinked(String notebookGuid) {\r
                String guid;\r
                Note tempNote;\r
index 1fcc42a..e46270c 100644 (file)
@@ -1364,7 +1364,9 @@ public class SyncRunner extends QObject implements Runnable {
                        newBook.setPublished(false);\r
                        \r
                        conn.getNotebookTable().addNotebook(newBook, false, true);\r
+                       notebookSignal.listChanged.emit();\r
                        notebookGuid = newBook.getGuid();\r
+                       refreshNeeded = true;\r
                }\r
                \r
                // Now that we have a good notebook guid, we need to move the conflicting note\r
@@ -1392,7 +1394,8 @@ public class SyncRunner extends QObject implements Runnable {
                conn.getNoteTable().updateNoteGuid(guid, newGuid);\r
                conn.getNoteTable().updateNoteNotebook(newGuid, notebookGuid, true);\r
                \r
-               \r
+               noteSignal.notebookChanged.emit(newGuid, notebookGuid);\r
+               refreshNeeded = true;\r
                noteSignal.guidChanged.emit(guid,newGuid);\r
        }\r
        \r
@@ -1790,6 +1793,7 @@ public class SyncRunner extends QObject implements Runnable {
        logger.log(logger.MEDIUM, "Authenticating Shared Notebooks");\r
        status.message.emit(tr("Synchronizing shared notebooks."));\r
        List<LinkedNotebook> books = conn.getLinkedNotebookTable().getAll();\r
+\r
        for (int i=0; i<books.size(); i++) {\r
                try {\r
                                long lastSyncDate = conn.getLinkedNotebookTable().getLastSequenceDate(books.get(i).getGuid());\r
@@ -1835,6 +1839,14 @@ public class SyncRunner extends QObject implements Runnable {
     //* Linked notebook contents (from someone else's account)\r
     //*************************************************************\r
        private void syncLinkedNotebook(LinkedNotebook book, int usn, int highSequence) {\r
+               \r
+               List<Note> dirtyNotes = conn.getNoteTable().getDirtyLinkedNotes();\r
+               if (dirtyNoteGuids == null) \r
+                       dirtyNoteGuids = new Vector<String>();\r
+\r
+               for (int i=0; i<dirtyNotes.size() && keepRunning; i++) {\r
+                       dirtyNoteGuids.add(dirtyNotes.get(i).getGuid());\r
+               }\r
                boolean fullSync = false;\r
                if (usn == 0)\r
                        fullSync = true;\r