[gnome-online-accounts] provider: Add provider groups



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]