25 #include "application.h"
30 #include <libaccounts-glib/ag-manager.h>
31 #include <libaccounts-glib/ag-account.h>
92 class Manager::Private
106 void init(
Manager *q, AgManager *manager);
109 AgManager *m_manager;
112 static void on_account_created(
Manager *
self, AgAccountId
id);
113 static void on_account_deleted(
Manager *
self, AgAccountId
id);
114 static void on_account_updated(
Manager *
self, AgAccountId
id);
115 static void on_enabled_event(
Manager *
self, AgAccountId
id);
120 using namespace Accounts;
122 void Manager::Private::init(
Manager *q, AgManager *manager)
124 Q_ASSERT(q_ptr == 0);
125 Q_ASSERT(m_manager == 0);
131 g_signal_connect_swapped
132 (manager,
"account-created",
133 G_CALLBACK(&Private::on_account_created), q);
134 g_signal_connect_swapped
135 (manager,
"account-deleted",
136 G_CALLBACK(&Private::on_account_deleted), q);
137 g_signal_connect_swapped
138 (manager,
"account-updated",
139 G_CALLBACK(&Private::on_account_updated), q);
140 g_signal_connect_swapped
141 (manager,
"enabled-event",
142 G_CALLBACK(&Private::on_enabled_event), q);
144 qWarning() << Q_FUNC_INFO <<
"Initializing with NULL AgManager!";
148 void Manager::Private::on_account_created(
Manager *
self, AgAccountId
id)
150 TRACE() <<
"id =" << id;
152 emit
self->accountCreated(
id);
155 void Manager::Private::on_account_deleted(
Manager *
self, AgAccountId
id)
157 TRACE() <<
"id =" << id;
159 emit
self->accountRemoved(
id);
162 void Manager::Private::on_account_updated(
Manager *
self, AgAccountId
id)
164 TRACE() <<
"id =" << id;
166 emit
self->accountUpdated(
id);
169 void Manager::Private::on_enabled_event(
Manager *
self, AgAccountId
id)
171 TRACE() <<
"id =" << id;
173 emit
self->enabledEvent(
id);
187 AgManager *manager = ag_manager_new();
190 d->init(
this, manager);
192 qWarning() <<
"Manager could not be created. DB is locked";
217 ag_manager_new_for_service_type(serviceType.toUtf8().constData());
220 d->init(
this, manager);
222 qWarning() <<
"Manager could not be created, DB is locked";
235 g_signal_handlers_disconnect_by_func
236 (d->m_manager, (
void *)&Private::on_enabled_event,
this);
237 g_signal_handlers_disconnect_by_func
238 (d->m_manager, (
void *)&Private::on_account_updated,
this);
239 g_signal_handlers_disconnect_by_func
240 (d->m_manager, (
void *)&Private::on_account_deleted,
this);
241 g_signal_handlers_disconnect_by_func
242 (d->m_manager, (
void *)&Private::on_account_created,
this);
243 g_object_unref(d->m_manager);
258 TRACE() <<
"get account id: " << id;
260 GError *error = NULL;
261 AgAccount *
account = ag_manager_load_account(d->m_manager,
id, &error);
263 if (account != NULL) {
264 Q_ASSERT(error == NULL);
266 g_object_unref(account);
269 Q_ASSERT(error != NULL);
270 d->lastError =
Error(error);
289 if (serviceType.isEmpty()) {
290 list = ag_manager_list(d->m_manager);
292 list = ag_manager_list_by_service_type(d->m_manager,
293 serviceType.toUtf8().constData());
297 AccountIdList idList;
300 for (iter = list; iter; iter = g_list_next(iter))
302 idList.append((AccountId)GPOINTER_TO_INT(iter->data));
305 ag_manager_list_free(list);
323 if (serviceType.isEmpty()) {
324 list = ag_manager_list_enabled(d->m_manager);
326 list = ag_manager_list_enabled_by_service_type(d->m_manager,
327 serviceType.toUtf8().constData());
331 AccountIdList idList;
334 for (iter = list; iter; iter = g_list_next(iter))
336 idList.append((AccountId)GPOINTER_TO_INT(iter->data));
339 ag_manager_list_free(list);
352 TRACE() << providerName;
355 ag_manager_create_account(d->m_manager,
356 providerName.toUtf8().constData());
358 if (account != NULL) {
361 g_object_unref(account);
376 TRACE() << serviceName;
378 ag_manager_get_service(d->m_manager,
379 serviceName.toUtf8().constData());
380 return Service(service, StealReference);
398 if (serviceType.isEmpty()) {
399 list = ag_manager_list_services(d->m_manager);
401 list = ag_manager_list_services_by_type(d->m_manager,
402 serviceType.toUtf8().constData());
404 TRACE() <<
"found:" << g_list_length(list);
407 ServiceList servList;
410 for (iter = list; iter; iter = g_list_next(iter))
412 AgService *
service = (AgService*)iter->data;
413 servList.append(
Service(service, StealReference));
429 TRACE() << providerName;
432 provider = ag_manager_get_provider(d->m_manager,
433 providerName.toUtf8().constData());
434 return Provider(provider, StealReference);
446 list = ag_manager_list_providers(d->m_manager);
449 ProviderList provList;
452 for (iter = list; iter; iter = g_list_next(iter))
454 AgProvider *
provider = (AgProvider*)iter->data;
455 provList.append(
Provider(provider, StealReference));
472 type = ag_manager_load_service_type(d->m_manager,
473 name.toUtf8().constData());
486 QByteArray ba = applicationName.toUtf8();
488 ag_manager_get_application(d->m_manager, ba.constData());
501 GList *applications, *list;
503 applications = ag_manager_list_applications_by_service(d->m_manager,
505 for (list = applications; list != NULL; list = list->next) {
506 AgApplication *
application = (AgApplication *)list->data;
509 g_list_free (applications);
520 return UTF8(ag_manager_get_service_type (d->m_manager));
534 ag_manager_set_db_timeout(d->m_manager, timeout);
543 return ag_manager_get_db_timeout(d->m_manager);
552 ag_manager_set_abort_on_db_timeout(d->m_manager, abort);
561 return ag_manager_get_abort_on_db_timeout(d->m_manager);