CamelService: Add a "display-name" property.
authorMatthew Barnes <mbarnes@redhat.com>
Thu, 18 Aug 2011 00:49:02 +0000 (20:49 -0400)
committerMatthew Barnes <mbarnes@redhat.com>
Thu, 18 Aug 2011 00:51:01 +0000 (20:51 -0400)
Mostly as a convenience to clients.  Camel itself doesn't use this for
anything at present, although I suppose it could come in handy for some
error messages or user prompts.

camel/camel-service.c
camel/camel-service.h
docs/reference/camel/camel-sections.txt
docs/reference/camel/tmpl/camel-service.sgml

index 9609e97..03b03b8 100644 (file)
@@ -58,6 +58,7 @@ struct _CamelServicePrivate {
        CamelProvider *provider;
        CamelURL *url;
 
+       gchar *display_name;
        gchar *user_data_dir;
        gchar *uid;
 
@@ -74,6 +75,7 @@ struct _AsyncContext {
 
 enum {
        PROP_0,
+       PROP_DISPLAY_NAME,
        PROP_PROVIDER,
        PROP_SESSION,
        PROP_SETTINGS,
@@ -229,6 +231,12 @@ service_set_property (GObject *object,
                       GParamSpec *pspec)
 {
        switch (property_id) {
+               case PROP_DISPLAY_NAME:
+                       camel_service_set_display_name (
+                               CAMEL_SERVICE (object),
+                               g_value_get_string (value));
+                       return;
+
                case PROP_PROVIDER:
                        service_set_provider (
                                CAMEL_SERVICE (object),
@@ -270,6 +278,12 @@ service_get_property (GObject *object,
                       GParamSpec *pspec)
 {
        switch (property_id) {
+               case PROP_DISPLAY_NAME:
+                       g_value_set_string (
+                               value, camel_service_get_display_name (
+                               CAMEL_SERVICE (object)));
+                       return;
+
                case PROP_PROVIDER:
                        g_value_set_pointer (
                                value, camel_service_get_provider (
@@ -340,6 +354,7 @@ service_finalize (GObject *object)
        if (priv->url != NULL)
                camel_url_free (priv->url);
 
+       g_free (priv->display_name);
        g_free (priv->user_data_dir);
        g_free (priv->uid);
 
@@ -580,6 +595,18 @@ camel_service_class_init (CamelServiceClass *class)
 
        g_object_class_install_property (
                object_class,
+               PROP_DISPLAY_NAME,
+               g_param_spec_string (
+                       "display-name",
+                       "Display Name",
+                       "The display name for the service",
+                       NULL,
+                       G_PARAM_READWRITE |
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_STATIC_STRINGS));
+
+       g_object_class_install_property (
+               object_class,
                PROP_PROVIDER,
                g_param_spec_pointer (
                        "provider",
@@ -693,6 +720,58 @@ camel_service_cancel_connect (CamelService *service)
 }
 
 /**
+ * camel_service_get_display_name:
+ * @service: a #CamelService
+ *
+ * Returns the display name for @service, or %NULL if @service has not
+ * been given a display name.  The display name is intended for use in
+ * a user interface and should generally be given a user-defined name.
+ *
+ * Compare this with camel_service_get_name(), which returns a built-in
+ * description of the type of service (IMAP, SMTP, etc.).
+ *
+ * Returns: the display name for @service, or %NULL
+ *
+ * Since: 3.2
+ **/
+const gchar *
+camel_service_get_display_name (CamelService *service)
+{
+       g_return_val_if_fail (CAMEL_IS_SERVICE (service), NULL);
+
+       return service->priv->display_name;
+}
+
+/**
+ * camel_service_set_display_name:
+ * @service: a #CamelService
+ * @display_name: a valid UTF-8 string, or %NULL
+ *
+ * Assigns a UTF-8 display name to @service.  The display name is intended
+ * for use in a user interface and should generally be given a user-defined
+ * name.
+ *
+ * Compare this with camel_service_get_name(), which returns a built-in
+ * description of the type of service (IMAP, SMTP, etc.).
+ *
+ * Since: 3.2
+ **/
+void
+camel_service_set_display_name (CamelService *service,
+                                const gchar *display_name)
+{
+       g_return_if_fail (CAMEL_IS_SERVICE (service));
+
+       if (display_name != NULL)
+               g_return_if_fail (g_utf8_validate (display_name, -1, NULL));
+
+       g_free (service->priv->display_name);
+       service->priv->display_name = g_strdup (display_name);
+
+       g_object_notify (G_OBJECT (service), "display-name");
+}
+
+/**
  * camel_service_get_user_data_dir:
  * @service: a #CamelService
  *
index 4599a81..a9843e3 100644 (file)
@@ -145,6 +145,9 @@ typedef struct {
 
 GType          camel_service_get_type          (void);
 GQuark         camel_service_error_quark       (void) G_GNUC_CONST;
+const gchar *  camel_service_get_display_name  (CamelService *service);
+void           camel_service_set_display_name  (CamelService *service,
+                                                const gchar *display_name);
 const gchar *  camel_service_get_user_data_dir (CamelService *service);
 gchar *                camel_service_get_name          (CamelService *service,
                                                 gboolean brief);
index 7522fc7..7f86668 100644 (file)
@@ -1952,6 +1952,8 @@ CAMEL_SERVICE_ERROR
 CamelServiceError
 CamelServiceConnectionStatus
 CamelServiceAuthType
+camel_service_get_display_name
+camel_service_set_display_name
 camel_service_get_user_data_dir
 camel_service_get_name
 camel_service_get_provider
index 2161313..db5c5c7 100644 (file)
@@ -26,6 +26,11 @@ CamelService
 </para>
 
 
+<!-- ##### ARG CamelService:display-name ##### -->
+<para>
+
+</para>
+
 <!-- ##### ARG CamelService:provider ##### -->
 <para>
 
@@ -89,6 +94,24 @@ CamelService
 @authproto: 
 @need_password: 
 
+<!-- ##### FUNCTION camel_service_get_display_name ##### -->
+<para>
+
+</para>
+
+@service: 
+@Returns: 
+
+
+<!-- ##### FUNCTION camel_service_set_display_name ##### -->
+<para>
+
+</para>
+
+@service: 
+@display_name: 
+
+
 <!-- ##### FUNCTION camel_service_get_user_data_dir ##### -->
 <para>