syncRunner.noteIndexSignal.listChanged.connect(this, "noteIndexUpdated(boolean)");
syncRunner.noteSignal.quotaChanged.connect(this, "updateQuotaBar()");
-// syncRunner.syncSignal.setSequenceDate.connect(this,"setSequenceDate(long)");
syncRunner.syncSignal.saveUploadAmount.connect(this,"saveUploadAmount(long)");
-// syncRunner.syncSignal.setUpdateSequenceNumber.connect(this,"setUpdateSequenceNumber(int)");
syncRunner.syncSignal.saveUserInformation.connect(this,"saveUserInformation(User)");
syncRunner.syncSignal.saveEvernoteUpdateCount.connect(this,"saveEvernoteUpdateCount(int)");
syncRunner.noteSignal.guidChanged.connect(this, "noteGuidChanged(String, String)");
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.syncSignal.refreshLists.connect(this, "refreshLists()");
}
return;
}
- // If tihs wasn't already marked as unsynchronized, then we need to update the table
- listManager.getUnsynchronizedNotes().add(currentNoteGuid);
+ // If this wasn't already marked as unsynchronized, then we need to update the table
+ listManager.getNoteTableModel().updateNoteSyncStatus(currentNoteGuid, false);
+/* listManager.getUnsynchronizedNotes().add(currentNoteGuid);
for (int i=0; i<listManager.getNoteTableModel().rowCount(); i++) {
QModelIndex modelIndex = listManager.getNoteTableModel().index(i, Global.noteTableGuidPosition);
if (modelIndex != null) {
}
}
}
-
+ */
logger.log(logger.EXTREME, "Leaving NeverNote.setNoteDirty()");
}
private void saveNote() {
na.setLongitude(0.0);
na.setAltitude(0.0);
newNote.setAttributes(new NoteAttributes());
-
+ newNote.setTagGuids(new ArrayList<String>());
+ newNote.setTagNames(new ArrayList<String>());
+
// If new notes are to be created based upon the selected tags, then we need to assign the tags
if (Global.newNoteWithSelectedTags()) {
- newNote.setTagGuids(new ArrayList<String>());
- newNote.setTagNames(new ArrayList<String>());
List<QTreeWidgetItem> selections = tagTree.selectedItems();
QTreeWidgetItem currentSelection;
for (int i=0; i<selections.size(); i++) {
conn.getNoteTable().addNote(newNote, true);
listManager.getUnsynchronizedNotes().add(newNote.getGuid());
listManager.addNote(newNote);
- noteTableView.insertRow(newNote, true, -1);
+// noteTableView.insertRow(newNote, true, -1);
currentNote = newNote;
currentNoteGuid = currentNote.getGuid();
synchronizeAnimationTimer.stop();
synchronizeButton.setIcon(synchronizeAnimation.get(0));
saveNote();
+ if (currentNote == null) {
+ currentNote = conn.getNoteTable().getNote(currentNoteGuid, false, false, false, false, true);
+ }
listManager.setUnsynchronizedNotes(conn.getNoteTable().getUnsynchronizedGUIDs());
- listManager.reloadIndexes();
- noteIndexUpdated(true);
+ noteIndexUpdated(false);
noteTableView.selectionModel().blockSignals(true);
scrollToGuid(currentNoteGuid);
noteTableView.selectionModel().blockSignals(false);
refreshEvernoteNote(false);
scrollToGuid(currentNoteGuid);
+ waitCursor(false);
setMessage(tr("Synchronization Complete"));
logger.log(logger.MEDIUM, "Sync complete.");
}
if (getMasterNoteIndex().get(i).getGuid() != null && getMasterNoteIndex().get(i).getGuid().equals(oldGuid)) {\r
getMasterNoteIndex().get(i).setGuid(newGuid);\r
QModelIndex idx = createIndex(i, Global.noteTableGuidPosition, nativePointer());\r
- setData(idx, new Long(getMasterNoteIndex().get(i).getGuid()), Qt.ItemDataRole.EditRole); \r
+ setData(idx, new String(getMasterNoteIndex().get(i).getGuid()), Qt.ItemDataRole.EditRole); \r
i=getMasterNoteIndex().size()+1;\r
}\r
}\r
getMasterNoteIndex().get(i).getAttributes().setAltitudeIsSet(true);\r
QModelIndex idx = createIndex(i, Global.noteTableAuthorPosition, nativePointer());\r
setData(idx, author, Qt.ItemDataRole.EditRole); \r
-\r
i = getMasterNoteIndex().size();\r
} \r
}\r
}\r
}\r
\r
+ public void updateNoteSyncStatus(String guid, boolean sync) {\r
+ \r
+ boolean found = false;\r
+ for (int i=0; i<unsynchronizedNotes.size(); i++) { \r
+ // If the note is now synchronized, but it is in the unsynchronized list, remove it\r
+ if (unsynchronizedNotes.get(i).equalsIgnoreCase(guid) && sync) {\r
+ unsynchronizedNotes.remove(i);\r
+ found = true;\r
+ i=unsynchronizedNotes.size();\r
+ }\r
+ \r
+ // If the note is not synchronized, but it is already in the unsynchronized list, do nothing\r
+ if (unsynchronizedNotes.get(i).equalsIgnoreCase(guid) && sync) {\r
+ found = true;\r
+ i=unsynchronizedNotes.size();\r
+ }\r
+ }\r
+ \r
+ // If we've gotten through the entire list, then we consider it synchronized. If this is \r
+ // wrong, add it to the list.\r
+ if (!sync && !found) \r
+ unsynchronizedNotes.add(guid);\r
+ \r
+ // Now we need to go through the table & update it\r
+ for (int i=0; i<getMasterNoteIndex().size(); i++) {\r
+ if (getMasterNoteIndex().get(i).getGuid().equals(guid)) {\r
+ QModelIndex idx = createIndex(i, Global.noteTableSynchronizedPosition, nativePointer());\r
+ String value;\r
+ if (!sync)\r
+ value = tr("false");\r
+ else\r
+ value = tr("true");\r
+ setData(idx, value, Qt.ItemDataRole.EditRole); \r
+ return;\r
+ } \r
+ }\r
+ }\r
\r
public void addNote(Note n) {\r
- beginInsertRows(null, 0, 1);\r
getNoteIndex().add(n);\r
getMasterNoteIndex().add(n);\r
proxyModel.addGuid(n.getGuid());\r
- endInsertRows();\r
+ proxyModel.invalidate();\r
+// proxyModel.filter();\r
}\r
\r
\r
public Signal1<Note> noteAdded = new Signal1<Note>();\r
public Signal2<String, String> guidChanged = new Signal2<String, String>();\r
public Signal1<Integer> titleColorChanged = new Signal1<Integer>();\r
+ public Signal2<Note, Boolean> noteDownloaded = new Signal2<Note, Boolean>();\r
}\r
\r
\r
logger.log(logger.EXTREME, "Active dirty note found - non new");\r
if (enNote.getUpdateSequenceNum() > 0) {\r
enNote = getNoteContent(enNote);\r
- System.out.println("--------");\r
- System.out.println("Note:" +enNote);\r
- System.out.println("--------");\r
logger.log(logger.MEDIUM, "Updating note : "+ enNote.getGuid() +" <title>" +enNote.getTitle()+"</title>");\r
enNote = noteStore.updateNote(authToken, enNote);\r
} else { \r
logger.log(logger.EXTREME, "Saving Note");\r
conn.getNoteTable().syncNote(n, false);\r
noteSignal.noteChanged.emit(n.getGuid(), null); // Signal to ivalidate note cache\r
+ noteSignal.noteDownloaded.emit(n, true); // Signal to add note to index\r
logger.log(logger.EXTREME, "Note Saved");\r
if (fullSync && n.getResources() != null) {\r
for (int q=0; q<n.getResources().size() && keepRunning; q++) {\r
//** Load and filter the note index\r
//************************************************************************************\r
//************************************************************************************\r
+ \r
+ public void noteDownloaded(Note n) {\r
+ boolean found = false;\r
+ for (int i=0; i<getMasterNoteIndex().size(); i++) {\r
+ if (getMasterNoteIndex().get(i).getGuid().equals(n.getGuid())) {\r
+ getMasterNoteIndex().set(i,n);\r
+ found = true;\r
+ i=getMasterNoteIndex().size();\r
+ }\r
+ }\r
+ \r
+ if (!found)\r
+ getMasterNoteIndex().add(n);\r
+ \r
+ for (int i=0; i<getNoteIndex().size(); i++) {\r
+ if (getNoteIndex().get(i).getGuid().equals(n.getGuid())) {\r
+ if (filterRecord(getNoteIndex().get(i)))\r
+ getNoteIndex().add(n);\r
+ getNoteIndex().remove(i);\r
+ i=getNoteIndex().size();\r
+ }\r
+ }\r
+ \r
+ if (filterRecord(n))\r
+ getNoteIndex().add(n);\r
+ \r
+ }\r
+ // Check if a note matches the currently selected notebooks, tags, or attribute searches.\r
+ public boolean filterRecord(Note n) {\r
+ \r
+ boolean goodNotebook = false;\r
+ boolean goodTag = false;\r
+ boolean goodStatus = false;\r
+ \r
+ // Check note status\r
+ if (!n.isActive() && Global.showDeleted)\r
+ return true;\r
+ else {\r
+ if (n.isActive() && !Global.showDeleted)\r
+ goodStatus = true;\r
+ // Begin filtering results\r
+ if (goodStatus)\r
+ goodNotebook = filterByNotebook(n.getNotebookGuid());\r
+ if (goodNotebook) \r
+ goodTag = filterByTag(n.getTagGuids());\r
+ if (goodTag) {\r
+ boolean goodCreatedBefore = false;\r
+ boolean goodCreatedSince = false;\r
+ boolean goodChangedBefore = false;\r
+ boolean goodChangedSince = false;\r
+ boolean goodContains = false;\r
+ \r
+ if (!Global.createdBeforeFilter.hasSelection())\r
+ goodCreatedBefore = true;\r
+ else\r
+ goodCreatedBefore = Global.createdBeforeFilter.check(n);\r
+ \r
+ if (!Global.createdSinceFilter.hasSelection())\r
+ goodCreatedSince = true;\r
+ else\r
+ goodCreatedSince = Global.createdSinceFilter.check(n);\r
+ \r
+ if (!Global.changedBeforeFilter.hasSelection())\r
+ goodChangedBefore = true;\r
+ else\r
+ goodChangedBefore = Global.changedBeforeFilter.check(n);\r
+ if (!Global.changedSinceFilter.hasSelection())\r
+ goodChangedSince = true;\r
+ else\r
+ goodChangedSince = Global.changedSinceFilter.check(n);\r
+ if (!Global.containsFilter.hasSelection())\r
+ goodContains = true;\r
+ else\r
+ goodContains = Global.containsFilter.check(conn.getNoteTable(), n);\r
+ \r
+ if (goodCreatedSince && goodCreatedBefore && goodChangedSince && goodChangedBefore && goodContains)\r
+ return true;\r
+ }\r
+ } \r
+ return false;\r
+ }\r
+ \r
// Load the note index based upon what the user wants.\r
public void loadNotesIndex() {\r
logger.log(logger.EXTREME, "Entering ListManager.loadNotesIndex()");\r
notebookCounterRunner.abortCount = true;\r
trashCounterRunner.abortCount = true;\r
\r
- List<Note> index = new ArrayList<Note>();\r
- \r
List<Note> matches;\r
if (enSearchChanged || getMasterNoteIndex() == null)\r
matches = enSearch.matchWords();\r
if (matches == null)\r
matches = getMasterNoteIndex();\r
\r
+ setNoteIndex(new ArrayList<Note>());\r
for (int i=0; i<matches.size(); i++) {\r
- Note n = matches.get(i);\r
- boolean goodNotebook = false;\r
- boolean goodTag = false;\r
- boolean goodStatus = false;\r
- \r
- // Check note status\r
- if (!n.isActive() && Global.showDeleted)\r
- index.add(n);\r
- else {\r
- if (n.isActive() && !Global.showDeleted)\r
- goodStatus = true;\r
- // Begin filtering results\r
- if (goodStatus)\r
- goodNotebook = filterByNotebook(n.getNotebookGuid());\r
- if (goodNotebook) \r
- goodTag = filterByTag(n.getTagGuids());\r
- if (goodTag) {\r
- boolean goodCreatedBefore = false;\r
- boolean goodCreatedSince = false;\r
- boolean goodChangedBefore = false;\r
- boolean goodChangedSince = false;\r
- boolean goodContains = false;\r
- \r
- if (!Global.createdBeforeFilter.hasSelection())\r
- goodCreatedBefore = true;\r
- else\r
- goodCreatedBefore = Global.createdBeforeFilter.check(n);\r
- \r
- if (!Global.createdSinceFilter.hasSelection())\r
- goodCreatedSince = true;\r
- else\r
- goodCreatedSince = Global.createdSinceFilter.check(n);\r
- \r
- if (!Global.changedBeforeFilter.hasSelection())\r
- goodChangedBefore = true;\r
- else\r
- goodChangedBefore = Global.changedBeforeFilter.check(n);\r
-\r
- if (!Global.changedSinceFilter.hasSelection())\r
- goodChangedSince = true;\r
- else\r
- goodChangedSince = Global.changedSinceFilter.check(n);\r
-\r
- if (!Global.containsFilter.hasSelection())\r
- goodContains = true;\r
- else\r
- goodContains = Global.containsFilter.check(conn.getNoteTable(), n);\r
- \r
- if (goodCreatedSince && goodCreatedBefore && goodChangedSince && goodChangedBefore && goodContains)\r
- index.add(n);\r
- }\r
- }\r
-\r
- } \r
- countNotebookResults(index);\r
- countTagResults(index);\r
+ if (filterRecord(matches.get(i)))\r
+ getNoteIndex().add(matches.get(i));\r
+ }\r
+ countNotebookResults(getNoteIndex());\r
+ countTagResults(getNoteIndex());\r
enSearchChanged = false;\r
- setNoteIndex(index);\r
reloadTrashCount();\r
logger.log(logger.EXTREME, "Leaving ListManager.loadNotesIndex()");\r
}\r