aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/conduits
diff options
context:
space:
mode:
authorJP Rosevear <jpr@ximian.com>2001-12-19 23:19:33 +0800
committerJP Rosevear <jpr@src.gnome.org>2001-12-19 23:19:33 +0800
commit3581bfb3efdbdd9747749db0ddfa55a728f96719 (patch)
tree342c922938c70cfe2e579fe2f3f6694b97515620 /calendar/conduits
parentb64f547cdd71098035e9b055ee7f0ec4de2b9e1c (diff)
downloadgsoc2013-evolution-3581bfb3efdbdd9747749db0ddfa55a728f96719.tar.gz
gsoc2013-evolution-3581bfb3efdbdd9747749db0ddfa55a728f96719.tar.zst
gsoc2013-evolution-3581bfb3efdbdd9747749db0ddfa55a728f96719.zip
go slow and clear the map if the last uri and the current uri do not match
2001-12-19 JP Rosevear <jpr@ximian.com> * conduits/calendar/calendar-conduit.c (check_for_slow_setting): go slow and clear the map if the last uri and the current uri do not match (post_sync): save the last uri * conduits/calendar/calendar-conduit-config.h: handle a last uri config option * conduits/todo/todo-conduit-config.h: ditto * conduits/calendar/calendar-conduit.c (start_calendar_server): use the open_default_calendar method * conduits/todo/todo-conduit.c (start_calendar_server): same as above * cal-client/Makefile.am: link with bonobo conf * cal-client/cal-client.h: new protos * idl/evolution-calendar.idl: make sure open method raises appropriate exceptions * gui/e-itip-control.c (start_calendar_server): use cal_client_open_default_* calls * cal-client/cal-client.c (real_open_calendar): do the real work of loading (cal_client_open_calendar): use above (get_fall_back_uri): get the basic local uri (get_default_uri): get the default uri from the config db (cal_client_open_default_calendar): open the default uri or the fallback if the method is unsupported (cal_client_open_default_tasks): same for tasks svn path=/trunk/; revision=15179
Diffstat (limited to 'calendar/conduits')
-rw-r--r--calendar/conduits/calendar/calendar-conduit-config.h13
-rw-r--r--calendar/conduits/calendar/calendar-conduit.c26
-rw-r--r--calendar/conduits/todo/todo-conduit-config.h11
-rw-r--r--calendar/conduits/todo/todo-conduit.c26
4 files changed, 53 insertions, 23 deletions
diff --git a/calendar/conduits/calendar/calendar-conduit-config.h b/calendar/conduits/calendar/calendar-conduit-config.h
index c231a59008..4521612034 100644
--- a/calendar/conduits/calendar/calendar-conduit-config.h
+++ b/calendar/conduits/calendar/calendar-conduit-config.h
@@ -31,9 +31,11 @@
/* Configuration info */
typedef struct _ECalConduitCfg ECalConduitCfg;
struct _ECalConduitCfg {
- gboolean open_secret;
guint32 pilot_id;
- GnomePilotConduitSyncType sync_type; /* only used by capplet */
+ GnomePilotConduitSyncType sync_type;
+
+ gboolean open_secret;
+ gchar *last_uri;
};
#ifdef CAL_CONFIG_LOAD
@@ -63,6 +65,7 @@ calconduit_load_configuration (ECalConduitCfg **c, guint32 pilot_id)
gnome_config_push_prefix (prefix);
(*c)->open_secret = gnome_config_get_bool ("open_secret=FALSE");
+ (*c)->last_uri = gnome_config_get_string ("last_uri");
gnome_config_pop_prefix ();
}
@@ -80,6 +83,7 @@ calconduit_save_configuration (ECalConduitCfg *c)
gnome_config_push_prefix (prefix);
gnome_config_set_bool ("open_secret", c->open_secret);
+ gnome_config_set_string ("last_uri", c->last_uri);
gnome_config_pop_prefix ();
gnome_config_sync ();
@@ -98,9 +102,11 @@ calconduit_dupe_configuration (ECalConduitCfg *c)
retval = g_new0 (ECalConduitCfg, 1);
retval->sync_type = c->sync_type;
- retval->open_secret = c->open_secret;
retval->pilot_id = c->pilot_id;
+ retval->open_secret = c->open_secret;
+ retval->last_uri = g_strdup (c->last_uri);
+
return retval;
}
#endif
@@ -113,6 +119,7 @@ calconduit_destroy_configuration (ECalConduitCfg **c)
g_return_if_fail (c != NULL);
g_return_if_fail (*c != NULL);
+ g_free ((*c)->last_uri);
g_free (*c);
*c = NULL;
}
diff --git a/calendar/conduits/calendar/calendar-conduit.c b/calendar/conduits/calendar/calendar-conduit.c
index 1546141254..a320e9bb8d 100644
--- a/calendar/conduits/calendar/calendar-conduit.c
+++ b/calendar/conduits/calendar/calendar-conduit.c
@@ -37,9 +37,11 @@
#include <e-pilot-util.h>
#define CAL_CONFIG_LOAD 1
+#define CAL_CONFIG_SAVE 1
#define CAL_CONFIG_DESTROY 1
#include <calendar-conduit-config.h>
#undef CAL_CONFIG_LOAD
+#undef CAL_CONFIG_SAVE
#undef CAL_CONFIG_DESTROY
#include <calendar-conduit.h>
@@ -202,28 +204,21 @@ start_calendar_server_cb (CalClient *cal_client,
static int
start_calendar_server (ECalConduitContext *ctxt)
{
- char *calendar_file;
gboolean success = FALSE;
g_return_val_if_fail (ctxt != NULL, -2);
ctxt->client = cal_client_new ();
- /* FIX ME */
- calendar_file = g_concat_dir_and_file (g_get_home_dir (),
- "evolution/local/"
- "Calendar/calendar.ics");
-
gtk_signal_connect (GTK_OBJECT (ctxt->client), "cal_opened",
start_calendar_server_cb, &success);
- if (!cal_client_open_calendar (ctxt->client, calendar_file, FALSE))
+ if (!cal_client_open_default_calendar (ctxt->client, FALSE))
return -1;
/* run a sub event loop to turn cal-client's async load
notification into a synchronous call */
gtk_main ();
- g_free (calendar_file);
if (success)
return 0;
@@ -1039,12 +1034,21 @@ check_for_slow_setting (GnomePilotConduit *c, ECalConduitContext *ctxt)
{
GnomePilotConduitStandard *conduit = GNOME_PILOT_CONDUIT_STANDARD (c);
int map_count;
-
+ const char *uri;
+
/* If there are objects but no log */
map_count = g_hash_table_size (ctxt->map->pid_map);
if (map_count == 0)
gnome_pilot_conduit_standard_set_slow (conduit, TRUE);
+ /* Or if the URI's don't match */
+ uri = cal_client_get_uri (ctxt->client);
+ LOG(" Current URI %s (%s)\n", uri, ctxt->cfg->last_uri ? ctxt->cfg->last_uri : "<NONE>");
+ if (ctxt->cfg->last_uri != NULL && strcmp (ctxt->cfg->last_uri, uri)) {
+ gnome_pilot_conduit_standard_set_slow (conduit, TRUE);
+ e_pilot_map_clear (ctxt->map);
+ }
+
if (gnome_pilot_conduit_standard_get_slow (conduit)) {
ctxt->map->write_touched_only = TRUE;
LOG (" doing slow sync\n");
@@ -1196,6 +1200,10 @@ post_sync (GnomePilotConduit *conduit,
LOG ("post_sync: Calendar Conduit v.%s", CONDUIT_VERSION);
+ g_free (ctxt->cfg->last_uri);
+ ctxt->cfg->last_uri = g_strdup (cal_client_get_uri (ctxt->client));
+ calconduit_save_configuration (ctxt->cfg);
+
filename = map_name (ctxt);
e_pilot_map_write (filename, ctxt->map);
g_free (filename);
diff --git a/calendar/conduits/todo/todo-conduit-config.h b/calendar/conduits/todo/todo-conduit-config.h
index 010315291c..3296cd47e3 100644
--- a/calendar/conduits/todo/todo-conduit-config.h
+++ b/calendar/conduits/todo/todo-conduit-config.h
@@ -31,9 +31,11 @@
/* Configuration info */
typedef struct _EToDoConduitCfg EToDoConduitCfg;
struct _EToDoConduitCfg {
- gboolean open_secret;
guint32 pilot_id;
GnomePilotConduitSyncType sync_type; /* only used by capplet */
+
+ gboolean open_secret;
+ gchar *last_uri;
};
#ifdef TODO_CONFIG_LOAD
@@ -63,6 +65,7 @@ todoconduit_load_configuration (EToDoConduitCfg **c, guint32 pilot_id)
gnome_config_push_prefix (prefix);
(*c)->open_secret = gnome_config_get_bool ("open_secret=FALSE");
+ (*c)->last_uri = gnome_config_get_string ("last_uri");
gnome_config_pop_prefix ();
}
@@ -80,6 +83,7 @@ todoconduit_save_configuration (EToDoConduitCfg *c)
gnome_config_push_prefix (prefix);
gnome_config_set_bool ("open_secret", c->open_secret);
+ gnome_config_set_string ("last_uri", c->last_uri);
gnome_config_pop_prefix ();
gnome_config_sync ();
@@ -98,9 +102,11 @@ todoconduit_dupe_configuration (EToDoConduitCfg *c)
retval = g_new0 (EToDoConduitCfg, 1);
retval->sync_type = c->sync_type;
- retval->open_secret = c->open_secret;
retval->pilot_id = c->pilot_id;
+ retval->open_secret = c->open_secret;
+ retval->last_uri = g_strdup (c->last_uri);
+
return retval;
}
#endif
@@ -113,6 +119,7 @@ todoconduit_destroy_configuration (EToDoConduitCfg **c)
g_return_if_fail (c != NULL);
g_return_if_fail (*c != NULL);
+ g_free ((*c)->last_uri);
g_free (*c);
*c = NULL;
}
diff --git a/calendar/conduits/todo/todo-conduit.c b/calendar/conduits/todo/todo-conduit.c
index 4964860e22..8b68110847 100644
--- a/calendar/conduits/todo/todo-conduit.c
+++ b/calendar/conduits/todo/todo-conduit.c
@@ -37,9 +37,11 @@
#include <e-pilot-util.h>
#define TODO_CONFIG_LOAD 1
+#define TODO_CONFIG_SAVE 1
#define TODO_CONFIG_DESTROY 1
#include <todo-conduit-config.h>
#undef TODO_CONFIG_LOAD
+#undef TODO_CONFIG_SAVE
#undef TODO_CONFIG_DESTROY
#include <todo-conduit.h>
@@ -204,28 +206,21 @@ start_calendar_server_cb (CalClient *cal_client,
static int
start_calendar_server (EToDoConduitContext *ctxt)
{
- char *calendar_file;
gboolean success = FALSE;
g_return_val_if_fail (ctxt != NULL, -2);
ctxt->client = cal_client_new ();
- /* FIX ME */
- calendar_file = g_concat_dir_and_file (g_get_home_dir (),
- "evolution/local/"
- "Tasks/tasks.ics");
-
gtk_signal_connect (GTK_OBJECT (ctxt->client), "cal_opened",
start_calendar_server_cb, &success);
- if (!cal_client_open_calendar (ctxt->client, calendar_file, FALSE))
+ if (!cal_client_open_default_tasks (ctxt->client, FALSE))
return -1;
/* run a sub event loop to turn cal-client's async load
notification into a synchronous call */
gtk_main ();
- g_free (calendar_file);
if (success)
return 0;
@@ -654,12 +649,21 @@ check_for_slow_setting (GnomePilotConduit *c, EToDoConduitContext *ctxt)
{
GnomePilotConduitStandard *conduit = GNOME_PILOT_CONDUIT_STANDARD (c);
int map_count;
-
+ const char *uri;
+
/* If there are no objects or objects but no log */
map_count = g_hash_table_size (ctxt->map->pid_map);
if (map_count == 0)
gnome_pilot_conduit_standard_set_slow (conduit, TRUE);
+ /* Or if the URI's don't match */
+ uri = cal_client_get_uri (ctxt->client);
+ LOG(" Current URI %s (%s)\n", uri, ctxt->cfg->last_uri ? ctxt->cfg->last_uri : "<NONE>");
+ if (ctxt->cfg->last_uri != NULL && strcmp (ctxt->cfg->last_uri, uri)) {
+ gnome_pilot_conduit_standard_set_slow (conduit, TRUE);
+ e_pilot_map_clear (ctxt->map);
+ }
+
if (gnome_pilot_conduit_standard_get_slow (conduit)) {
ctxt->map->write_touched_only = TRUE;
LOG (" doing slow sync\n");
@@ -779,6 +783,10 @@ post_sync (GnomePilotConduit *conduit,
gchar *filename, *change_id;
LOG ("post_sync: ToDo Conduit v.%s", CONDUIT_VERSION);
+
+ g_free (ctxt->cfg->last_uri);
+ ctxt->cfg->last_uri = g_strdup (cal_client_get_uri (ctxt->client));
+ todoconduit_save_configuration (ctxt->cfg);
filename = map_name (ctxt);
e_pilot_map_write (filename, ctxt->map);