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

List:       kde-commits
Subject:    branches/work/~ervin/imap-resource-refactor
From:       Kevin Ottens <ervin () kde ! org>
Date:       2010-07-22 11:23:05
Message-ID: 20100722112305.61FBFAC7AB () svn ! kde ! org
[Download RAW message or body]

SVN commit 1153014 by ervin:

itemChanged() splitted out in its own task.


 M  +1 -0      CMakeLists.txt  
 A             changeitemtask.cpp   [License: LGPL (v2+)]
 A             changeitemtask.h   [License: LGPL (v2+)]
 M  +4 -34     imapresource.cpp  
 M  +17 -0     resourcestate.cpp  
 M  +6 -0      resourcestate.h  
 M  +2 -0      resourcestateinterface.h  
 M  +6 -0      resourcetask.cpp  
 M  +2 -0      resourcetask.h  
 M  +1 -0      tests/CMakeLists.txt  
 M  +5 -0      tests/dummyresourcestate.cpp  
 M  +2 -0      tests/dummyresourcestate.h  
 A             tests/testchangeitemtask.cpp   [License: GPL (v2+)]


--- branches/work/~ervin/imap-resource-refactor/CMakeLists.txt #1153013:1153014
@@ -10,6 +10,7 @@
 
 set( libimapresource_SRCS
   additemtask.cpp
+  changeitemtask.cpp
   imapaccount.cpp
   noselectattribute.cpp
   passwordrequesterinterface.cpp
--- branches/work/~ervin/imap-resource-refactor/imapresource.cpp #1153013:1153014
@@ -99,6 +99,7 @@
 #include "resourcestate.h"
 
 #include "additemtask.h"
+#include "changeitemtask.h"
 #include "retrievecollectionmetadatatask.h"
 #include "retrievecollectionstask.h"
 #include "retrieveitemtask.h"
@@ -332,42 +333,11 @@
   if ( !ensureSessionAvailableOrDefer() )
     return;
 
-  const QString mailBox = mailBoxForCollection( item.parentCollection() );
-  const qint64 uid = item.remoteId().toLongLong();
-
-  if ( parts.contains( "PLD:RFC822" ) ) {
-    if ( !item.hasPayload<KMime::Message::Ptr>() ) {
-      changeProcessed();
-      return;
+  ResourceStateInterface::Ptr state = ResourceState::createChangeItemState( this, item, parts );
+  ChangeItemTask *task = new ChangeItemTask( state, this );
+  task->start( m_pool );
     }
-    // save message to the server.
-    KMime::Message::Ptr msg = item.payload<KMime::Message::Ptr>();
 
-    KIMAP::AppendJob *job = new KIMAP::AppendJob( m_mainSession );
-    job->setProperty( "akonadiItem", QVariant::fromValue( item ) );
-    job->setProperty( "oldUid", uid ); // Will be used in onAppendMessageDone
-    job->setMailBox( mailBox );
-    job->setContent( msg->encodedContent( true ) );
-    job->setFlags( item.flags().toList() );
-    connect( job, SIGNAL( result( KJob* ) ), SLOT( onAppendMessageDone( KJob* ) ) );
-    job->start();
-
-  } else if ( parts.contains( "FLAGS" ) ) {
-    selectIfNeeded( mailBox );
-    KIMAP::StoreJob *store = new KIMAP::StoreJob( m_mainSession );
-    store->setProperty( "akonadiItem", QVariant::fromValue( item ) );
-    store->setProperty( "itemUid", uid );
-    store->setUidBased( true );
-    store->setSequenceSet( KIMAP::ImapSet( uid ) );
-    store->setFlags( item.flags().toList() );
-    store->setMode( KIMAP::StoreJob::SetFlags );
-    connect( store, SIGNAL( result( KJob* ) ), SLOT( onStoreFlagsDone( KJob* ) ) );
-    store->start();
-  } else {
-    changeProcessed();
-  }
-}
-
 void ImapResource::onStoreFlagsDone( KJob *job )
 {
   KIMAP::StoreJob *store = qobject_cast<KIMAP::StoreJob*>( job );
--- branches/work/~ervin/imap-resource-refactor/resourcestate.cpp #1153013:1153014
@@ -77,7 +77,19 @@
   return ResourceStateInterface::Ptr( state );
 }
 
+ResourceStateInterface::Ptr ResourceState::createChangeItemState( ImapResource *resource,
+                                                                  const Akonadi::Item &item,
+                                                                  const QSet<QByteArray> &parts )
+{
+  ResourceState *state = new ResourceState( resource );
 
+  state->m_item = item;
+  state->m_parts = parts;
+
+  return ResourceStateInterface::Ptr( state );
+}
+
+
 ResourceState::ResourceState( ImapResource *resource )
   : m_resource( resource )
 {
@@ -245,6 +257,11 @@
   m_resource->collectionsRetrievalDone();
 }
 
+void ResourceState::changeProcessed()
+{
+  m_resource->changeProcessed();
+}
+
 void ResourceState::cancelTask( const QString &errorString )
 {
   m_resource->cancelTask( errorString );
--- branches/work/~ervin/imap-resource-refactor/resourcestate.h #1153013:1153014
@@ -45,6 +45,10 @@
                                                          const Akonadi::Item &item,
                                                          const Akonadi::Collection &collection );
 
+  static ResourceStateInterface::Ptr createChangeItemState( ImapResource *resource,
+                                                            const Akonadi::Item &item,
+                                                            const QSet<QByteArray> &parts );
+
 private:
   explicit ResourceState( ImapResource *resource );
 public:
@@ -85,6 +89,8 @@
   virtual void collectionsRetrieved( const Akonadi::Collection::List &collections );
   virtual void collectionsRetrievalDone();
 
+  virtual void changeProcessed();
+
   virtual void cancelTask( const QString &errorString );
   virtual void deferTask();
   virtual void taskDone();
--- branches/work/~ervin/imap-resource-refactor/resourcestateinterface.h #1153013:1153014
@@ -73,6 +73,8 @@
   virtual void collectionsRetrieved( const Akonadi::Collection::List &collections ) = 0;
   virtual void collectionsRetrievalDone() = 0;
 
+  virtual void changeProcessed() = 0;
+
   virtual void cancelTask( const QString &errorString ) = 0;
   virtual void deferTask() = 0;
   virtual void taskDone() = 0;
--- branches/work/~ervin/imap-resource-refactor/resourcetask.cpp #1153013:1153014
@@ -196,6 +196,12 @@
   deleteLater();
 }
 
+void ResourceTask::changeProcessed()
+{
+  m_resource->changeProcessed();
+  deleteLater();
+}
+
 void ResourceTask::cancelTask( const QString &errorString )
 {
   m_resource->cancelTask( errorString );
--- branches/work/~ervin/imap-resource-refactor/resourcetask.h #1153013:1153014
@@ -87,6 +87,8 @@
   void collectionsRetrieved( const Akonadi::Collection::List &collections );
   void collectionsRetrievalDone();
 
+  void changeProcessed();
+
   void cancelTask( const QString &errorString );
   void deferTask();
   void taskDone();
--- branches/work/~ervin/imap-resource-refactor/tests/CMakeLists.txt #1153013:1153014
@@ -20,6 +20,7 @@
   testsessionpool
 
   testadditemtask
+  testchangeitemtask
   testretrievecollectionmetadatatask
   testretrievecollectionstask
   testretrieveitemtask
--- branches/work/~ervin/imap-resource-refactor/tests/dummyresourcestate.cpp #1153013:1153014
@@ -213,6 +213,11 @@
   recordCall( "collectionsRetrievalDone" );
 }
 
+void DummyResourceState::changeProcessed()
+{
+  recordCall( "changeProcessed" );
+}
+
 void DummyResourceState::cancelTask( const QString &errorString )
 {
   recordCall( "cancelTask", QVariant::fromValue(errorString) );
--- branches/work/~ervin/imap-resource-refactor/tests/dummyresourcestate.h #1153013:1153014
@@ -87,6 +87,8 @@
   virtual void collectionsRetrieved( const Akonadi::Collection::List &collections );
   virtual void collectionsRetrievalDone();
 
+  virtual void changeProcessed();
+
   virtual void cancelTask( const QString &errorString );
   virtual void deferTask();
   virtual void taskDone();
[prev in list] [next in list] [prev in thread] [next in thread] 

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