Re: [evolution-patches] Exchange Connector - patch for offline settings



Thanks.

I'll commit this patch without "exchange-offline-listener.c"
change.

-Sushma.

Sarfraaz Ahmed wrote:

Looks good.

-- Sarfraaz

Sushma Rai wrote:

Hi,

Attached is the patch fixes problems with account level offline
settings.
Please review.

Thanks,
Sushma.
------------------------------------------------------------------------

Index: storage/exchange-account.h
===================================================================
RCS file: /cvs/gnome/evolution-exchange/storage/exchange-account.h,v
retrieving revision 1.9
diff -u -p -r1.9 exchange-account.h
--- storage/exchange-account.h    4 Feb 2005 11:29:45 -0000    1.9
+++ storage/exchange-account.h    18 Feb 2005 11:35:34 -0000
@@ -86,6 +86,7 @@ gboolean         exchange_account_set_online (

gboolean         exchange_account_is_offline (ExchangeAccount *account);

+gboolean exchange_account_is_offline_sync_set (ExchangeAccount *account);


typedef enum {
Index: storage/exchange-account.c
===================================================================
RCS file: /cvs/gnome/evolution-exchange/storage/exchange-account.c,v
retrieving revision 1.31
diff -u -p -r1.31 exchange-account.c
--- storage/exchange-account.c    9 Feb 2005 11:05:23 -0000    1.31
+++ storage/exchange-account.c    18 Feb 2005 11:36:01 -0000
@@ -1495,6 +1495,21 @@ exchange_account_connect (ExchangeAccoun
}

/**
+ * exchange_account_is_offline_sync_set:
+ * @account: an #ExchangeAccount
+ *
+ * Return value: TRUE if offline_sync is set for @account and FALSE if not.
+ */
+gboolean
+exchange_account_is_offline_sync_set (ExchangeAccount *account)
+{
+    if (!strcmp(account->priv->offline_sync, "1"))
+        return TRUE;
+    else
+        return FALSE;
+}
+
+/**
 * exchange_account_get_context:
 * @account: an #ExchangeAccount
 *
@@ -1785,10 +1800,10 @@ exchange_account_new (EAccountList *acco
account->priv->passwd_exp_warn_period = atoi (passwd_exp_warn_period);

    offline_sync = e2k_uri_get_param (uri, "offline_sync");
-    if (!offline_sync || !*offline_sync)
+ if (!offline_sync) account->priv->offline_sync = g_strdup ("0");
-    else
-        account->priv->offline_sync = g_strdup (offline_sync);
+    else +        account->priv->offline_sync = g_strdup ("1");

    owa_path = e2k_uri_get_param (uri, "owa_path");
    if (!owa_path || !*owa_path)
@@ -1800,6 +1815,8 @@ exchange_account_new (EAccountList *acco
    if (!pf_server || !*pf_server)
        pf_server = uri->host;

+ /* Now we can set protocol reading owa_url, instead of having + use_ssl parameter */
    proto = e2k_uri_get_param (uri, "use_ssl") ? "https" : "http";

    owa_url = e2k_uri_get_param (uri, "owa_url");
Index: storage/exchange-config-listener.c
===================================================================
RCS file: /cvs/gnome/evolution-exchange/storage/exchange-config-listener.c,v
retrieving revision 1.13
diff -u -p -r1.13 exchange-config-listener.c
--- storage/exchange-config-listener.c 11 Feb 2005 10:15:46 -0000 1.13
+++ storage/exchange-config-listener.c    18 Feb 2005 11:36:45 -0000
@@ -232,6 +232,7 @@ add_esource (ExchangeAccount *account, GSList *ids, *temp_ids;
    GConfClient *client;
    gboolean is_contacts_folder = TRUE;
+    const char *offline = NULL;

    client = gconf_client_get_default ();

@@ -256,6 +257,14 @@ add_esource (ExchangeAccount *account, physical_uri);
        else
            source = e_source_new (folder_name, relative_uri);
+
+        if (exchange_account_is_offline_sync_set (account)) {
+            /* If account is marked for offline sync during account
+ * creation, mark all the folders for offline sync + */
+            e_source_set_property (source, "offline_sync", "1");
+        }
+
        e_source_group_add_source (source_group, source, -1);

        g_object_unref (source);
@@ -272,9 +281,19 @@ add_esource (ExchangeAccount *account, else
                    source = e_source_new (folder_name, relative_uri);

+            if (exchange_account_is_offline_sync_set (account))
+                e_source_set_property (source, "offline_sync", "1");
+
            e_source_group_add_source (source_group, source, -1);
-            g_object_unref (source);
+        } else {
+            offline = e_source_get_property (source, "offline_sync");
+            if (!offline) {
+                /* Folder doesn't have any offline property set */
+ if (exchange_account_is_offline_sync_set (account)) + e_source_set_property (source, "offline_sync", "1");
+            }
        }
+        g_object_unref (source);
    }

    if (!is_contacts_folder) {
@@ -439,10 +458,14 @@ remove_esource (ExchangeAccount *account
                    }
                    else {
                        /* Folder Deleted - Remove only the source */
+                        /*
                        e_source_group_remove_source_by_uid (
group, source_uid); - + */
+                        e_source_group_remove_source (
+                                    group,
+                                    source);
                    }
                    if (!is_contacts_folder) {
if (is_account || folder_type == EXCHANGE_CALENDAR_FOLDER) {
@@ -695,7 +718,6 @@ account_changed (EAccountList *account_l
    }
else if (strcmp (config_listener->priv->configured_name, account->name))
        remove_sources (priv->exchange_account);
-
    /* Nope. Let the user know we're ignoring him. */
    e_notice (NULL, GTK_MESSAGE_WARNING,
Index: storage/exchange-offline-listener.c
===================================================================
RCS file: /cvs/gnome/evolution-exchange/storage/exchange-offline-listener.c,v
retrieving revision 1.5
diff -u -p -r1.5 exchange-offline-listener.c
--- storage/exchange-offline-listener.c 20 Jan 2005 09:23:58 -0000 1.5
+++ storage/exchange-offline-listener.c    18 Feb 2005 11:37:20 -0000
@@ -76,7 +76,7 @@ online_status_changed (GConfClient *clie
    value = gconf_entry_get_value (entry);
    if (value)
        offline = gconf_value_get_bool (value);
-    if (priv->offline != offline)
+    if (priv && priv->offline != offline)
        set_online_status (ex_offline_listener ,offline);
}






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]