[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