25 #include "application.h" 28 #include "manager_p.h" 30 #include <libaccounts-glib/ag-account.h> 95 void Manager::Private::init(
Manager *q, AgManager *manager)
98 Q_ASSERT(m_manager == 0);
104 g_signal_connect_swapped
105 (manager,
"account-created",
106 G_CALLBACK(&Private::on_account_created), q);
107 g_signal_connect_swapped
108 (manager,
"account-deleted",
109 G_CALLBACK(&Private::on_account_deleted), q);
110 g_signal_connect_swapped
111 (manager,
"account-updated",
112 G_CALLBACK(&Private::on_account_updated), q);
113 g_signal_connect_swapped
114 (manager,
"enabled-event",
115 G_CALLBACK(&Private::on_enabled_event), q);
117 qWarning() << Q_FUNC_INFO <<
"Initializing with NULL AgManager!";
121 void Manager::Private::on_account_created(
Manager *
self, AgAccountId
id)
123 Q_EMIT
self->accountCreated(
id);
126 void Manager::Private::on_account_deleted(
Manager *
self, AgAccountId
id)
128 Q_EMIT
self->accountRemoved(
id);
131 void Manager::Private::on_account_updated(
Manager *
self, AgAccountId
id)
133 Q_EMIT
self->accountUpdated(
id);
136 void Manager::Private::on_enabled_event(
Manager *
self, AgAccountId
id)
138 Q_EMIT
self->enabledEvent(
id);
150 AgManager *manager = ag_manager_new();
153 d->init(
this, manager);
155 qWarning() <<
"Manager could not be created. DB is locked";
178 ag_manager_new_for_service_type(serviceType.toUtf8().constData());
181 d->init(
this, manager);
183 qWarning() <<
"Manager could not be created, DB is locked";
200 GError *error = NULL;
202 (AgManager *)g_initable_new(AG_TYPE_MANAGER, NULL, &error,
203 "use-dbus", !disableNotifications,
205 if (Q_LIKELY(manager)) {
206 d->init(
this, manager);
208 qWarning() <<
"Manager could not be created." << error->message;
209 d->lastError =
Error(error);
219 g_signal_handlers_disconnect_by_func
220 (d->m_manager, (
void *)&Private::on_enabled_event,
this);
221 g_signal_handlers_disconnect_by_func
222 (d->m_manager, (
void *)&Private::on_account_updated,
this);
223 g_signal_handlers_disconnect_by_func
224 (d->m_manager, (
void *)&Private::on_account_deleted,
this);
225 g_signal_handlers_disconnect_by_func
226 (d->m_manager, (
void *)&Private::on_account_created,
this);
227 g_object_unref(d->m_manager);
247 Account *
account = d->m_accounts.value(
id, 0);
250 account = Account::fromId(const_cast<Manager*>(
this),
id,
251 const_cast<Manager*>(
this));
270 if (serviceType.isEmpty()) {
271 list = ag_manager_list(d->m_manager);
273 list = ag_manager_list_by_service_type(d->m_manager,
274 serviceType.toUtf8().constData());
278 AccountIdList idList;
281 for (iter = list; iter; iter = g_list_next(iter))
283 idList.append((AccountId)GPOINTER_TO_INT(iter->data));
286 ag_manager_list_free(list);
304 if (serviceType.isEmpty()) {
305 list = ag_manager_list_enabled(d->m_manager);
307 list = ag_manager_list_enabled_by_service_type(d->m_manager,
308 serviceType.toUtf8().constData());
312 AccountIdList idList;
315 for (iter = list; iter; iter = g_list_next(iter))
317 idList.append((AccountId)GPOINTER_TO_INT(iter->data));
320 ag_manager_list_free(list);
333 return new Account(
this, providerName,
this);
345 ag_manager_get_service(d->m_manager,
346 serviceName.toUtf8().constData());
347 return Service(service, StealReference);
364 if (serviceType.isEmpty()) {
365 list = ag_manager_list_services(d->m_manager);
367 list = ag_manager_list_services_by_type(d->m_manager,
368 serviceType.toUtf8().constData());
372 ServiceList servList;
375 for (iter = list; iter; iter = g_list_next(iter))
377 AgService *
service = (AgService*)iter->data;
378 servList.append(
Service(service, StealReference));
396 provider = ag_manager_get_provider(d->m_manager,
397 providerName.toUtf8().constData());
398 return Provider(provider, StealReference);
410 list = ag_manager_list_providers(d->m_manager);
413 ProviderList provList;
416 for (iter = list; iter; iter = g_list_next(iter))
418 AgProvider *
provider = (AgProvider*)iter->data;
419 provList.append(
Provider(provider, StealReference));
436 type = ag_manager_load_service_type(d->m_manager,
437 name.toUtf8().constData());
450 QByteArray ba = applicationName.toUtf8();
452 ag_manager_get_application(d->m_manager, ba.constData());
465 GList *applications, *list;
467 applications = ag_manager_list_applications_by_service(d->m_manager,
469 for (list = applications; list != NULL; list = list->next) {
470 AgApplication *
application = (AgApplication *)list->data;
473 g_list_free (applications);
484 return UTF8(ag_manager_get_service_type (d->m_manager));
498 ag_manager_set_db_timeout(d->m_manager, timeout);
507 return ag_manager_get_db_timeout(d->m_manager);
516 ag_manager_set_abort_on_db_timeout(d->m_manager, abort);
525 return ag_manager_get_abort_on_db_timeout(d->m_manager);
533 gboolean useDBus =
true;
534 g_object_get(d->m_manager,
535 "use-dbus", &useDBus,
Account * createAccount(const QString &providerName)
Creates a new account.
Account * account(const AccountId &id) const
Loads an account from the database.
Manager of accounts, services and providers.
void setAbortOnTimeout(bool abort)
Sets whether to abort the application when a database timeout occurs.
ApplicationList applicationList(const Service &service) const
List the registered applications which support the given service.
Representation of an account provider.
bool abortOnTimeout() const
AccountIdList accountList(const QString &serviceType=QString::null) const
Lists the accounts which support the requested service.
Representation of an account service type.
Representation of an account service.
QString serviceType() const
Gets the service type if given in manager constructor.
AccountIdList accountListEnabled(const QString &serviceType=QString::null) const
Lists the enabled accounts which support the requested service that also must be enabled.
void setTimeout(quint32 timeout)
Sets the timeout for database operations.
ServiceList serviceList(const QString &serviceType=QString::null) const
Gets the service list.
Base object definition for accounts error handling.
Service service(const QString &serviceName) const
Gets an object representing a service.
Manager(QObject *parent=0)
Constructor.
Provider provider(const QString &providerName) const
Gets an object representing a provider.
Information on the client applications of libaccounts.
Error lastError() const
Gets the last error.
quint32 timeout()
Gets the database timeout.
Application application(const QString &applicationName) const
Get an object representing an application.
ProviderList providerList() const
Gets a provider list.