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

List:       kde-pim
Subject:    [Kde-pim] KDE/kdepim/kaddressbook/features
From:       Kevin Krammer <kevin.krammer () gmx ! at>
Date:       2008-08-20 21:26:47
Message-ID: 1219267607.821613.19336.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 850163 by krake:

Improved handling of treewidget items for sub resources, e.g. avoid double creation, \
handle removeSubResource signal, etc.

Everybody using sub resource plugins please test as well

CCMAIL: kde-pim@kde.org


 M  +29 -2     resourceselection.cpp  
 M  +3 -0      resourceselection.h  


--- trunk/KDE/kdepim/kaddressbook/features/resourceselection.cpp #850162:850163
@@ -340,7 +340,13 @@
     return;
 
   KABCResourceItem *item = static_cast<KABCResourceItem *>( foundItems[0] );
-  (void)new KABCResourceItem( resource, item, subResource );
+
+  // make sure all other sub items have already been created
+  item->createSubresourceItems();
+
+  // check if we already have an item for it
+  if ( !findSubResourceItem( resource, subResource ) )
+    (void)new KABCResourceItem( resource, item, subResource );
 }
 
 // Remove an entry
@@ -349,8 +355,10 @@
                                                 const QString& subResource )
 {
   kDebug(5720) << resource->resourceName() << subResource;
+
+  KABCResourceItem *item = findSubResourceItem( resource, subResource );
+  delete item;
   // TODO
-  //delete findItemByIdentifier( resource );
   //emitResourcesChanged();
 }
 
@@ -359,6 +367,25 @@
   return static_cast<KABCResourceItem*>( mListView->currentItem() );
 }
 
+KABCResourceItem* ResourceSelection::findSubResourceItem( KABC::ResourceABC \
*resource, +                                                          const QString \
&subResource ) +{
+  QTreeWidgetItemIterator parentIt( mListView );
+  for ( ; *parentIt; ++parentIt ) {
+    if ( static_cast<KABCResourceItem*>(*parentIt)->resource() != resource )
+      continue;
+
+    QTreeWidgetItemIterator childIt( *parentIt );
+    for ( ; *childIt; ++childIt ) {
+      KABCResourceItem *item = static_cast<KABCResourceItem*>(*childIt);
+      if ( item->resourceIdentifier() == subResource )
+        return item;
+    }
+  }
+
+  return 0;
+}
+
 void ResourceSelection::initGUI()
 {
   QBoxLayout *topLayout = new QVBoxLayout( this );
--- trunk/KDE/kdepim/kaddressbook/features/resourceselection.h #850162:850163
@@ -67,6 +67,9 @@
 
     KABCResourceItem* selectedItem() const;
 
+    KABCResourceItem* findSubResourceItem( KABC::ResourceABC *resource,
+                                           const QString &subResource );
+
     QTreeWidget *mListView;
     QAbstractButton *mAddButton;
     QAbstractButton *mEditButton;
_______________________________________________
KDE PIM mailing list kde-pim@kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


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

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