[gnome-online-accounts] provider: Add provider groups
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-online-accounts] provider: Add provider groups
- Date: Tue, 13 Nov 2012 11:03:32 +0000 (UTC)
commit 27b3a9c4197a669dbc98d2abdd99c9073438e18a
Author: Debarshi Ray <debarshir gnome org>
Date: Sat Nov 10 20:11:03 2012 +0100
provider: Add provider groups
Providers should implement the get_provider_group pure virtual method
and return a GoaProviderGroup. This can be used to organize the
providers as shown in:
https://live.gnome.org/Design/SystemSettings/OnlineAccounts
doc/goa-sections.txt | 2 ++
src/goabackend/goabackendenums.h | 31 +++++++++++++++++++++++++++++--
src/goabackend/goaprovider.c | 22 ++++++++++++++++++++++
src/goabackend/goaprovider.h | 5 +++++
4 files changed, 58 insertions(+), 2 deletions(-)
---
diff --git a/doc/goa-sections.txt b/doc/goa-sections.txt
index 02be53d..82564fd 100644
--- a/doc/goa-sections.txt
+++ b/doc/goa-sections.txt
@@ -407,9 +407,11 @@ GOA_CHECK_VERSION
<FILE>goaprovider</FILE>
GoaProvider
GoaProviderClass
+GoaProviderGroup
goa_provider_get_provider_type
goa_provider_get_provider_name
goa_provider_get_provider_icon
+goa_provider_get_provider_group
goa_provider_build_object
goa_provider_add_account
goa_provider_refresh_account
diff --git a/src/goabackend/goabackendenums.h b/src/goabackend/goabackendenums.h
index 6ac607d..509a03b 100644
--- a/src/goabackend/goabackendenums.h
+++ b/src/goabackend/goabackendenums.h
@@ -1,6 +1,6 @@
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
/*
- * Copyright (C) 2011 Red Hat, Inc.
+ * Copyright (C) 2011, 2012 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -17,7 +17,8 @@
* Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
- * Author: David Zeuthen <davidz redhat com>
+ * Authors: David Zeuthen <davidz redhat com>
+ * Debarshi Ray <debarshir gnome org>
*/
#if !defined (__GOA_BACKEND_INSIDE_GOA_BACKEND_H__) && !defined (GOA_BACKEND_COMPILATION)
@@ -50,6 +51,32 @@ typedef enum
GOA_LOG_LEVEL_ERROR
} GoaLogLevel;
+/**
+ * GoaProviderGroup:
+ * @GOA_PROVIDER_GROUP_BRANDED: Providers with a well-known brand. For
+ * example, Google and Facebook.
+ * @GOA_PROVIDER_GROUP_CONTACTS: Providers that offer address book services.
+ * For example, CardDAV.
+ * @GOA_PROVIDER_GROUP_MAIL: Providers that offer email-like messaging
+ * services. For example, IMAP and SMTP.
+ * @GOA_PROVIDER_GROUP_TICKETING: Providers with ticketing
+ * capabilities. For example, Kerberos.
+ * @GOA_PROVIDER_GROUP_INVALID: Used for error handling. No provider
+ * should belong to this group.
+ *
+ * An enum for specifying which group a provider belongs to. This is
+ * can be used to organize the providers while displaying them in an
+ * user interface.
+ */
+typedef enum
+{
+ GOA_PROVIDER_GROUP_BRANDED,
+ GOA_PROVIDER_GROUP_CONTACTS,
+ GOA_PROVIDER_GROUP_MAIL,
+ GOA_PROVIDER_GROUP_TICKETING,
+ GOA_PROVIDER_GROUP_INVALID
+} GoaProviderGroup;
+
G_END_DECLS
#endif /* __GOA_BACKEND_ENUMS_H__ */
diff --git a/src/goabackend/goaprovider.c b/src/goabackend/goaprovider.c
index a2dd02e..3fb837d 100644
--- a/src/goabackend/goaprovider.c
+++ b/src/goabackend/goaprovider.c
@@ -170,6 +170,28 @@ goa_provider_get_provider_icon_default (GoaProvider *provider,
return ret;
}
+/**
+ * goa_provider_get_provider_group:
+ * @provider: A #GoaProvider.
+ *
+ * Gets the group to which @provider belongs that is suitable for
+ * organizing the providers while displaying them in an user
+ * interface.
+ *
+ * This is a pure virtual method - a subclass must provide an
+ * implementation.
+ *
+ * Returns: A #GoaProviderGroup.
+ *
+ * Since: 3.8
+ */
+GoaProviderGroup
+goa_provider_get_provider_group (GoaProvider *provider)
+{
+ g_return_val_if_fail (GOA_IS_PROVIDER (provider), GOA_PROVIDER_GROUP_INVALID);
+ return GOA_PROVIDER_GET_CLASS (provider)->get_provider_group (provider);
+}
+
/* ---------------------------------------------------------------------------------------------------- */
/**
diff --git a/src/goabackend/goaprovider.h b/src/goabackend/goaprovider.h
index 52821dd..c96ac4f 100644
--- a/src/goabackend/goaprovider.h
+++ b/src/goabackend/goaprovider.h
@@ -61,6 +61,7 @@ struct _GoaProvider
* @get_provider_type: Virtual function for goa_provider_get_provider_type().
* @get_provider_name: Virtual function for goa_provider_get_provider_name().
* @get_provider_icon: Virtual function for goa_provider_get_provider_icon().
+ * @get_provider_group: Virtual function for goa_provider_get_provider_group().
* @add_account: Virtual function for goa_provider_add_account().
* @refresh_account: Virtual function for goa_provider_refresh_account().
* @build_object: Virtual function for goa_provider_build_object().
@@ -111,6 +112,9 @@ struct _GoaProviderClass
GtkGrid *right);
guint (*get_credentials_generation) (GoaProvider *provider);
+ /* pure virtual */
+ GoaProviderGroup (*get_provider_group) (GoaProvider *provider);
+
/*< private >*/
/* Padding for future expansion */
gpointer goa_reserved[32];
@@ -122,6 +126,7 @@ gchar *goa_provider_get_provider_name (GoaProvider *provid
GoaObject *object);
GIcon *goa_provider_get_provider_icon (GoaProvider *provider,
GoaObject *object);
+GoaProviderGroup goa_provider_get_provider_group (GoaProvider *provider);
GoaObject *goa_provider_add_account (GoaProvider *provider,
GoaClient *client,
GtkDialog *dialog,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]