import com.evernote.edam.type.Tag;\r
import com.trolltech.qt.QThread;\r
import com.trolltech.qt.core.QDateTime;\r
+import com.trolltech.qt.gui.QImage;\r
+import com.trolltech.qt.gui.QPixmap;\r
import com.trolltech.qt.sql.QSqlQuery;\r
import com.trolltech.qt.xml.QDomAttr;\r
import com.trolltech.qt.xml.QDomDocument;\r
public TagSignal tagSignal;\r
public NotebookSignal notebookSignal;\r
private int trashCount;\r
- SaveRunner saveRunner; // Thread used to save content. Used because the xml conversion is slowwwww\r
- QThread saveThread;\r
+ public SaveRunner saveRunner; // Thread used to save content. Used because the xml conversion is slowwwww\r
+ QThread saveThread;\r
\r
+// private final HashMap<String, QImage> thumbnailList;\r
+ \r
// Constructor\r
public ListManager(DatabaseConnection d, ApplicationLogger l) {\r
conn = d;\r
saveRunner = new SaveRunner("saveRunner.log", Global.getDatabaseUrl(), Global.getDatabaseUserid(), Global.getDatabaseUserPassword(), Global.cipherPassword);\r
saveThread = new QThread(saveRunner, "Save Runner Thread");\r
saveThread.start();\r
-\r
+ \r
+// thumbnailList = conn.getNoteTable().getThumbnails();\r
+// thumbnailList = new HashMap<String,QImage>();\r
+ \r
loadNoteTitleColors();\r
\r
}\r
public List<Note> getMasterNoteIndex() {\r
return noteModel.getMasterNoteIndex();\r
}\r
- \r
+ // Thumbnails\r
+// public HashMap<String, QImage> getThumbnails() {\r
+// return thumbnailList;\r
+// }\r
+ public QImage getThumbnail(String guid) {\r
+// if (getThumbnails().containsKey(guid))\r
+// return getThumbnails().get(guid);\r
+ \r
+ QImage img = new QImage();\r
+ img = QImage.fromData(conn.getNoteTable().getThumbnail(guid));\r
+ if (img == null || img.isNull()) \r
+ return null;\r
+ //getThumbnails().put(guid, img);\r
+ return img;\r
+ }\r
+ public QPixmap getThumbnailPixmap(String guid) {\r
+// if (getThumbnails().containsKey(guid))\r
+// return getThumbnails().get(guid);\r
+ \r
+ QPixmap img = new QPixmap();\r
+ img.loadFromData(conn.getNoteTable().getThumbnail(guid));\r
+ if (img == null || img.isNull()) \r
+ return null;\r
+ //getThumbnails().put(guid, img);\r
+ return img;\r
+ }\r
//***************************************************************\r
//***************************************************************\r
//** These functions deal with setting & retrieving filters\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
+ }\r
+ \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
+ 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
+ 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
return false;\r
}\r
\r
- \r
+ public void setNoteSynchronized(String guid, boolean value) {\r
+ getNoteTableModel().updateNoteSyncStatus(guid, value);\r
+ }\r
\r
public void updateNoteTitleColor(String guid, Integer color) {\r
noteModel.updateNoteTitleColor(guid, color);\r