diff options
Diffstat (limited to 'calendar/conduits/todo/todo-conduit.c')
-rw-r--r-- | calendar/conduits/todo/todo-conduit.c | 26 |
1 files changed, 17 insertions, 9 deletions
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); |