OSDN Git Service

Retain expanded state of notebooks & tags across sync.
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / gui / TagTreeWidget.java
index ccee2a8..5cc0896 100644 (file)
@@ -143,11 +143,44 @@ public class TagTreeWidget extends QTreeWidget {
                        return linkedIcon;\r
        }\r
        \r
+       List<String> findExpandedTags(QTreeWidgetItem item) {\r
+               List<String> list = new ArrayList<String>();\r
+               if (item.isExpanded()) \r
+                       list.add(item.text(0));\r
+               for (int i=0; i<item.childCount(); i++) {\r
+                       List<String> childrenList = findExpandedTags(item.child(i));\r
+                       for (int j=0; j<childrenList.size(); j++) {\r
+                               list.add(childrenList.get(j));\r
+                       }\r
+               }\r
+               \r
+               return list;\r
+       }\r
+       \r
+       void expandTags(QTreeWidgetItem item, List<String> expandedTags) {\r
+               for (int i=0; i<item.childCount(); i++) {\r
+                       expandTags(item.child(i), expandedTags);\r
+               }\r
+               \r
+               for (int i=0; i<expandedTags.size(); i++) {\r
+                       if (expandedTags.get(i).equalsIgnoreCase(item.text(0))) {\r
+                               expandItem(item);\r
+                               i=expandedTags.size();\r
+                       }\r
+               }\r
+       }\r
+       \r
        public void load(List<Tag> tags) {\r
        Tag tag;\r
        List<QTreeWidgetItem> index = new ArrayList<QTreeWidgetItem>();\r
        QTreeWidgetItem child;\r
                        \r
+       /* First, let's find out which stacks are expanded */\r
+       QTreeWidgetItem root =  invisibleRootItem();\r
+       List<String> expandedTags = findExpandedTags(root);\r
+\r
+\r
+       \r
        //Clear out the tree & reload\r
        clear();\r
        String iconPath = new String("classpath:cx/fbn/nevernote/icons/");\r
@@ -203,6 +236,8 @@ public class TagTreeWidget extends QTreeWidget {
        resizeColumnToContents(0);\r
        resizeColumnToContents(1);\r
        sortItems(0, SortOrder.AscendingOrder);\r
+       \r
+       expandTags(invisibleRootItem(), expandedTags);\r
        }\r
        // Show (unhide) all tags\r
        public void showAllTags(boolean value) {\r