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