[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:08:45 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-common-internals.git;a=commitdiff;h=cb1835a
The following commit has been merged in the master branch:
commit cb1835a47364b2f6542aa3ffab786807f4d0095b
Author: Martin Klapetek <mklapetek at kde.org>
Date: Wed Mar 4 18:56:31 2015 +0100
Add simple accounts migration
This will be run after the kded module loads the plugin. After
connecting for the first time, the user will be asked for password and
if he chooses to remember the password, it will become stored in
KAccounts.
If an account of unknown type (unknown to KAccounts) is found, it will
use a generic fallback provider and service.
---
kaccounts/kaccounts-ktp-plugin.cpp | 79 +++++++++++++++++++++++++++++++++++++-
kaccounts/kaccounts-ktp-plugin.h | 1 +
2 files changed, 79 insertions(+), 1 deletion(-)
diff --git a/kaccounts/kaccounts-ktp-plugin.cpp b/kaccounts/kaccounts-ktp-plugin.cpp
index d47c0a9..75dff1b 100644
--- a/kaccounts/kaccounts-ktp-plugin.cpp
+++ b/kaccounts/kaccounts-ktp-plugin.cpp
@@ -24,6 +24,7 @@
#include <TelepathyQt/PendingOperation>
#include <TelepathyQt/PendingAccount>
#include <TelepathyQt/PendingReady>
+#include <TelepathyQt/AccountSet>
#include <KSharedConfig>
#include <KConfigGroup>
@@ -34,18 +35,29 @@
#include <Accounts/Service>
#include <Accounts/Manager>
+#include <Accounts/Account>
#include <KAccounts/getcredentialsjob.h>
#include <KAccounts/core.h>
+static QStringList s_knownProviders{QStringLiteral("haze-icq"),
+ QStringLiteral("jabber"),
+ QStringLiteral("kde-talk"),
+ QStringLiteral("haze-sametime"),
+ QStringLiteral("haze-yahoo"),
+ QStringLiteral("haze-gadugadu")};
+
class KAccountsKTpPlugin::Private {
public:
+ Private(KAccountsKTpPlugin *qq) { q = qq; };
Tp::AccountPtr tpAccountForAccountId(const Accounts::AccountId accountId);
+ void migrateTelepathyAccounts();
Tp::AccountManagerPtr accountManager;
Tp::ConnectionManagerPtr connectionManager;
Tp::ProfilePtr profile;
KSharedConfigPtr kaccountsConfig;
+ KAccountsKTpPlugin *q;
};
Tp::AccountPtr KAccountsKTpPlugin::Private::tpAccountForAccountId(const Accounts::AccountId accountId)
@@ -57,11 +69,74 @@ Tp::AccountPtr KAccountsKTpPlugin::Private::tpAccountForAccountId(const Accounts
return accountManager->accountForObjectPath(accountUid);
}
+void KAccountsKTpPlugin::Private::migrateTelepathyAccounts()
+{
+ Accounts::Manager *manager = KAccounts::accountsManager();
+ Accounts::Account *account;
+
+ kaccountsConfig->reparseConfiguration();
+ KConfigGroup ktpKaccountsGroup = kaccountsConfig->group(QStringLiteral("ktp-kaccounts"));
+
+ qDebug() << "Going to migrate Tp accounts";
+
+ Q_FOREACH (const Tp::AccountPtr &tpAccount, accountManager->validAccounts()->accounts()) {
+ if (ktpKaccountsGroup.hasKey(tpAccount->objectPath())) {
+ // we already have this account
+ continue;
+ }
+
+ QString providerName = QStringLiteral("ktp-");
+
+ if (s_knownProviders.contains(tpAccount->serviceName())) {
+ providerName.append(tpAccount->serviceName());
+ } else {
+ providerName.append(QStringLiteral("generic"));
+ }
+
+ qDebug() << "Creating account with providerName" << providerName;
+
+ account = manager->createAccount(providerName);
+ account->setDisplayName(tpAccount->displayName());
+ account->setValue(QStringLiteral("uid"), tpAccount->objectPath());
+ account->setValue(QStringLiteral("username"), tpAccount->nickname());
+ account->setValue(QStringLiteral("auth/mechanism"), QStringLiteral("password"));
+ account->setValue(QStringLiteral("auth/method"), QStringLiteral("password"));
+
+ account->setEnabled(true);
+
+ Accounts::ServiceList services = account->services();
+ Q_FOREACH(const Accounts::Service &service, services) {
+ account->selectService(service);
+ account->setEnabled(tpAccount->isEnabled());
+ }
+
+ qDebug() << tpAccount->nickname() << account->id();
+
+ account->sync();
+ QObject::connect(account, &Accounts::Account::synced, q, &KAccountsKTpPlugin::onAccountSynced);
+ }
+}
+
+void KAccountsKTpPlugin::onAccountSynced()
+{
+ Accounts::Account *account = qobject_cast<Accounts::Account*>(sender());
+ if (!account) {
+ return;
+ }
+ KConfigGroup ktpKaccountsGroup = d->kaccountsConfig->group(QStringLiteral("kaccounts-ktp"));
+ ktpKaccountsGroup.writeEntry(QString::number(account->id()), account->value(QStringLiteral("uid")).toString());
+
+ KConfigGroup kaccountsKtpGroup = d->kaccountsConfig->group(QStringLiteral("ktp-kaccounts"));
+ kaccountsKtpGroup.writeEntry(account->value(QStringLiteral("uid")).toString(), QString::number(account->id()));
+
+ d->kaccountsConfig->sync();
+}
+
//---------------------------------------------------------------------------------------
KAccountsKTpPlugin::KAccountsKTpPlugin(QObject *parent)
: KAccountsDPlugin(parent),
- d(new Private)
+ d(new Private(this))
{
d->kaccountsConfig = KSharedConfig::openConfig(QStringLiteral("kaccounts-ktprc"));
@@ -99,6 +174,8 @@ void KAccountsKTpPlugin::onAccountManagerReady(Tp::PendingOperation *op)
onAccountRemoved(kaccountId.toUInt());
}
}
+
+ d->migrateTelepathyAccounts();
}
void KAccountsKTpPlugin::onAccountCreated(const Accounts::AccountId accountId, const Accounts::ServiceList &serviceList)
diff --git a/kaccounts/kaccounts-ktp-plugin.h b/kaccounts/kaccounts-ktp-plugin.h
index 6f54441..4994355 100644
--- a/kaccounts/kaccounts-ktp-plugin.h
+++ b/kaccounts/kaccounts-ktp-plugin.h
@@ -48,6 +48,7 @@ public Q_SLOTS:
private Q_SLOTS:
void onConnectionManagerReady(Tp::PendingOperation *op);
void onAccountManagerReady(Tp::PendingOperation *op);
+ void onAccountSynced();
private:
class Private;
--
ktp-common-internals packaging
More information about the pkg-kde-commits
mailing list