OSDN Git Service

Add the ability to pin notes.
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / filters / NoteSortFilterProxyModel.java
index 810b503..a99777c 100644 (file)
@@ -19,7 +19,7 @@
 \r
 package cx.fbn.nevernote.filters;\r
 \r
-import java.util.TreeSet;\r
+import java.util.HashMap;\r
 \r
 import com.trolltech.qt.core.QAbstractItemModel;\r
 import com.trolltech.qt.core.QModelIndex;\r
@@ -30,38 +30,40 @@ import com.trolltech.qt.gui.QImage;
 import com.trolltech.qt.gui.QSortFilterProxyModel;\r
 \r
 import cx.fbn.nevernote.Global;\r
+import cx.fbn.nevernote.evernote.NoteMetadata;\r
 \r
 public class NoteSortFilterProxyModel extends QSortFilterProxyModel {\r
-       private final TreeSet<String> guids;\r
+       private final HashMap<String, NoteMetadata> guids;\r
+       private final HashMap<String, NoteMetadata> pinnedGuids;\r
        public Signal2<Integer,Integer> sortChanged;\r
        public boolean blocked;\r
        \r
        public NoteSortFilterProxyModel(QObject parent) {\r
                super(parent);\r
-               guids = new TreeSet<String>();\r
+               guids = new HashMap<String, NoteMetadata>();\r
+               pinnedGuids = new HashMap<String, NoteMetadata>();\r
                setDynamicSortFilter(true);\r
                sortChanged = new Signal2<Integer,Integer>();\r
-//             logger = new ApplicationLogger("filter.log");\r
        }\r
        public void clear() {\r
                guids.clear();\r
        }\r
-       public void addGuid(String guid) {\r
-//             if (!guids.containsKey(guid))\r
-                       guids.add(guid);\r
+       public void addGuid(String guid, NoteMetadata meta) {\r
+               if (!guids.containsKey(guid))\r
+                       guids.put(guid, meta);\r
+               if (meta.isPinned() == true && !pinnedGuids.containsKey(guid))\r
+                       pinnedGuids.put(guid, meta);\r
        }\r
        public void filter() {\r
                invalidateFilter();\r
        }\r
        @Override\r
        protected boolean filterAcceptsRow(int sourceRow, QModelIndex sourceParent) {\r
-               if (guids.size() == 0)\r
-                       return false;\r
                QAbstractItemModel model = sourceModel();\r
                QModelIndex guidIndex = sourceModel().index(sourceRow, Global.noteTableGuidPosition);\r
                String guid = (String)model.data(guidIndex);\r
                \r
-               if (guids.contains(guid))\r
+               if (guids.containsKey(guid) || pinnedGuids.containsKey(guid))\r
                        return true;\r
                else\r
                        return false;\r