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



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]