[SCM] ktp-common-internals packaging branch, master, updated. debian/15.12.1-2-1839-gf0635e9

Maximiliano Curia maxy at moszumanska.debian.org
Mon May 9 09:04:38 UTC 2016


Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=6e47fb7

The following commit has been merged in the master branch:
commit 6e47fb77f267a05212e00b8068d778dab740d081
Author: Daniele E. Domenichelli <daniele.domenichelli at gmail.com>
Date:   Thu Oct 27 01:57:35 2011 +0200

    Add methods to handle per account key-value entries in KWallet
---
 wallet-interface.cpp | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++
 wallet-interface.h   |  16 +++++++++
 2 files changed, 116 insertions(+)

diff --git a/wallet-interface.cpp b/wallet-interface.cpp
index 71c8f95..980ab19 100644
--- a/wallet-interface.cpp
+++ b/wallet-interface.cpp
@@ -25,6 +25,7 @@
 using KTelepathy::WalletInterface;
 
 const QLatin1String WalletInterface::s_folderName = QLatin1String("telepathy-kde");
+const QLatin1String WalletInterface::s_mapsPrefix = QLatin1String("maps/");
 
 
 WalletInterface::WalletInterface(WId winId):
@@ -90,3 +91,102 @@ void WalletInterface::removePassword(const Tp::AccountPtr &account)
     m_wallet->removeEntry(account->uniqueIdentifier());
     m_wallet->sync();
 }
+
+bool WalletInterface::hasEntry(const Tp::AccountPtr &account, const QString &key) const
+{
+    if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+        return false;
+    }
+
+    m_wallet->setFolder(s_folderName);
+    QMap< QString, QString > map;
+    if (m_wallet->hasEntry(s_mapsPrefix + account->uniqueIdentifier())) {
+        int rc = m_wallet->readMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+        if (rc != 0) {
+            kWarning() << "failed to read map from KWallet (probably it is not a map)";
+            return false;
+        }
+    }
+    return map.contains(key);
+}
+
+QString WalletInterface::entry(const Tp::AccountPtr &account, const QString &key) const
+{
+    if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+        return QString();
+    }
+
+    m_wallet->setFolder(s_folderName);
+    QString value;
+    QMap< QString, QString > map;
+    if (m_wallet->hasEntry(s_mapsPrefix + account->uniqueIdentifier())) {
+        int rc = m_wallet->readMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+        if (rc != 0) {
+            kWarning() << "failed to read map from KWallet (probably it is not a map)";
+            return QString();
+        }
+    }
+    return map.value(key);
+}
+
+void WalletInterface::setEntry(const Tp::AccountPtr &account, const QString &key, const QString &value)
+{
+    if (m_wallet.isNull()) {
+        return;
+    }
+
+    if (! m_wallet->hasFolder(s_folderName)) {
+        m_wallet->createFolder(s_folderName);
+    }
+
+    m_wallet->setFolder(s_folderName);
+    QMap< QString, QString > map;
+    if (m_wallet->hasEntry(s_mapsPrefix + account->uniqueIdentifier())) {
+        int rc = m_wallet->readMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+        if (rc != 0) {
+            kWarning() << "failed to read map from KWallet (probably it is not a map)";
+            return;
+        }
+    }
+    map[key] = value;
+
+    m_wallet->writeMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+    //sync normally happens on close, but in this case we need it to happen /now/ as it needs to be synced before the auth-client starts
+    m_wallet->sync();
+}
+
+void WalletInterface::removeEntry(const Tp::AccountPtr &account, const QString &key)
+{
+    if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+        return;
+    }
+
+    m_wallet->setFolder(s_folderName);
+    QMap< QString, QString > map;
+    if (m_wallet->hasEntry(s_mapsPrefix + account->uniqueIdentifier())) {
+        int rc = m_wallet->readMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+        if (rc != 0) {
+            kWarning() << "failed to read map from KWallet (probably it is not a map)";
+            return;
+        }
+    }
+    map.remove(key);
+
+    if (!map.empty()) {
+        m_wallet->writeMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+    } else {
+        m_wallet->removeEntry(s_mapsPrefix + account->uniqueIdentifier());
+    }
+    //sync normally happens on close, but in this case we need it to happen /now/ as it needs to be synced before the auth-client starts
+    m_wallet->sync();
+}
+
+void WalletInterface::removeAllEntries(const Tp::AccountPtr& account)
+{
+    if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+        return;
+    }
+
+    m_wallet->setFolder(s_folderName);
+    m_wallet->removeEntry(s_mapsPrefix + account->uniqueIdentifier());
+}
diff --git a/wallet-interface.h b/wallet-interface.h
index 1758e0b..333932a 100644
--- a/wallet-interface.h
+++ b/wallet-interface.h
@@ -49,8 +49,24 @@ public:
     /** Remove the password for the given account from kwallet */
     void removePassword(const Tp::AccountPtr &account);
 
+    /** Returns true if a given entry is stored for the given account */
+    bool hasEntry(const Tp::AccountPtr &account, const QString &key) const;
+
+    /** Returns the stored entry for the given account */
+    QString entry(const Tp::AccountPtr &account, const QString &key) const;
+
+    /** Set an entry for the given account to a new value */
+    void setEntry(const Tp::AccountPtr &account, const QString &key, const QString &value);
+
+    /** Remove the entry for the given account from kwallet */
+    void removeEntry(const Tp::AccountPtr &account, const QString &key);
+
+    /** Remove all the entries for the given account from kwallet */
+    void removeAllEntries(const Tp::AccountPtr &account);
+
 private:
     static const QLatin1String s_folderName;
+    static const QLatin1String s_mapsPrefix;
 
     //TODO Library: move private members in a private class
     QScopedPointer<KWallet::Wallet> m_wallet;

-- 
ktp-common-internals packaging



More information about the pkg-kde-commits mailing list