[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