[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdepim-runtime/KDE/4.12] resources/maildir: Clean the changed file structures after a while in case
From: Andras Mantia <amantia () kde ! org>
Date: 2013-11-23 15:21:54
Message-ID: E1VkF1u-0003Ni-Op () scm ! kde ! org
[Download RAW message or body]
Git commit 7ffc765db397a24dad96d3cbe2c758095baa5a80 by Andras Mantia.
Committed on 17/11/2013 at 10:52.
Pushed by amantia into branch 'KDE/4.12'.
Clean the changed file structures after a while in case the FS notification works as \
expected.
(cherry picked from commit b0b9fa57a1c162f3281811700b70c6373a8b8a17)
Conflicts:
resources/maildir/maildirresource.cpp
M +13 -0 resources/maildir/maildirresource.cpp
M +3 -1 resources/maildir/maildirresource.h
http://commits.kde.org/kdepim-runtime/7ffc765db397a24dad96d3cbe2c758095baa5a80
diff --git a/resources/maildir/maildirresource.cpp \
b/resources/maildir/maildirresource.cpp index 68a9506..569c45f 100644
--- a/resources/maildir/maildirresource.cpp
+++ b/resources/maildir/maildirresource.cpp
@@ -52,6 +52,8 @@ using namespace Akonadi;
using KPIM::Maildir;
using namespace Akonadi_Maildir_Resource;
+#define CLEANER_TIMEOUT 2*6000
+
Maildir MaildirResource::maildirForCollection( const Collection& col )
{
const QString path = maildirPathForCollection( col );
@@ -140,6 +142,9 @@ MaildirResource::MaildirResource( const QString &id )
} else {
synchronizeCollectionTree();
}
+
+ mChangedCleanerTimer = new QTimer( this );
+ connect( mChangedCleanerTimer, SIGNAL( timeout() ), this, SLOT( changedCleaner() ) \
); }
void MaildirResource::attemptConfigRestoring( KJob * job )
@@ -283,6 +288,7 @@ void MaildirResource::itemAdded( const Akonadi::Item & item, \
const Akonadi::Coll
const QString rid = dir.addEntry( mail->encodedContent() );
mChangedFiles.insert( rid );
+ mChangedCleanerTimer->start( CLEANER_TIMEOUT );
restartMaildirScan( dir );
@@ -357,6 +363,7 @@ void MaildirResource::itemChanged( const Akonadi::Item& item, \
const QSet<QByteAr }
dir.writeEntry( newItem.remoteId(), data );
mChangedFiles.insert( newItem.remoteId() );
+ mChangedCleanerTimer->start( CLEANER_TIMEOUT );
} else {
restartMaildirScan( dir );
cancelTask( i18n( "Error: Unsupported type." ) );
@@ -403,6 +410,7 @@ void MaildirResource::itemMoved( const Item &item, const \
Collection &source, con const QString newRid = sourceDir.moveEntryTo( \
item.remoteId(), destDir );
mChangedFiles.insert( newRid );
+ mChangedCleanerTimer->start( CLEANER_TIMEOUT );
restartMaildirScan( sourceDir );
restartMaildirScan( destDir );
@@ -847,4 +855,9 @@ void MaildirResource::restartMaildirScan(const Maildir &maildir)
mFsWatcher->restartDirScan( path + QLatin1Literal( "/cur" ) );
}
+void MaildirResource::changedCleaner()
+{
+ mChangedFiles.clear();
+}
+
#include "maildirresource.moc"
diff --git a/resources/maildir/maildirresource.h \
b/resources/maildir/maildirresource.h index 8445100..95e6112 100644
--- a/resources/maildir/maildirresource.h
+++ b/resources/maildir/maildirresource.h
@@ -23,6 +23,7 @@
#include <akonadi/collection.h>
#include <akonadi/resourcebase.h>
+class QTimer;
class QFileInfo;
class KDirWatch;
namespace Akonadi_Maildir_Resource
@@ -78,6 +79,7 @@ class MaildirResource : public Akonadi::ResourceBase, public \
Akonadi::AgentBase: void fsWatchFileModifyResult( KJob* job );
// Try to restore some config values from Akonadi data
void attemptConfigRestoring( KJob* job );
+ void changedCleaner();
private:
bool ensureDirExists();
@@ -97,7 +99,7 @@ private:
KDirWatch *mFsWatcher;
QHash<QString, KPIM::Maildir> mMaildirsForCollection;
QSet<QString> mChangedFiles; //files changed by the resource and that should be \
ignored in slotFileChanged
-
+ QTimer *mChangedCleanerTimer;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic