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

List:       kde-commits
Subject:    branches/work/akonadi-ports/kdepim/korganizer
From:       Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date:       2009-11-12 15:20:00
Message-ID: 1258039200.936599.21525.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1048003 by osterfeld:

emit incidenceChanged when we actually have the new item, with the new revision


 M  +13 -7     incidencechanger.cpp  


--- branches/work/akonadi-ports/kdepim/korganizer/incidencechanger.cpp \
#1048002:1048003 @@ -54,6 +54,8 @@
 public:
   QList<Akonadi::Item::Id> m_changes; //list of item ids that are modified atm
   KCal::Incidence::Ptr m_incidenceBeingChanged; // clone of the incidence currently \
being modified, for rollback and to check if something actually changed +  Item \
m_itemBeingChanged; +  QHash<const KJob*,Item> oldItemByJob;
 };
 
 IncidenceChanger::IncidenceChanger( KOrg::AkonadiCalendar *cal, QObject *parent )
@@ -78,6 +80,7 @@
   Q_ASSERT( ! d->m_changes.contains( item.id() ) ); // no nested changes allowed
   d->m_changes.push_back( item.id() );
   d->m_incidenceBeingChanged = Incidence::Ptr( incidence->clone() );
+  d->m_itemBeingChanged = item;
   return true;
 }
 
@@ -156,6 +159,8 @@
   KCal::ComparisonVisitor v;
   Incidence::Ptr incidencePtr( d->m_incidenceBeingChanged );
   d->m_incidenceBeingChanged.reset();
+  const Item oldItem = d->m_itemBeingChanged;
+  d->m_itemBeingChanged = Item();
   if ( v.compare( incidence.get(), incidencePtr.get() ) ) {
     kDebug()<<"Incidence is unmodified";
     return true;
@@ -163,6 +168,7 @@
 
   kDebug() << "modify id=" << item.id() << "uid=" << incidence->uid() << "version=" \
<< item.revision() << "summary=" << incidence->summary() << "type=" << \
incidence->type() << "storageCollectionId=" << item.storageCollectionId();  \
ItemModifyJob *job = new ItemModifyJob( item ); +  d->oldItemByJob.insert( job, \
oldItem );  connect( job, SIGNAL(result( KJob*)), this, \
SLOT(changeIncidenceFinished(KJob*)) );  return true;
 }
@@ -196,7 +202,10 @@
   const ItemModifyJob* job = qobject_cast<const ItemModifyJob*>( j );
   Q_ASSERT( job );
 
-  Incidence::Ptr tmp = Akonadi::incidence( job->item() );
+  const Item oldItem = d->oldItemByJob.value( job );
+  d->oldItemByJob.remove( job );
+  const Item newItem = job->item();
+  Incidence::Ptr tmp = Akonadi::incidence( newItem );
   Q_ASSERT( tmp );
 
   if ( job->error() ) {
@@ -207,6 +216,8 @@
                               tmp->summary(),
                               job->errorString( )) );
   }
+  else
+    emit incidenceChanged( oldItem, newItem );
 }
 
 void IncidenceChanger::deleteIncidenceFinished( KJob* j )
@@ -373,9 +384,6 @@
                                         KOGlobals::WhatChanged action,
                                         QWidget *parent )
 {
-  Akonadi::Item oldItem;
-  oldItem.setPayload(oldinc);
-
   const Incidence::Ptr newinc = Akonadi::incidence( newItem );
 
   kDebug() << "for incidence \"" << newinc->summary() << "\""
@@ -401,9 +409,7 @@
         newinc.get(), KOGlobals::INCIDENCEEDITED, attendeeStatusChanged );
     }
 
-    if ( success ) {
-      emit incidenceChanged( oldItem, newItem, action );
-    } else {
+    if ( !success ) {
       kDebug() << "Changing incidence failed. Reverting changes.";
       assignIncidence( newinc.get(), oldinc.get() );
       return false;


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

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