[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