static void synch_done (struct account_synch_msg *m) { g_print ("SxAS: Emitting finished signal (%d) [%p]\n", m->success, g_thread_self ()); /* Workaround for broken e_source_list and/or gconf */ if (m->success) { ESourceList *slist; ESourceGroup *group; const char *group_uid; gboolean changed; ScalixAccountSynchPrivate *priv; changed = FALSE; slist = NULL; e_cal_get_sources (&slist, E_CAL_SOURCE_TYPE_EVENT, NULL); group_uid = e_source_group_peek_uid (m->esg_cals); group = e_source_list_peek_group_by_uid (slist, group_uid); g_print ("Cal: %s %p\n", group_uid, group); if (group == NULL) { e_source_list_add_group (slist, m->esg_cals, -1); } else { char *xml; xml = e_source_group_to_xml (m->esg_cals); g_print ("Xml: %s\n", xml); e_source_group_update_from_xml (group, xml, &changed); g_free (xml); } e_source_list_sync (slist, NULL); g_object_unref (slist); slist = NULL; changed = FALSE; e_book_get_addressbooks (&slist, NULL); group_uid = e_source_group_peek_uid (m->esg_cnts); group = e_source_list_peek_group_by_uid (slist, group_uid); g_print ("Cnt: %s %p\n", group_uid, group); if (group == NULL) { e_source_list_add_group (slist, m->esg_cnts, -1); } else { char *xml; xml = e_source_group_to_xml (m->esg_cnts); g_print ("Xml: %s\n", xml); e_source_group_update_from_xml (group, xml, &changed); g_free (xml); } e_source_list_sync (slist, NULL); g_object_unref (slist); priv = SCALIX_ACCOUNT_SYNCH_GET_PRIVATE (m->sxas); g_print ("SV: %s\n", m->sversion); scalix_account_prefs_set_sversion (priv->account, m->sversion, NULL); } g_signal_emit (m->sxas, sxas_signals[SAS_SIGNAL_FINISHED], 0, m->success); g_print ("SxAS: Emitting done\n"); }
static gint on_idle_do_stuff (gpointer unused_data) { GConfClient *client = gconf_client_get_default (); ESourceGroup *new_group = NULL; ESource *new_source = NULL; list = e_source_list_new_for_gconf (client, key_arg); g_object_unref (client); if (add_group_arg != NULL) { if (group_arg != NULL) { fprintf (stderr, "--add-group and --group cannot be used at the same time.\n"); exit (1); } if (set_base_uri_arg == NULL) { fprintf (stderr, "When using --add-group, you need to specify a base URI using --set-base-uri.\n"); exit (1); } new_group = e_source_group_new (add_group_arg, set_base_uri_arg); e_source_list_add_group (list, new_group, -1); g_object_unref (new_group); e_source_list_sync (list, NULL); } if (remove_group_arg != NULL) { ESourceGroup *group; group = e_source_list_peek_group_by_uid (list, remove_group_arg); if (group == NULL) { fprintf (stderr, "No such group \"%s\".\n", remove_group_arg); exit (1); } e_source_list_remove_group (list, group); e_source_list_sync (list, NULL); } if (add_source_arg != NULL) { ESourceGroup *group; if (group_arg == NULL && new_group == NULL) { fprintf (stderr, "When using --add-source, you need to specify a group using either --group\n" "or --add-group.\n"); exit (1); } if (set_relative_uri_arg == NULL) { fprintf (stderr, "When using --add-source, you need to specify a relative URI using\n" "--set-relative-uri.\n"); exit (1); } if (group_arg == NULL) { group = new_group; } else { group = e_source_list_peek_group_by_uid (list, group_arg); if (group == NULL) { fprintf (stderr, "No such group \"%s\".\n", group_arg == NULL ? add_group_arg : group_arg); exit (1); } } new_source = e_source_new (add_source_arg, set_relative_uri_arg); e_source_group_add_source (group, new_source, -1); e_source_list_sync (list, NULL); } if (remove_source_arg != NULL) { ESource *source; source = e_source_list_peek_source_by_uid (list, remove_source_arg); if (source == NULL) { fprintf (stderr, "No such source \"%s\".\n", remove_source_arg); exit (1); } e_source_list_remove_source_by_uid (list, remove_source_arg); e_source_list_sync (list, NULL); } if (set_name_arg != NULL) { if (group_arg == NULL && source_arg == NULL) { fprintf (stderr, "When using --set-name, you need to specify a source (using --source" "alone) or a group (using --group alone).\n"); exit (1); } if (source_arg != NULL) { ESource *source = e_source_list_peek_source_by_uid (list, source_arg); if (source != NULL) { e_source_set_name (source, set_name_arg); } else { fprintf (stderr, "No such source \"%s\".\n", source_arg); exit (1); } } else { ESourceGroup *group = e_source_list_peek_group_by_uid (list, group_arg); if (group != NULL) { e_source_group_set_name (group, set_name_arg); } else { fprintf (stderr, "No such group \"%s\".\n", group_arg); exit (1); } } e_source_list_sync (list, NULL); } if (set_relative_uri_arg != NULL && add_source_arg == NULL) { ESource *source; if (source_arg == NULL) { fprintf (stderr, "When using --set-relative-uri, you need to specify a source using " "--source.\n"); exit (1); } source = e_source_list_peek_source_by_uid (list, source_arg); e_source_set_relative_uri (source, set_relative_uri_arg); e_source_list_sync (list, NULL); } if (set_color_arg != NULL) { ESource *source; if (add_source_arg == NULL && source_arg == NULL) { fprintf (stderr, "When using --set-color, you need to specify a source using --source\n"); exit (1); } if (add_source_arg != NULL) source = new_source; else source = e_source_list_peek_source_by_uid (list, source_arg); e_source_set_color_spec (source, set_color_arg); e_source_list_sync (list, NULL); } if (unset_color) { ESource *source; if (add_source_arg == NULL && source_arg == NULL) { fprintf (stderr, "When using --unset-color, you need to specify a source using --source\n"); exit (1); } if (add_source_arg != NULL) source = new_source; else source = e_source_list_peek_source_by_uid (list, source_arg); e_source_set_color_spec (source, NULL); e_source_list_sync (list, NULL); } if (set_base_uri_arg != NULL && add_group_arg == NULL) { ESourceGroup *group; if (group_arg == NULL) { fprintf (stderr, "When using --set-base-uri, you need to specify a group using --group.\n"); exit (1); } group = e_source_list_peek_group_by_uid (list, group_arg); e_source_group_set_base_uri (group, set_base_uri_arg); e_source_list_sync (list, NULL); } if (set_value_arg != NULL) { ESource *source; if (add_source_arg == NULL && source_arg == NULL) { fprintf (stderr, "When using --set-value, you need to specify a source using --source\n"); exit (1); } if (property_arg == NULL) { fprintf (stderr, "When using --set-value, you need to specify a property using --property\n"); exit (1); } if (add_source_arg != NULL) source = new_source; else source = e_source_list_peek_source_by_uid (list, source_arg); e_source_set_property (source, property_arg, set_value_arg); e_source_list_sync (list, NULL); } if (unset_value) { ESource *source; if (add_source_arg == NULL && source_arg == NULL) { fprintf (stderr, "When using --unset-value, you need to specify a source using --source\n"); exit (1); } if (property_arg == NULL) { fprintf (stderr, "When using --unset-value, you need to specify a property using --property\n"); exit (1); } if (add_source_arg != NULL) source = new_source; else source = e_source_list_peek_source_by_uid (list, source_arg); e_source_set_property (source, property_arg, NULL); e_source_list_sync (list, NULL); } connect_list (); if (dump) dump_list (); if (!listen) g_main_loop_quit (main_loop); return FALSE; }