[Digikam-devel] [Bug 115157] digikam usability: Image comments/tags dialog: hard to find/see all already selected tags (and to 'de'select them)

Gilles Caulier caulier.gilles at kdemail.net
Wed Feb 7 21:00:47 GMT 2007


------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
         
http://bugs.kde.org/show_bug.cgi?id=115157         




------- Additional Comments From caulier.gilles kdemail net  2007-02-07 22:00 -------
SVN commit 631371 by cgilles:

digikam from trunk : patch from Arnd Baecker to solve assigned tags view problem

CCBUGS: 115157   

 M  +43 -1     imagedescedittab.cpp  


--- trunk/extragear/graphics/digikam/libs/imageproperties/imagedescedittab.cpp #631370:631371
 @ -2,7 +2,7  @
  * Authors: Renchi Raju <renchi pooh tam uiuc edu>
  *          Caulier Gilles <caulier dot gilles at kdemail dot net>
  *          Marcel Wiesweg <marcel.wiesweg gmx de>
- * Date  : 2003-03-09
+ * Date   : 2003-03-09
  * Description : Comments, Tags, and Rating properties editor
  *
  * Copyright 2003-2005 by Renchi Raju & Gilles Caulier
 @ -1466,6 +1466,48  @
         ++it;
     }
 
+    // correct visibilities afterwards:
+    // As QListViewItem::setVisible works recursively on all it's children
+    // we have to correct this
+    if (t)
+    {
+        it = d->tagsView;
+        while (it.current())
+        {
+            TAlbumCheckListItem* item = dynamic_cast<TAlbumCheckListItem*>(it.current());
+            TAlbum *tag               = item->m_album;
+            if (tag)
+            {
+                if (!tag->isRoot())
+                {
+                    // only if the current item is not marked as tagged, check all children 
+                    if (!item->isOn())
+                    {
+                        bool somethingIsSet         = false;
+                        QListViewItem* nextSibling  = (*it)->nextSibling();
+                        QListViewItemIterator tmpIt = it;
+                        ++tmpIt;
+                        while (*tmpIt != nextSibling )
+                        {
+                            TAlbumCheckListItem* tmpItem = dynamic_cast<TAlbumCheckListItem*>(tmpIt.current());
+                            TAlbum *tmpTag = tmpItem->m_album;
+                            if(tmpItem->isOn())
+                            {
+                                somethingIsSet = true;
+                            }
+                            ++tmpIt;
+                        }
+                        if (!somethingIsSet) 
+                        {
+                            item->setVisible(false);
+                        }
+                    }
+                }
+            }
+            ++it;
+        }
+    }
+
     TAlbum *root                  = AlbumManager::instance()->findTAlbum(0);
     TAlbumCheckListItem *rootItem = (TAlbumCheckListItem*)(root->extraData(this));
     if (rootItem)



More information about the Digikam-devel mailing list