]> git.zarvox.org Git - imoo.git/blob - ribbon/ribbonaccounts.cpp
e87a5cd651e663745f7a2b92c942bd9b173cf20f
[imoo.git] / ribbon / ribbonaccounts.cpp
1 #include "ribbonaccounts.h"
2
3 #include <QDebug>
4
5 RibbonAccounts::RibbonAccounts(RibbonManager* parent) : QObject((QObject*)parent)
6 {
7         _manager = parent;
8 }
9
10 RibbonAccounts::~RibbonAccounts()
11 {
12 }
13
14 QVariantMap RibbonAccounts::context(PurpleAccount* acct)
15 {
16         QVariantMap m;
17         m["proto"] = purple_account_get_protocol_id(acct);
18         m["account"] = purple_account_get_username(acct);
19         return m;
20 }
21
22 void RibbonAccounts::handleExternalEvent(QString method, QVariantMap params)
23 {
24         qDebug() << "called" << method << "on" << params;
25         if (method == "create_account") {
26                 createAccount(params["protocol"].toByteArray(),
27                               params["username"].toByteArray(),
28                               params["password"].toByteArray());
29         } else if (method == "destroy_account") {
30                 destroyAccount(RibbonAccount::fromString(params["account_id"].toString()));
31         }
32 }
33
34 void RibbonAccounts::createAccount(QByteArray protocol, QByteArray username, QByteArray password)
35 {
36         PurpleAccount *account = purple_account_new(username.data(), protocol.data());
37
38         account->ui_data = _manager;
39         purple_account_set_password(account, password.data());
40         purple_accounts_add(account);
41         purple_account_set_enabled(account, UI_ID, TRUE);
42
43         // Save a handle to this account.
44         RibbonAccount r_acct;
45         r_acct.protocol = protocol;
46         r_acct.username = username;
47         accounts[r_acct] = account;
48 }
49
50 void RibbonAccounts::destroyAccount(RibbonAccount r_acct)
51 {
52         if (accounts.contains(r_acct)) {
53                 qDebug() << "Deleting" << r_acct.toString();
54                 PurpleAccount* account = accounts.take(r_acct);
55                 purple_account_destroy(account);
56         }
57 }