[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdelibs/kio/bookmarks
From:       Alexander Kellett <lypanov () kde ! org>
Date:       2003-03-15 15:29:09
[Download RAW message or body]

CVS commit by lypanov: 

make tree crawling code more generic


  M +24 -3     kbookmarkmanager.cc   1.42


--- kdelibs/kio/bookmarks/kbookmarkmanager.cc  #1.41:1.42
@@ -431,4 +431,8 @@ public:
     QValueList<KBookmark> find( const KURL &url ) const;
 private:
+    void crawl();
+    void enterGroup(const KBookmarkGroup &group) { ; }
+    void exitGroup() { ; }
+    void sawItem(const KBookmark &);
     typedef QValueList<KBookmark> KBookmarkList;
     QMap<QString, KBookmarkList> m_bk_map;
@@ -445,5 +449,16 @@ void KBookmarkMap::update()
 {
     m_bk_map.clear();
+    crawl();
+}
+
+void KBookmarkMap::sawItem(const KBookmark &bk) {
+    if (!bk.isSeparator()) {
+        // add bookmark to url map
+        m_bk_map[bk.url().url()].append(bk);
+    }
+}
 
+void KBookmarkMap::crawl()
+{
     // non-recursive bookmark iterator
     QPtrStack<KBookmarkGroup> stack;
@@ -455,4 +470,5 @@ void KBookmarkMap::update()
         {
             KBookmarkGroup gp = bk.toGroup();
+            enterGroup(gp);
             // only recurse into non-empty group, else skip it
             if (!gp.first().isNull()) 
@@ -462,9 +478,9 @@ void KBookmarkMap::update()
                  continue;
             }
+            exitGroup();
         } 
-        else if (!bk.isSeparator()) 
+        else
         {
-            // add bookmark to url map
-            m_bk_map[bk.url().url()].append(bk);
+            sawItem(bk);
         }
 
@@ -480,4 +496,9 @@ void KBookmarkMap::update()
             }
             bk = *(stack.pop());
+            // umm... this is _ugly_
+            if (!stack.isEmpty())
+            {
+                exitGroup();
+            }
         }
         bk = next;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic