[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:05:10 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=00d0143
The following commit has been merged in the master branch:
commit 00d01433e82ca266f16de3de346c09a55ec56489
Author: David Edmundson <kde at davidedmundson.co.uk>
Date: Mon May 14 23:31:05 2012 +0100
Make WalletInterface a singleton class.
This will reduce any app from prompting the user multiple times for KWallet passwords to only once.
REVIEW: 104950
---
KTp/wallet-interface.cpp | 118 ++++++++++++++++++++++++++---------------------
KTp/wallet-interface.h | 38 ++++++++-------
2 files changed, 83 insertions(+), 73 deletions(-)
diff --git a/KTp/wallet-interface.cpp b/KTp/wallet-interface.cpp
index 6e271fe..21c491e 100644
--- a/KTp/wallet-interface.cpp
+++ b/KTp/wallet-interface.cpp
@@ -21,42 +21,54 @@
#include "wallet-interface.h"
#include <KDebug>
+#include <KGlobal>
+
+
+class KTp::WalletInterfacePrivate
+{
+public:
+ QScopedPointer<KWallet::Wallet> wallet;
+ static const QLatin1String folderName;
+ static const QLatin1String mapsPrefix;
+};
using KTp::WalletInterface;
+using KTp::WalletInterfacePrivate;
-const QLatin1String WalletInterface::s_folderName = QLatin1String("telepathy-kde");
-const QLatin1String WalletInterface::s_mapsPrefix = QLatin1String("maps/");
+const QLatin1String WalletInterfacePrivate::folderName = QLatin1String("telepathy-kde");
+const QLatin1String WalletInterfacePrivate::mapsPrefix = QLatin1String("maps/");
+K_GLOBAL_STATIC(KTp::WalletInterfacePrivate, instance)
-WalletInterface::WalletInterface(WId winId):
- m_wallet(KWallet::Wallet::openWallet(KWallet::Wallet::NetworkWallet(), winId))
+WalletInterface::WalletInterface(WId winId)
{
+ instance->wallet.reset(KWallet::Wallet::openWallet(KWallet::Wallet::NetworkWallet(), winId));
}
WalletInterface::~WalletInterface()
{
}
-bool WalletInterface::hasPassword(const Tp::AccountPtr &account) const
+bool WalletInterface::hasPassword(const Tp::AccountPtr &account)
{
- if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+ if (instance->wallet.isNull() || !instance->wallet->hasFolder(instance->folderName)) {
return false;
}
- m_wallet->setFolder(s_folderName);
- return m_wallet->hasEntry(account->uniqueIdentifier());
+ instance->wallet->setFolder(instance->folderName);
+ return instance->wallet->hasEntry(account->uniqueIdentifier());
}
-QString WalletInterface::password(const Tp::AccountPtr &account) const
+QString WalletInterface::password(const Tp::AccountPtr &account)
{
- if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+ if (instance->wallet.isNull() || !instance->wallet->hasFolder(instance->folderName)) {
return QString();
}
- m_wallet->setFolder(s_folderName);
+ instance->wallet->setFolder(instance->folderName);
QString password;
- if (m_wallet->hasEntry(account->uniqueIdentifier())) {
- int rc = m_wallet->readPassword(account->uniqueIdentifier(), password);
+ if (instance->wallet->hasEntry(account->uniqueIdentifier())) {
+ int rc = instance->wallet->readPassword(account->uniqueIdentifier(), password);
if (rc != 0) {
password.clear();
kWarning() << "failed to read password from KWallet";
@@ -67,41 +79,41 @@ QString WalletInterface::password(const Tp::AccountPtr &account) const
void WalletInterface::setPassword(const Tp::AccountPtr &account, const QString &password)
{
- if (m_wallet.isNull()) {
+ if (instance->wallet.isNull()) {
return;
}
- if (!m_wallet->hasFolder(s_folderName)) {
- m_wallet->createFolder(s_folderName);
+ if (!instance->wallet->hasFolder(instance->folderName)) {
+ instance->wallet->createFolder(instance->folderName);
}
- m_wallet->setFolder(s_folderName);
- m_wallet->writePassword(account->uniqueIdentifier(), password);
+ instance->wallet->setFolder(instance->folderName);
+ instance->wallet->writePassword(account->uniqueIdentifier(), password);
//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();
+ instance->wallet->sync();
}
void WalletInterface::removePassword(const Tp::AccountPtr &account)
{
- if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+ if (instance->wallet.isNull() || !instance->wallet->hasFolder(instance->folderName)) {
return;
}
- m_wallet->setFolder(s_folderName);
- m_wallet->removeEntry(account->uniqueIdentifier());
- m_wallet->sync();
+ instance->wallet->setFolder(instance->folderName);
+ instance->wallet->removeEntry(account->uniqueIdentifier());
+ instance->wallet->sync();
}
-bool WalletInterface::hasEntry(const Tp::AccountPtr &account, const QString &key) const
+bool WalletInterface::hasEntry(const Tp::AccountPtr &account, const QString &key)
{
- if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+ if (instance->wallet.isNull() || !instance->wallet->hasFolder(instance->folderName)) {
return false;
}
- m_wallet->setFolder(s_folderName);
+ instance->wallet->setFolder(instance->folderName);
QMap< QString, QString > map;
- if (m_wallet->hasEntry(s_mapsPrefix + account->uniqueIdentifier())) {
- int rc = m_wallet->readMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+ if (instance->wallet->hasEntry(instance->mapsPrefix + account->uniqueIdentifier())) {
+ int rc = instance->wallet->readMap(instance->mapsPrefix + account->uniqueIdentifier(), map);
if (rc != 0) {
kWarning() << "failed to read map from KWallet (probably it is not a map)";
return false;
@@ -110,17 +122,17 @@ bool WalletInterface::hasEntry(const Tp::AccountPtr &account, const QString &key
return map.contains(key);
}
-QString WalletInterface::entry(const Tp::AccountPtr &account, const QString &key) const
+QString WalletInterface::entry(const Tp::AccountPtr &account, const QString &key)
{
- if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+ if (instance->wallet.isNull() || !instance->wallet->hasFolder(instance->folderName)) {
return QString();
}
- m_wallet->setFolder(s_folderName);
+ instance->wallet->setFolder(instance->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 (instance->wallet->hasEntry(instance->mapsPrefix + account->uniqueIdentifier())) {
+ int rc = instance->wallet->readMap(instance->mapsPrefix + account->uniqueIdentifier(), map);
if (rc != 0) {
kWarning() << "failed to read map from KWallet (probably it is not a map)";
return QString();
@@ -131,18 +143,18 @@ QString WalletInterface::entry(const Tp::AccountPtr &account, const QString &key
void WalletInterface::setEntry(const Tp::AccountPtr &account, const QString &key, const QString &value)
{
- if (m_wallet.isNull()) {
+ if (instance->wallet.isNull()) {
return;
}
- if (! m_wallet->hasFolder(s_folderName)) {
- m_wallet->createFolder(s_folderName);
+ if (! instance->wallet->hasFolder(instance->folderName)) {
+ instance->wallet->createFolder(instance->folderName);
}
- m_wallet->setFolder(s_folderName);
+ instance->wallet->setFolder(instance->folderName);
QMap< QString, QString > map;
- if (m_wallet->hasEntry(s_mapsPrefix + account->uniqueIdentifier())) {
- int rc = m_wallet->readMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+ if (instance->wallet->hasEntry(instance->mapsPrefix + account->uniqueIdentifier())) {
+ int rc = instance->wallet->readMap(instance->mapsPrefix + account->uniqueIdentifier(), map);
if (rc != 0) {
kWarning() << "failed to read map from KWallet (probably it is not a map)";
return;
@@ -150,21 +162,21 @@ void WalletInterface::setEntry(const Tp::AccountPtr &account, const QString &key
}
map[key] = value;
- m_wallet->writeMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+ instance->wallet->writeMap(instance->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();
+ instance->wallet->sync();
}
void WalletInterface::removeEntry(const Tp::AccountPtr &account, const QString &key)
{
- if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+ if (instance->wallet.isNull() || !instance->wallet->hasFolder(instance->folderName)) {
return;
}
- m_wallet->setFolder(s_folderName);
+ instance->wallet->setFolder(instance->folderName);
QMap< QString, QString > map;
- if (m_wallet->hasEntry(s_mapsPrefix + account->uniqueIdentifier())) {
- int rc = m_wallet->readMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+ if (instance->wallet->hasEntry(instance->mapsPrefix + account->uniqueIdentifier())) {
+ int rc = instance->wallet->readMap(instance->mapsPrefix + account->uniqueIdentifier(), map);
if (rc != 0) {
kWarning() << "failed to read map from KWallet (probably it is not a map)";
return;
@@ -173,22 +185,22 @@ void WalletInterface::removeEntry(const Tp::AccountPtr &account, const QString &
map.remove(key);
if (!map.empty()) {
- m_wallet->writeMap(s_mapsPrefix + account->uniqueIdentifier(), map);
+ instance->wallet->writeMap(instance->mapsPrefix + account->uniqueIdentifier(), map);
} else {
- m_wallet->removeEntry(s_mapsPrefix + account->uniqueIdentifier());
+ instance->wallet->removeEntry(instance->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();
+ instance->wallet->sync();
}
void WalletInterface::removeAllEntries(const Tp::AccountPtr& account)
{
- if (m_wallet.isNull() || !m_wallet->hasFolder(s_folderName)) {
+ if (instance->wallet.isNull() || !instance->wallet->hasFolder(instance->folderName)) {
return;
}
- m_wallet->setFolder(s_folderName);
- m_wallet->removeEntry(s_mapsPrefix + account->uniqueIdentifier());
+ instance->wallet->setFolder(instance->folderName);
+ instance->wallet->removeEntry(instance->mapsPrefix + account->uniqueIdentifier());
}
void WalletInterface::removeAccount(const Tp::AccountPtr& account)
@@ -197,7 +209,7 @@ void WalletInterface::removeAccount(const Tp::AccountPtr& account)
removeAllEntries(account);
}
-bool WalletInterface::isOpen() const
+bool WalletInterface::isOpen()
{
- return (!m_wallet.isNull() && m_wallet->isOpen());
+ return (!instance->wallet.isNull() && instance->wallet->isOpen());
}
diff --git a/KTp/wallet-interface.h b/KTp/wallet-interface.h
index 070ef3b..21b25b3 100644
--- a/KTp/wallet-interface.h
+++ b/KTp/wallet-interface.h
@@ -32,53 +32,51 @@
namespace KTp
{
+class WalletInterfacePrivate;
+
+
class KTP_EXPORT WalletInterface
{
+ friend class WalletInterfacePrivate;
public:
-
- WalletInterface(WId winId);
- virtual ~WalletInterface();
+// static WalletInterface* instance();
/** Returns true if a password is stored for the given account */
- bool hasPassword(const Tp::AccountPtr &account) const;
+ static bool hasPassword(const Tp::AccountPtr &account);
/** Returns the stored password for the given account */
- QString password(const Tp::AccountPtr &account) const;
+ static QString password(const Tp::AccountPtr &account);
/** Set the password for the given account to a new password */
- void setPassword(const Tp::AccountPtr &account, const QString &password);
+ static void setPassword(const Tp::AccountPtr &account, const QString &password);
/** Remove the password for the given account from kwallet */
- void removePassword(const Tp::AccountPtr &account);
+ static 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;
+ static bool hasEntry(const Tp::AccountPtr &account, const QString &key);
/** Returns the stored entry for the given account */
- QString entry(const Tp::AccountPtr &account, const QString &key) const;
+ static QString entry(const Tp::AccountPtr &account, const QString &key);
/** Set an entry for the given account to a new value */
- void setEntry(const Tp::AccountPtr &account, const QString &key, const QString &value);
+ static 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);
+ static 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);
+ static void removeAllEntries(const Tp::AccountPtr &account);
/** Remove entries and password for the account from kwallet */
- void removeAccount(const Tp::AccountPtr &account);
+ static void removeAccount(const Tp::AccountPtr &account);
/** Determine if the wallet is open, and is a valid wallet handle */
- bool isOpen() const;
+ static bool isOpen();
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;
-
+ WalletInterface(WId winId=0);
+ virtual ~WalletInterface();
};
} // namespace KTp
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list