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 Q_EMIT
self->accountCreated(
id);
153 void Manager::Private::on_account_deleted(
Manager *
self, AgAccountId
id)
155 Q_EMIT
self->accountRemoved(
id);
158 void Manager::Private::on_account_updated(
Manager *
self, AgAccountId
id)
160 Q_EMIT
self->accountUpdated(
id);
163 void Manager::Private::on_enabled_event(
Manager *
self, AgAccountId
id)
165 Q_EMIT
self->enabledEvent(
id);
179 AgManager *manager = ag_manager_new();
182 d->init(
this, manager);
184 qWarning() <<
"Manager could not be created. DB is locked";
209 ag_manager_new_for_service_type(serviceType.toUtf8().constData());
212 d->init(
this, manager);
214 qWarning() <<
"Manager could not be created, DB is locked";
225 g_signal_handlers_disconnect_by_func
226 (d->m_manager, (
void *)&Private::on_enabled_event,
this);
227 g_signal_handlers_disconnect_by_func
228 (d->m_manager, (
void *)&Private::on_account_updated,
this);
229 g_signal_handlers_disconnect_by_func
230 (d->m_manager, (
void *)&Private::on_account_deleted,
this);
231 g_signal_handlers_disconnect_by_func
232 (d->m_manager, (
void *)&Private::on_account_created,
this);
233 g_object_unref(d->m_manager);
248 GError *error = NULL;
249 AgAccount *
account = ag_manager_load_account(d->m_manager,
id, &error);
251 if (account != NULL) {
252 Q_ASSERT(error == NULL);
254 g_object_unref(account);
257 Q_ASSERT(error != NULL);
258 d->lastError =
Error(error);
277 if (serviceType.isEmpty()) {
278 list = ag_manager_list(d->m_manager);
280 list = ag_manager_list_by_service_type(d->m_manager,
281 serviceType.toUtf8().constData());
285 AccountIdList idList;
288 for (iter = list; iter; iter = g_list_next(iter))
290 idList.append((AccountId)GPOINTER_TO_INT(iter->data));
293 ag_manager_list_free(list);
311 if (serviceType.isEmpty()) {
312 list = ag_manager_list_enabled(d->m_manager);
314 list = ag_manager_list_enabled_by_service_type(d->m_manager,
315 serviceType.toUtf8().constData());
319 AccountIdList idList;
322 for (iter = list; iter; iter = g_list_next(iter))
324 idList.append((AccountId)GPOINTER_TO_INT(iter->data));
327 ag_manager_list_free(list);
341 ag_manager_create_account(d->m_manager,
342 providerName.toUtf8().constData());
344 if (account != NULL) {
347 g_object_unref(account);
363 ag_manager_get_service(d->m_manager,
364 serviceName.toUtf8().constData());
365 return Service(service, StealReference);
382 if (serviceType.isEmpty()) {
383 list = ag_manager_list_services(d->m_manager);
385 list = ag_manager_list_services_by_type(d->m_manager,
386 serviceType.toUtf8().constData());
390 ServiceList servList;
393 for (iter = list; iter; iter = g_list_next(iter))
395 AgService *
service = (AgService*)iter->data;
396 servList.append(
Service(service, StealReference));
414 provider = ag_manager_get_provider(d->m_manager,
415 providerName.toUtf8().constData());
416 return Provider(provider, StealReference);
428 list = ag_manager_list_providers(d->m_manager);
431 ProviderList provList;
434 for (iter = list; iter; iter = g_list_next(iter))
436 AgProvider *
provider = (AgProvider*)iter->data;
437 provList.append(
Provider(provider, StealReference));
454 type = ag_manager_load_service_type(d->m_manager,
455 name.toUtf8().constData());
468 QByteArray ba = applicationName.toUtf8();
470 ag_manager_get_application(d->m_manager, ba.constData());
483 GList *applications, *list;
485 applications = ag_manager_list_applications_by_service(d->m_manager,
487 for (list = applications; list != NULL; list = list->next) {
488 AgApplication *
application = (AgApplication *)list->data;
491 g_list_free (applications);
502 return UTF8(ag_manager_get_service_type (d->m_manager));
516 ag_manager_set_db_timeout(d->m_manager, timeout);
525 return ag_manager_get_db_timeout(d->m_manager);
534 ag_manager_set_abort_on_db_timeout(d->m_manager, abort);
543 return ag_manager_get_abort_on_db_timeout(d->m_manager);