diff --git a/src/jobs/accountservicetoggle.h b/src/jobs/accountservicetogglejob.h rename from src/jobs/accountservicetoggle.h rename to src/jobs/accountservicetogglejob.h diff --git a/src/jobs/accountservicetoggle.cpp b/src/jobs/accountservicetogglejob.cpp rename from src/jobs/accountservicetoggle.cpp rename to src/jobs/accountservicetogglejob.cpp diff --git a/src/jobs/createaccount.h b/src/jobs/createaccountjob.h rename from src/jobs/createaccount.h rename to src/jobs/createaccountjob.h diff --git a/src/jobs/createaccount.cpp b/src/jobs/createaccountjob.cpp rename from src/jobs/createaccount.cpp rename to src/jobs/createaccountjob.cpp diff --git a/src/jobs/accountservicetoggle.h b/src/jobs/removeaccountjob.h rename from src/jobs/accountservicetoggle.h rename to src/jobs/removeaccountjob.h --- a/src/jobs/accountservicetoggle.h +++ b/src/jobs/removeaccountjob.h @@ -16,39 +16,30 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * *************************************************************************************/ -#ifndef ACCOUNTSERVICETOGGLE_H -#define ACCOUNTSERVICETOGGLE_H +#ifndef REMOVEACCOUNT_H +#define REMOVEACCOUNT_H +#include "kaccounts_export.h" #include -#include +#include -class AccountServiceToggle : public KJob +class KACCOUNTS_EXPORT RemoveAccountJob : public KJob { Q_OBJECT Q_PROPERTY(QString accountId READ accountId WRITE setAccountId NOTIFY accountIdChanged) - Q_PROPERTY(QString serviceId READ serviceId WRITE setServiceId NOTIFY serviceIdChanged) - Q_PROPERTY(bool serviceEnabled READ serviceEnabled WRITE setServiceEnabled NOTIFY serviceEnabledChanged) public: - explicit AccountServiceToggle(QObject* parent = nullptr); - virtual ~AccountServiceToggle(); + explicit RemoveAccountJob(QObject* parent = nullptr); + virtual ~RemoveAccountJob(); void start() override; QString accountId() const; void setAccountId(const QString& accountId); Q_SIGNAL void accountIdChanged(); - - QString serviceId() const; - void setServiceId(const QString& serviceId); - Q_SIGNAL void serviceIdChanged(); - - bool serviceEnabled() const; - void setServiceEnabled(bool serviceEnabled); - Q_SIGNAL void serviceEnabledChanged(); private: class Private; Private* d; }; -#endif//ACCOUNTSERVICETOGGLE_H +#endif//REMOVEACCOUNT_H diff --git a/src/jobs/accountservicetoggle.h b/src/jobs/removeaccountjob.cpp copy from src/jobs/accountservicetoggle.h copy to src/jobs/removeaccountjob.cpp --- a/src/jobs/accountservicetoggle.h +++ b/src/jobs/removeaccountjob.cpp @@ -16,39 +16,60 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA * *************************************************************************************/ -#ifndef ACCOUNTSERVICETOGGLE_H -#define ACCOUNTSERVICETOGGLE_H +#include "removeaccountjob.h" +#include +#include "core.h" +#include +#include -#include +class RemoveAccountJob::Private { +public: + Private() {} + QString accountId; +}; -#include +RemoveAccountJob::RemoveAccountJob(QObject* parent) + : KJob(parent) + , d(new Private) +{ } -class AccountServiceToggle : public KJob +RemoveAccountJob::~RemoveAccountJob() { - Q_OBJECT - Q_PROPERTY(QString accountId READ accountId WRITE setAccountId NOTIFY accountIdChanged) - Q_PROPERTY(QString serviceId READ serviceId WRITE setServiceId NOTIFY serviceIdChanged) - Q_PROPERTY(bool serviceEnabled READ serviceEnabled WRITE setServiceEnabled NOTIFY serviceEnabledChanged) -public: - explicit AccountServiceToggle(QObject* parent = nullptr); - virtual ~AccountServiceToggle(); - - void start() override; + delete d; +} - QString accountId() const; - void setAccountId(const QString& accountId); - Q_SIGNAL void accountIdChanged(); +QString RemoveAccountJob::accountId() const +{ + return d->accountId; +} - QString serviceId() const; - void setServiceId(const QString& serviceId); - Q_SIGNAL void serviceIdChanged(); +void RemoveAccountJob::setAccountId(const QString& accountId) +{ + d->accountId = accountId; + Q_EMIT accountIdChanged(); +} - bool serviceEnabled() const; - void setServiceEnabled(bool serviceEnabled); - Q_SIGNAL void serviceEnabledChanged(); -private: - class Private; - Private* d; -}; -#endif//ACCOUNTSERVICETOGGLE_H +void RemoveAccountJob::start() +{ + Accounts::Manager* accountsManager = KAccounts::accountsManager(); + if (accountsManager) { + Accounts::Account *account = accountsManager->account(d->accountId.toInt()); + if (account) { + connect(account, &Accounts::Account::synced, this, [this](){ emitResult(); }); + SignOn::Identity *identity = SignOn::Identity::existingIdentity(account->credentialsId(), this); + if (identity) { + identity->remove(); + identity->deleteLater(); + } + account->remove(); + account->sync(); + } else { + qWarning() << "No account found with the ID" << d->accountId; + emitResult(); + } + } else { + qWarning() << "No accounts manager, this is not awesome."; + emitResult(); + } +}