Version 0.7-0
[vicar] / src / vicar-lib / cpp / harmattanaccountutility.cpp
1 #if defined(Q_WS_MAEMO_6)
2
3 #include "harmattanaccountutility.h"
4 #include <Accounts/Manager>
5 #include <Accounts/Provider>
6 #include <Accounts/Service>
7 #include <QDebug>
8
9 #define SERVICE_NAME "vicar"
10 #define SERVICE_TYPE "IM"
11 #define PROVIDER_NAME "vicar"
12
13
14 using namespace Accounts;
15
16 HarmattanAccountUtility::HarmattanAccountUtility()
17 {
18     manager = new Manager(this);    
19 }
20
21 Account* HarmattanAccountUtility::getAccount(){
22     Account *vicarAccount = NULL;
23     //AccountIdList accountsList = manager->accountList(SERVICE_TYPE);
24     AccountIdList accountsList = manager->accountList();
25
26     for (int i = 0; i < accountsList.size(); i++) {
27         Account *tempAccount = manager->account(accountsList.at(i));        
28         if (tempAccount->providerName() == PROVIDER_NAME){
29             qDebug() << "Account exists";
30             return tempAccount;
31         }
32         else {
33             qDebug () << tempAccount->valueAsString("username") << "with provider " << tempAccount->providerName() <<" ignored";
34         }
35     }
36
37     qDebug() << "Account does not exist";
38     return vicarAccount;
39 }
40
41 Account* HarmattanAccountUtility::addAccount(){
42     Account *vicarAccount;
43     vicarAccount = getAccount();
44     if (vicarAccount == NULL){
45         qDebug() << "Creating new account";
46         vicarAccount = manager->createAccount(PROVIDER_NAME);
47         if (vicarAccount != NULL) {
48             qDebug() << "Account object created";
49             connect(vicarAccount,SIGNAL(error(Accounts::Error)),SLOT(errorOccurred(Accounts::Error)));
50             vicarAccount->setDisplayName("VicarAccount");
51             vicarAccount->setValue("username","vicar");
52             vicarAccount->setValue("name","Call via Vicar");
53             vicarAccount->setEnabled(true); //Set account as enabled globally
54             Service *vicarService = manager->service(SERVICE_NAME);
55             vicarAccount->selectService(vicarService);
56             vicarAccount->setEnabled(true); //Set account as enabled at service level
57             vicarAccount->setValue("ConnectAutomatically","true");
58             vicarAccount->setValue("HasBeenOnline","true");
59             vicarAccount->setValue("NormalizedName","Vicar");
60             vicarAccount->setValue("org.freedesktop.Telepathy.Account.Interface.Addressing.DRAFT.URISchemes","tel;");
61             vicarAccount->setValue("tmc-uid","vicar/tel/vicar0");
62             vicarAccount->sync();
63             qDebug() << "Account created with ID " << vicarAccount->id();
64         }
65         else{
66             qDebug() << "Account not created due to error "<< manager->lastError().message();
67         }
68     }
69     else{
70         qDebug() << "Account already exists. No need to create again";
71     }
72     return vicarAccount;
73 }
74
75 void HarmattanAccountUtility::removeAccount(){
76   Account *vicarAccount = getAccount();
77   if (vicarAccount != NULL && vicarAccount != 0){
78       vicarAccount->remove();
79       vicarAccount->sync();
80       qDebug() << "Account deleted";
81       delete vicarAccount;
82   }
83 }
84
85 void HarmattanAccountUtility::verifyAccount(){
86     Account *vicarAccount = getAccount();
87     if (vicarAccount != NULL && vicarAccount != 0){
88         Service *vicarService = manager->service(SERVICE_NAME);
89         vicarAccount->selectService(vicarService);
90         QStringList keysList = vicarAccount->allKeys();
91         qDebug() << keysList;
92         delete vicarAccount;
93     }
94 }
95
96 void HarmattanAccountUtility::errorOccurred(Accounts::Error error){
97     qDebug() << "Error is "<< error.message();
98 }
99
100 #endif //defined(Q_WS_MAEMO_6)