first release
[groupsms] / sms / contactinterface.cpp
1 #include "contactinterface.h"
2 #include "xmlcontroler.h"
3 #include "xmlstring.h"
4
5 ContactInterface* ContactInterface::instance = 0;
6
7 ContactInterface* ContactInterface::getInstance()
8 {
9     if( !instance )
10     {
11         instance = new ContactInterface();
12     }
13     return instance;
14 }
15
16 ContactInterface::ContactInterface(QObject *parent) :
17     QObject(parent)
18 {
19     instance = this;
20
21     initEbook();
22 }
23
24 ContactInterface::~ContactInterface()
25 {
26     for( int i = 0; i < all_contacts_items_db.size(); i++ )
27     {
28         delete all_contacts_items_db.at(i);
29     }
30     all_contacts_items_db.clear();
31 }
32
33 void ContactInterface::setItemObserver(ItemObserver *observer)
34 {
35     XmlControler::getInstance()->setItemObserver( observer );
36 }
37
38 void ContactInterface::setItemSelectObserver( ItemSelectObserver *observer )
39 {
40     XmlControler::getInstance()->setItemSelectObserver( observer );
41 }
42
43 bool ContactInterface::initEbook()
44 {
45     //qDebug() << "ContactInterface::initEbook(), Entry";
46
47 #ifdef ONLY_FOR_EBOOK
48     GError *error = NULL;
49     roster = osso_abook_aggregator_get_default(&error);
50     if( error )
51     {
52         //qDebug() << "Couldn't open roster %s\n" << error->message;
53         g_error_free( error );
54     }
55     osso_abook_roster_start(roster);
56
57     //qDebug() << "osso_abook_roster_start";
58
59     osso_abook_waitable_run(OSSO_ABOOK_WAITABLE(roster), g_main_context_default(), &error);
60
61     if (!osso_abook_waitable_is_ready(OSSO_ABOOK_WAITABLE(roster), &error) )
62         g_critical("osso_abook_waitable_is_ready: %s\n", error->message);
63
64     //* for test
65 //    OssoABookAggregator *_aggr;
66 //    GList *list, *c;
67 //    GError *err;
68
69 //    osso_abook_waitable_run(OSSO_ABOOK_WAITABLE(roster), g_main_context_default(), &err);
70
71 //    if (! osso_abook_waitable_is_ready(OSSO_ABOOK_WAITABLE(roster), &err))
72 //        g_critical("osso_abook_waitable_is_ready: %s\n", err->message);
73
74 //    _aggr = OSSO_ABOOK_AGGREGATOR(roster);
75 //    list = osso_abook_aggregator_list_master_contacts(_aggr);
76
77 //    printf("count = %d\n",  g_list_length(list)); // list is not empty !
78
79 //    g_list_free(list);
80     //* test end
81 #endif
82     return true;
83 }
84
85 bool ContactInterface::updateContactsFromEbookToXml()
86 {
87     removeGroup( STR_XML_ALLCONTACTS );
88     getAllContacts();
89     addContactToGroup( all_contacts_items_db, STR_XML_ALLCONTACTS );
90     return true;
91 }
92
93 ItemListPtr ContactInterface::getAllContacts()
94 {
95     //qDebug() << "ContactInterface::getAllContacts() from EBook, Entry";
96
97 #ifdef ONLY_FOR_EBOOK
98     GList *list = NULL;
99     GList *it = NULL;
100     EContact *contact = NULL;
101     OssoABookAggregator *aggregator = OSSO_ABOOK_AGGREGATOR(roster);
102
103     list = osso_abook_aggregator_list_master_contacts( aggregator );
104
105     qDebug() << "get list from EBook";
106     //qDebug() << "list length is :" << g_list_length(list);
107
108     QString str;
109
110     for( it = list; it; it = it->next )
111     {
112         //qDebug() << "into list loop";
113
114         contact = (EContact *)it->data;
115         Item *item = new Item();
116
117         str = QString::fromLocal8Bit( (char*)e_contact_get(contact, E_CONTACT_FULL_NAME) );
118         item->full_name = str;
119         qDebug() << "fullname is : " << item->full_name;
120
121         str = QString::fromLocal8Bit( (char*)e_contact_get(contact, E_CONTACT_PHONE_MOBILE) );
122         item->mobile_number = str;
123         qDebug() << "mobile_number is : " << item->mobile_number;
124
125         item->group_owner =  "";
126         item->user_pic_uri = ":/images/male.png";
127
128         item->uid = QString::fromLocal8Bit( (char*)e_contact_get(contact, E_CONTACT_UID) );
129         qDebug() << "uid is : " << item->uid;
130
131         all_contacts_items_db.append( item );
132     }
133
134     g_list_free( list );
135 #endif
136     return all_contacts_items_db;
137 }
138
139 void ContactInterface::getAllContactsFromXml()
140 {
141     //qDebug() << "ContactInterface::getAllContactsFromXml(), Entry";
142
143     XmlControler::getInstance()->getAllContactItems();
144 }
145
146 void ContactInterface::getAllContactsFromXml(const QString &groupname)
147 {
148     //qDebug() << "ContactInterface::getAllContactsFromXml(const QString &groupname), Entry";
149
150     XmlControler::getInstance()->getAllContactItemsFromGroup(groupname);
151 }
152
153 QStringList ContactInterface::getAllGroupNames()
154 {
155     //qDebug() << "ContactInterface::getAllGroupNames(), Entry";
156     return XmlControler::getInstance()->getAllGroupNames();
157 }
158
159 bool ContactInterface::createGroup(const QString &groupname)
160 {
161     return XmlControler::getInstance()->createGroup(groupname);
162 }
163
164 bool ContactInterface::removeGroup(const QString &groupname)
165 {
166     return XmlControler::getInstance()->removeGroup( groupname );
167 }
168
169 bool ContactInterface::addContactToGroup(ItemListPtr items, const QString &groupname)
170 {
171     return XmlControler::getInstance()->createContact( groupname, items );
172 }
173
174 bool ContactInterface::removeContactToGroup( ItemListPtr items, const QString &groupname )
175 {
176     return XmlControler::getInstance()->removeContactFromGroup( items, groupname );
177 }
178
179 bool ContactInterface::removeContactToGroup( ItemListPtr items )
180 {
181     return XmlControler::getInstance()->removeContactFromGroup( items );
182 }
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204