Branch 'dev/invitations' - kpimidentities/CMakeLists.txt kpimidentities/utils.cpp kpimidentities/utils.h

Sandro Knauß knauss at kolabsys.com
Wed Sep 24 13:31:38 CEST 2014


 kpimidentities/CMakeLists.txt |    3 +-
 kpimidentities/utils.cpp      |   52 ++++++++++++++++++++++++++++++++++++++++++
 kpimidentities/utils.h        |   19 +++++++++++++++
 3 files changed, 73 insertions(+), 1 deletion(-)

New commits:
commit 8fd882bf054d8c8930c0153e8fb0264341ea63f3
Author: Sandro Knauß <knauss at kolabsys.com>
Date:   Wed Sep 24 13:31:28 2014 +0200

    added utils for cached version

diff --git a/kpimidentities/CMakeLists.txt b/kpimidentities/CMakeLists.txt
index 8957f69..2692c82 100644
--- a/kpimidentities/CMakeLists.txt
+++ b/kpimidentities/CMakeLists.txt
@@ -2,7 +2,7 @@
 add_definitions( -DQT_NO_CAST_FROM_ASCII )
 add_definitions( -DQT_NO_CAST_TO_ASCII )
 
-set(kpimidentities_LIB_SRCS identitymanager.cpp identity.cpp signature.cpp signatureconfigurator.cpp identitycombo.cpp)
+set(kpimidentities_LIB_SRCS identitymanager.cpp identity.cpp signature.cpp signatureconfigurator.cpp identitycombo.cpp utils.cpp)
 
 add_subdirectory( tests )
 
@@ -28,6 +28,7 @@ install(FILES
         signatureconfigurator.h
         identitymanager.h
         identitycombo.h
+        utils.h
         ${CMAKE_CURRENT_BINARY_DIR}/kpimidentities_export.h
         DESTINATION ${INCLUDE_INSTALL_DIR}/kpimidentities COMPONENT Devel)
 
diff --git a/kpimidentities/utils.cpp b/kpimidentities/utils.cpp
new file mode 100644
index 0000000..ac087bf
--- /dev/null
+++ b/kpimidentities/utils.cpp
@@ -0,0 +1,52 @@
+#include "utils.h"
+#include "identitymanager.h"
+
+#include <QObject>
+
+using namespace KPIMIdentities;
+
+class IdendentitiesCache : public QObject
+{
+    Q_OBJECT
+public:
+    IdendentitiesCache() 
+        : mIdentityManager(/*ro=*/ true)
+    {
+        connect(&mIdentityManager, SIGNAL(changed()),
+                SLOT(slotIdentitiesChanged()));
+        slotIdentitiesChanged();
+    }
+
+    const QSet<QString> &emails()
+    {
+        return mEmails;
+    }
+
+private slots:
+    void slotIdentitiesChanged()
+    {
+        mEmails.clear();
+        foreach(const QString &email, mIdentityManager.allEmails()) {
+            mEmails.insert(email.toLower());
+        }
+    }
+
+private:
+    IdentityManager mIdentityManager;
+    QSet<QString> mEmails;
+};
+
+IdendentitiesCache identitiesCache;
+
+bool thatIsMe(const QString &email)
+{
+    return allEmails().contains(email.toLower());
+}
+
+const QSet<QString> &allEmails()
+{
+    return identitiesCache.emails();
+}
+
+
+#include "utils.moc"
\ No newline at end of file
diff --git a/kpimidentities/utils.h b/kpimidentities/utils.h
new file mode 100644
index 0000000..58919b3
--- /dev/null
+++ b/kpimidentities/utils.h
@@ -0,0 +1,19 @@
+#ifndef KPIMIDENTITES_UTILS_H
+#define KPIMIDENTITES_UTILS_H
+
+#include <kpimidentities/kpimidentities_export.h>
+
+#include <QString>
+#include <QSet>
+
+namespace KPIMIdentities
+{
+  /* All functions here are very fast, cause they using a cached version of all identity emails
+   * 
+   */
+  KPIMIDENTITIES_EXPORT bool thatIsMe(const QString &email);
+
+  KPIMIDENTITIES_EXPORT const QSet<QString> &allEmails();
+}
+
+#endif
\ No newline at end of file




More information about the commits mailing list