Add flags to the Provider and code for mobile mode in settings.
authorSrinivasa Ragavan <sragavan@gnome.org>
Tue, 10 Jan 2012 11:21:30 +0000 (16:51 +0530)
committerSrinivasa Ragavan <sragavan@gnome.org>
Thu, 2 Feb 2012 09:26:40 +0000 (14:56 +0530)
camel/providers/imapx/camel-imapx-provider.c
camel/providers/imapx/camel-imapx-settings.c
camel/providers/imapx/camel-imapx-settings.h

index 116ff13..6179e84 100644 (file)
@@ -98,7 +98,10 @@ static CamelProvider imapx_provider = {
        "mail",
 
        CAMEL_PROVIDER_IS_REMOTE | CAMEL_PROVIDER_IS_SOURCE |
-       CAMEL_PROVIDER_IS_STORAGE | CAMEL_PROVIDER_SUPPORTS_SSL,
+       CAMEL_PROVIDER_IS_STORAGE | CAMEL_PROVIDER_SUPPORTS_SSL|
+       CAMEL_PROVIDER_SUPPORTS_MOBILE_DEVICES | 
+       CAMEL_PROVIDER_SUPPORTS_BATCH_FETCH |
+       CAMEL_PROVIDER_SUPPORTS_PURGE_MESSAGE_CACHE,
 
        CAMEL_URL_NEED_USER | CAMEL_URL_NEED_HOST | CAMEL_URL_ALLOW_AUTH,
 
index 0ffdc46..2b4c333 100644 (file)
@@ -38,6 +38,7 @@ struct _CamelIMAPXSettingsPrivate {
        gboolean filter_junk;
        gboolean filter_junk_inbox;
        gboolean use_idle;
+       gboolean use_mobile_mode;
        gboolean use_namespace;
        gboolean use_qresync;
        gboolean use_shell_command;
@@ -57,6 +58,7 @@ enum {
        PROP_FILTER_JUNK,
        PROP_FILTER_JUNK_INBOX,
        PROP_HOST,
+       PROP_MOBILE_MODE,
        PROP_NAMESPACE,
        PROP_PORT,
        PROP_SECURITY_METHOD,
@@ -137,6 +139,12 @@ imapx_settings_set_property (GObject *object,
                                g_value_get_string (value));
                        return;
 
+               case PROP_MOBILE_MODE:
+                       camel_imapx_settings_set_mobile_mode (
+                               CAMEL_IMAPX_SETTINGS (object),
+                               g_value_get_boolean (value));
+                       return;
+
                case PROP_NAMESPACE:
                        camel_imapx_settings_set_namespace (
                                CAMEL_IMAPX_SETTINGS (object),
@@ -271,6 +279,13 @@ imapx_settings_get_property (GObject *object,
                                CAMEL_NETWORK_SETTINGS (object)));
                        return;
 
+               case PROP_MOBILE_MODE:
+                       g_value_set_boolean (
+                               value,
+                               camel_imapx_settings_get_mobile_mode (
+                               CAMEL_IMAPX_SETTINGS (object)));
+                       return;
+
                case PROP_NAMESPACE:
                        g_value_take_string (
                                value,
@@ -468,6 +483,18 @@ camel_imapx_settings_class_init (CamelIMAPXSettingsClass *class)
                        G_PARAM_CONSTRUCT |
                        G_PARAM_STATIC_STRINGS));
 
+       g_object_class_install_property (
+               object_class,
+               PROP_MOBILE_MODE,
+               g_param_spec_boolean (
+                       "mobile-mode",
+                       "Mobile Mode",
+                       "Mobile mode which adjusts the IMAPX for Mobile clients",
+                       FALSE,
+                       G_PARAM_READWRITE |
+                       G_PARAM_CONSTRUCT |
+                       G_PARAM_STATIC_STRINGS));
+
        /* Inherited from CamelNetworkSettings. */
        g_object_class_override_property (
                object_class,
@@ -877,6 +904,44 @@ camel_imapx_settings_set_filter_junk_inbox (CamelIMAPXSettings *settings,
 }
 
 /**
+ * camel_imapx_settings_get_mobile_mode:
+ * @settings: a #CamelIMAPXSettings
+ *
+ * Returns whether the backend is operating in mobile mode.
+ *
+ * Since: 3.2
+ **/
+gboolean
+camel_imapx_settings_get_mobile_mode (CamelIMAPXSettings *settings)
+{
+       g_return_val_if_fail (
+               CAMEL_IS_IMAPX_SETTINGS (settings),
+               CAMEL_SORT_ASCENDING);
+
+       return settings->priv->use_mobile_mode;
+}
+
+/**
+ * camel_imapx_settings_set_mobile_mode:
+ * @settings: a #CamelIMAPXSettings
+ * @mobile_mode: whether to operate in mobile mode.
+ *
+ * Sets the mode of operation as mobile or not for the backend.
+ *
+ * Since: 3.2
+ **/
+void
+camel_imapx_settings_set_mobile_mode (CamelIMAPXSettings *settings,
+                                      gboolean mobile_mode)
+{
+       g_return_if_fail (CAMEL_IS_IMAPX_SETTINGS (settings));
+
+       settings->priv->use_mobile_mode = mobile_mode;
+
+       g_object_notify (G_OBJECT (settings), "mobile-mode");
+}
+
+/**
  * camel_imapx_settings_get_namespace:
  * @settings: a #CamelIMAPXSettings
  *
index 54f810c..bffa560 100644 (file)
@@ -91,6 +91,11 @@ gboolean     camel_imapx_settings_get_filter_junk_inbox
 void           camel_imapx_settings_set_filter_junk_inbox
                                                (CamelIMAPXSettings *settings,
                                                 gboolean filter_junk_inbox);
+gboolean       camel_imapx_settings_get_mobile_mode
+                                               (CamelIMAPXSettings *settings);
+void           camel_imapx_settings_set_mobile_mode
+                                               (CamelIMAPXSettings *settings,
+                                                gboolean mobile);
 const gchar *  camel_imapx_settings_get_namespace
                                                (CamelIMAPXSettings *settings);
 gchar *                camel_imapx_settings_dup_namespace