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

List:       kde-commits
Subject:    KDE/kdepim/messagelist
From:       Volker Krause <vkrause () kde ! org>
Date:       2010-10-16 20:46:23
Message-ID: 20101016204623.977E7AC896 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1186546 by vkrause:

Reduce calls to the expensive itemForRow() method by 40%, speeds up
initial message list population by about 15%.


 M  +18 -12    storagemodel.cpp  


--- trunk/KDE/kdepim/messagelist/storagemodel.cpp #1186545:1186546
@@ -78,6 +78,19 @@
 using namespace Akonadi;
 using namespace MessageList;
 
+namespace {
+
+KMime::Message::Ptr messageForItem( const Akonadi::Item &item )
+{
+  if ( !item.hasPayload<KMime::Message::Ptr>() ) {
+    kWarning() << "Not a message" << item.id() << item.remoteId() << \
item.mimeType(); +    return KMime::Message::Ptr();
+  }
+  return item.payload<KMime::Message::Ptr>();
+}
+
+}
+
 static QAtomicInt _k_attributeInitialized;
 
 StorageModel::StorageModel( QAbstractItemModel *model, QItemSelectionModel \
*selectionModel, QObject *parent ) @@ -216,8 +229,8 @@
 bool StorageModel::initializeMessageItem( MessageList::Core::MessageItem *mi,
                                           int row, bool bUseReceiver ) const
 {
-  Item item = itemForRow( row );
-  const KMime::Message::Ptr mail = messageForRow( row );
+  const Item item = itemForRow( row );
+  const KMime::Message::Ptr mail = messageForItem( item );
   if ( !mail ) return false;
 
   QString sender = mail->from()->asUnicodeString();
@@ -301,8 +314,8 @@
 void StorageModel::updateMessageItemData( MessageList::Core::MessageItem *mi,
                                           int row ) const
 {
-  Item item = itemForRow( row );
-  const KMime::Message::Ptr mail = messageForRow( row );
+  const Item item = itemForRow( row );
+  const KMime::Message::Ptr mail = messageForItem( item );
   Q_ASSERT( mail );
 
   Akonadi::MessageStatus stat;
@@ -486,16 +499,9 @@
 
 KMime::Message::Ptr StorageModel::messageForRow( int row ) const
 {
-  Item item = itemForRow( row );
-
-  if ( !item.hasPayload<KMime::Message::Ptr>() ) {
-    kWarning() << "Not a message" << item.id() << item.remoteId() << \
                item.mimeType();
-    return KMime::Message::Ptr();
+  return messageForItem( itemForRow( row ) );
   }
 
-  return item.payload<KMime::Message::Ptr>();
-}
-
 void StorageModel::resetModelStorage()
 {
   reset();


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

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