summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2014-01-16 22:17:23 (GMT)
committerChristian Mollekopf <chrigi_1@fastmail.fm>2014-01-16 22:17:23 (GMT)
commitc20c1408c4abace04b469509a2ffe0f1f1bc3845 (patch)
tree3b84848204c6a30e0e91299ef74624924b73d32e /lib
parent34d3e8edb4c655360e8c464819d1c438ac23b2f9 (diff)
downloadkolab-utils-c20c1408c4abace04b469509a2ffe0f1f1bc3845.tar.gz
A simple regextrans2 option to translate target names.
Diffstat (limited to 'lib')
-rw-r--r--lib/kolabaccount.cpp26
-rw-r--r--lib/kolabaccount.h10
2 files changed, 36 insertions, 0 deletions
diff --git a/lib/kolabaccount.cpp b/lib/kolabaccount.cpp
index a395f2f..5925fc5 100644
--- a/lib/kolabaccount.cpp
+++ b/lib/kolabaccount.cpp
@@ -415,3 +415,29 @@ QStringList KolabAccount::lookupFolderList()
return mailboxes;
}
+void KolabAccount::setRegextrans(const QStringList &regextrans)
+{
+ foreach (const QString &transformation, regextrans) {
+ if (!transformation.startsWith("s/") || !transformation.endsWith("/")) {
+ Warning() << "invalid transformation: " << transformation;
+ continue;
+ }
+ QString trans = transformation.mid(2, transformation.length() - 3);
+ const int separator = trans.indexOf("/");
+ const QString searchString = trans.left(separator);
+ const QString replaceString = trans.right(separator+1);
+ Debug() << "s/" << searchString << "/" << replaceString;
+ mRegextrans.insert(searchString, replaceString);
+ }
+}
+
+QString KolabAccount::applyTargetFolderTransformations(const QString &folder) const
+{
+ QString newName(folder);
+ foreach (const QString &searchString, mRegextrans.keys()) {
+ if (folder.contains(searchString)) {
+ return mRegextrans.value(searchString);
+ }
+ }
+ return newName;
+}
diff --git a/lib/kolabaccount.h b/lib/kolabaccount.h
index 4887370..ad28ac5 100644
--- a/lib/kolabaccount.h
+++ b/lib/kolabaccount.h
@@ -50,6 +50,7 @@ public:
void createFolder(const QString &name, const QByteArray &annotation);
void setDryRun(bool);
void setWipeTargetFolders(bool);
+ void setRegextrans(const QStringList &);
KJob *logout();
@@ -59,6 +60,14 @@ public:
void setVersion(Kolab::Version);
QString getUsername() const;
+
+ /**
+ * Applies any target folder name transformations.
+ * This includes:
+ * * user-specified regextrans2 transformations
+ * * normalizations to get a valid name according to the IMAP specification
+ */
+ QString applyTargetFolderTransformations(const QString &) const;
private slots:
void mailBoxesReceived(const QList<KIMAP::MailBoxDescriptor> &descriptors, const QList< QList< QByteArray > > &flags);
@@ -80,6 +89,7 @@ private:
bool mDryRun;
bool mWipeTargetFolders;
Kolab::Version mVersion;
+ QMap<QString, QString> mRegextrans;
};
#endif // KOLABACCOUNT_H