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

List:       kde-commits
Subject:    KDE/kdepim/kmail
From:       Volker Krause <vkrause () kde ! org>
Date:       2007-08-23 15:51:55
Message-ID: 1187884315.464736.3622.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 703912 by vkrause:

Forwardport IMAP flags client to server migration code.


 A             kmail-3.5-trigger-flag-migration.pl   \
branches/kdepim/enterprise/kdepim/kmail/kmail-3.5-trigger-flag-migration.pl#703903  M \
+16 -3     kmfolderimap.cpp    M  +10 -4     kmfolderimap.h  
 M  +1 -0      kmstartup.cpp  


--- trunk/KDE/kdepim/kmail/kmfolderimap.cpp #703911:703912
@@ -64,7 +64,8 @@
 #include <assert.h>
 
 KMFolderImap::KMFolderImap(KMFolder* folder, const char* aName)
-  : KMFolderMbox(folder, aName)
+  : KMFolderMbox(folder, aName),
+    mUploadAllFlags( false )
 {
   mContentState = imapNoInformation;
   mSubfolderState = imapNoInformation;
@@ -226,6 +227,7 @@
   }
   mNoContent = group.readEntry( "NoContent", false );
   mReadOnly = group.readEntry( "ReadOnly", false );
+  mUploadAllFlags = config->readBoolEntry( "UploadAllFlags", true );
 
   KMFolderMbox::readConfig();
 }
@@ -240,6 +242,7 @@
   group.writeEntry("ImapPath", mImapPath);
   group.writeEntry("NoContent", mNoContent);
   group.writeEntry("ReadOnly", mReadOnly);
+  config->writeEntry( "UploadAllFlags", mUploadAllFlags );
   KMFolderMbox::writeConfig();
 }
 
@@ -1887,11 +1890,21 @@
   setStatus( ids, status, toggle );
 }
 
-void KMFolderImap::setStatus( QList<int> &ids,
+void KMFolderImap::setStatus( QList<int> &_ids,
                               const MessageStatus &status, bool toggle )
 {
   open( "setstatus" );
-  FolderStorage::setStatus( ids, status, toggle );
+  FolderStorage::setStatus(_ids, status, toggle);
+  QList<int> ids;
+  if ( mUploadAllFlags ) {
+    kdDebug(5006) << k_funcinfo << "Migrating all flags to the server" << endl;
+    ids.clear();
+    for ( int i = 0; i < count(); ++i )
+      ids << i;
+    mUploadAllFlags = false;
+  } else {
+    ids = _ids;
+  }
 
   /* The status has been already set in the local index. Update the flags on
    * the server. To avoid doing that for each message individually, group them
--- trunk/KDE/kdepim/kmail/kmfolderimap.h #703911:703912
@@ -192,10 +192,10 @@
 */
 virtual void setStatus(int idx, const MessageStatus& status, bool toggle);
 
-/**
-* Change the status of several messages indicated by @p ids
-*/
-virtual void setStatus(QList<int>& ids, const MessageStatus& status, bool toggle);
+  /**
+   * Change the status of several messages indicated by @p ids
+   */
+  virtual void setStatus(QList<int>& _ids, const MessageStatus& status, bool \
toggle);  
 /** generates sets of uids */
 static QStringList makeSets( QList<ulong>&, bool sort = true);
@@ -535,6 +535,12 @@
   // to-be-added folders
   QStringList mFoldersPendingCreation;
   QStringList owners;
+
+  // push all flags to the server instead of just the changed once
+  // when doing a flag change the next time
+  // this is needed for migrating local flags from the time where we didn't
+  // have the ability to store them on the server
+  bool mUploadAllFlags;
 };
 
 #endif // kmfolderimap_h
--- trunk/KDE/kdepim/kmail/kmstartup.cpp #703911:703912
@@ -106,6 +106,7 @@
     "3.4b",
     "3.4.1",
     "3.5.4",
+    "3.5.7-imap-flag-migration",
     "4.0-misc"
   };
   static const int numUpdates = sizeof updates / sizeof *updates;


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

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