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

List:       kde-commits
Subject:    KDE/kdepim/akonadi/resources
From:       Kevin Ottens <ervin () kde ! org>
Date:       2009-10-14 12:29:51
Message-ID: 1255523391.813093.29927.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1035160 by ervin:

Add a simpler collection quota attribute which doesn't expose all of the
IMAP quota madness.


 M  +2 -1      CMakeLists.txt  
 M  +43 -9     imap/imapresource.cpp  
 A             shared/collectionquotaattribute.cpp   [License: LGPL (v2+)]
 A             shared/collectionquotaattribute.h   [License: LGPL (v2+)]


--- trunk/KDE/kdepim/akonadi/resources/CMakeLists.txt #1035159:1035160
@@ -15,8 +15,9 @@
 )
 
 set( AKONADI_COLLECTIONATTRIBUTES_SHARED_SOURCES
+  ${CMAKE_CURRENT_SOURCE_DIR}/shared/collectionannotationsattribute.cpp
   ${CMAKE_CURRENT_SOURCE_DIR}/shared/collectionflagsattribute.cpp
-  ${CMAKE_CURRENT_SOURCE_DIR}/shared/collectionannotationsattribute.cpp
+  ${CMAKE_CURRENT_SOURCE_DIR}/shared/collectionquotaattribute.cpp
 )
 
 set( AKONADI_IMAPATTRIBUTES_SHARED_SOURCES
--- trunk/KDE/kdepim/akonadi/resources/imap/imapresource.cpp #1035159:1035160
@@ -59,6 +59,7 @@
 #include <kimap/logoutjob.h>
 #include <kimap/myrightsjob.h>
 #include <kimap/renamejob.h>
+#include <kimap/rfccodecs.h>
 #include <kimap/selectjob.h>
 #include <kimap/setacljob.h>
 #include <kimap/setmetadatajob.h>
@@ -86,8 +87,10 @@
 
 #include <akonadi/kmime/messageparts.h>
 
+#include "collectionannotationsattribute.h"
 #include "collectionflagsattribute.h"
-#include "collectionannotationsattribute.h"
+#include "collectionquotaattribute.h"
+
 #include "imapaclattribute.h"
 #include "imapquotaattribute.h"
 
@@ -110,8 +113,11 @@
   Akonadi::AttributeFactory::registerAttribute<UidValidityAttribute>();
   Akonadi::AttributeFactory::registerAttribute<UidNextAttribute>();
   Akonadi::AttributeFactory::registerAttribute<NoSelectAttribute>();
+
+  Akonadi::AttributeFactory::registerAttribute<CollectionAnnotationsAttribute>();
   Akonadi::AttributeFactory::registerAttribute<CollectionFlagsAttribute>();
-  Akonadi::AttributeFactory::registerAttribute<CollectionAnnotationsAttribute>();
+  Akonadi::AttributeFactory::registerAttribute<CollectionQuotaAttribute>();
+
   Akonadi::AttributeFactory::registerAttribute<ImapAclAttribute>();
   Akonadi::AttributeFactory::registerAttribute<ImapQuotaAttribute>();
 
@@ -1268,29 +1274,57 @@
 
   KIMAP::GetQuotaRootJob *quotaJob = qobject_cast<KIMAP::GetQuotaRootJob*>( job );
   Collection collection = job->property( AKONADI_COLLECTION ).value<Collection>();
+  const QString &mailBox = mailBoxForCollection( collection );
 
   QList<QByteArray> newRoots = quotaJob->roots();
   QList< QMap<QByteArray, qint64> > newLimits;
   QList< QMap<QByteArray, qint64> > newUsages;
+  qint64 newCurrent = -1;
+  qint64 newMax = -1;
 
   foreach ( const QByteArray &root, newRoots ) {
     newLimits << quotaJob->allLimits( root );
     newUsages << quotaJob->allUsages( root );
+
+    const QString &decodedRoot = QString::fromUtf8( KIMAP::decodeImapFolderName( \
root ) ); +
+    if ( decodedRoot == mailBox ) {
+      newCurrent = newUsages.last()["STORAGE"];
+      newMax = newLimits.last()["STORAGE"];
+    }
   }
 
-  // Store the mailbox Quotas
-  ImapQuotaAttribute *quotaAttribute = collection.attribute<ImapQuotaAttribute>( \
                Collection::AddIfMissing );
-  const QList<QByteArray> oldRoots = quotaAttribute->roots();
-  const QList< QMap<QByteArray, qint64> > oldLimits = quotaAttribute->limits();
-  const QList< QMap<QByteArray, qint64> > oldUsages = quotaAttribute->usages();
+  bool updateNeeded = false;
 
+  // Store the mailbox IMAP Quotas
+  ImapQuotaAttribute *imapQuotaAttribute = collection.attribute<ImapQuotaAttribute>( \
Collection::AddIfMissing ); +  const QList<QByteArray> oldRoots = \
imapQuotaAttribute->roots(); +  const QList< QMap<QByteArray, qint64> > oldLimits = \
imapQuotaAttribute->limits(); +  const QList< QMap<QByteArray, qint64> > oldUsages = \
imapQuotaAttribute->usages(); +
   if ( oldRoots != newRoots
     || oldLimits != newLimits
     || oldUsages != newUsages )
   {
-    quotaAttribute->setQuotas( newRoots, newLimits, newUsages );
-    CollectionModifyJob *modify = new CollectionModifyJob( collection );
+    imapQuotaAttribute->setQuotas( newRoots, newLimits, newUsages );
+    updateNeeded = true;
   }
+
+  // Store the collection Quota
+  CollectionQuotaAttribute *quotaAttribute
+    = collection.attribute<CollectionQuotaAttribute>( Collection::AddIfMissing );
+  qint64 oldCurrent = quotaAttribute->currentValue();
+  qint64 oldMax = quotaAttribute->maxValue();
+
+  if ( oldCurrent != newCurrent
+    || oldMax != newMax ) {
+    quotaAttribute->setValues( newCurrent, newMax );
+    updateNeeded = true;
+  }
+
+  if ( updateNeeded ) {
+    new CollectionModifyJob( collection );
+  }
 }
 
 void ImapResource::onGetMetaDataDone( KJob *job )


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

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