GList * evo_environment_list_cal_sources(ECalSourceType type) { GList *paths = NULL; ESourceList *sources = NULL; ESource *source = NULL; if (!e_cal_get_sources(&sources, type, NULL)) { return NULL; } GSList *g = NULL; for (g = e_source_list_peek_groups (sources); g; g = g->next) { ESourceGroup *group = E_SOURCE_GROUP (g->data); GSList *s = NULL; for (s = e_source_group_peek_sources (group); s; s = s->next) { source = E_SOURCE (s->data); evo_location_t *path = g_malloc0(sizeof(evo_location_t)); //FIXME: Word around #442187 //if (!first) { // first = TRUE; // path->uri = g_strdup("default"); //} else { path->uri = g_strdup(e_source_get_uri(source)); //} path->name = g_strdup(e_source_peek_name(source)); paths = g_list_append(paths, path); } } return paths; }
static EMemoConduitCfg * memoconduit_load_configuration (guint32 pilot_id) { EMemoConduitCfg *c; GnomePilotConduitManagement *management; GnomePilotConduitConfig *config; gchar prefix[256]; g_snprintf (prefix, 255, "/gnome-pilot.d/e-memo-conduit/Pilot_%u/", pilot_id); c = g_new0 (EMemoConduitCfg,1); g_assert (c != NULL); c->pilot_id = pilot_id; management = gnome_pilot_conduit_management_new ("e_memo_conduit", GNOME_PILOT_CONDUIT_MGMT_ID); g_object_ref_sink (management); config = gnome_pilot_conduit_config_new (management, pilot_id); g_object_ref_sink (config); if (!gnome_pilot_conduit_config_is_enabled (config, &c->sync_type)) c->sync_type = GnomePilotConduitSyncTypeNotSet; g_object_unref (config); g_object_unref (management); /* Custom settings */ gnome_config_push_prefix (prefix); if (!e_cal_get_sources (&c->source_list, E_CAL_SOURCE_TYPE_JOURNAL, NULL)) c->source_list = NULL; if (c->source_list) { c->source = e_pilot_get_sync_source (c->source_list); if (!c->source) c->source = e_source_list_peek_source_any (c->source_list); if (c->source) { g_object_ref (c->source); } else { g_object_unref (c->source_list); c->source_list = NULL; } } c->secret = gnome_config_get_bool ("secret=FALSE"); c->priority = gnome_config_get_int ("priority=3"); c->last_uri = gnome_config_get_string ("last_uri"); gnome_config_pop_prefix (); return c; }
ECal * evo_cal_source_open_source(const char *uri, ECalSourceType type) { ESourceList *sources = NULL; ESource *source = NULL; ECal *cal = NULL; GError *gerror = NULL; g_debug("Opening calendar source uri: %s\n", uri); if (strcmp(uri, "default")) { if (!e_cal_get_sources(&sources, type, &gerror)) { g_warning("Unable to get sources for calendar (type %u): %s", type, gerror && gerror->message ? gerror->message : "None"); g_clear_error(&gerror); return NULL; } source = evo_environment_find_source(sources, uri); if (!source) { g_warning("Unable to find source for calendar (type %u)", type); return NULL; } cal = e_cal_new(source, type); if(!cal) { g_warning("Failed to create new calendar (type %u)", type); return NULL; } if(!e_cal_open(cal, FALSE, &gerror)) { g_warning("Failed to open calendar (type %u): %s", type, gerror && gerror->message? gerror->message : "None"); g_object_unref(cal); g_clear_error(&gerror); return NULL; } } else { if (!e_cal_open_default (&cal, type, NULL, NULL, &gerror)) { g_warning("Failed to open default calendar: %s", gerror && gerror->message ? gerror->message : "None"); g_clear_error(&gerror); return NULL; } } return cal; }
static void alarm_notify_load_calendars (AlarmNotify *an, ECalSourceType source_type) { ESourceList *source_list; GSList *groups, *sources, *p, *q; if (!e_cal_get_sources (&source_list, source_type, NULL)) { d (printf("%s:%d (load_calendars) - Cannont get sources\n ", __FILE__, __LINE__)); an->priv->source_lists[source_type] = NULL; return; } groups = e_source_list_peek_groups (source_list); for (p = groups; p != NULL; p = p->next) { ESourceGroup *group = E_SOURCE_GROUP (p->data); sources = e_source_group_peek_sources (group); for (q = sources; q != NULL; q = q->next) { ESource *source = E_SOURCE (q->data); gchar *uri; const gchar *completion = e_source_get_property (source, "alarm"); if (completion && (!g_ascii_strcasecmp (completion, "false") || !g_ascii_strcasecmp (completion, "never"))) continue; uri = e_source_get_uri (source); d (printf("%s:%d (load_calendars) - Loading Calendar %s \n", __FILE__, __LINE__, uri)); alarm_notify_add_calendar (an, source_type, source, FALSE); g_free (uri); } } g_signal_connect_object ( source_list, "changed", G_CALLBACK (alarm_notify_list_changed_cb), an, 0); an->priv->source_lists[source_type] = source_list; }
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 void ensure_sources (MemosComponent *component) { GSList *groups; ESourceList *source_list; ESourceGroup *group; ESourceGroup *on_this_computer; ESourceGroup *on_the_web; ESource *personal_source; char *base_uri, *base_uri_proto; const gchar *base_dir; on_this_computer = NULL; on_the_web = NULL; personal_source = NULL; if (!e_cal_get_sources (&source_list, E_CAL_SOURCE_TYPE_JOURNAL, NULL)) { g_warning ("Could not get memo source list from GConf!"); return; } base_dir = memos_component_peek_base_directory (component); base_uri = g_build_filename (base_dir, "local", NULL); base_uri_proto = g_filename_to_uri (base_uri, NULL, NULL); groups = e_source_list_peek_groups (source_list); if (groups) { /* groups are already there, we need to search for things... */ GSList *g; for (g = groups; g; g = g->next) { group = E_SOURCE_GROUP (g->data); /* compare only file:// part. If user home dir name changes we do not want to create one more group */ if (!on_this_computer && !strncmp (base_uri_proto, e_source_group_peek_base_uri (group), 7)) on_this_computer = group; else if (!on_the_web && !strcmp (WEB_BASE_URI, e_source_group_peek_base_uri (group))) on_the_web = group; } } if (on_this_computer) { /* make sure "Personal" shows up as a source under this group */ GSList *sources = e_source_group_peek_sources (on_this_computer); GSList *s; for (s = sources; s; s = s->next) { ESource *source = E_SOURCE (s->data); const gchar *relative_uri; relative_uri = e_source_peek_relative_uri (source); if (relative_uri == NULL) continue; if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) { personal_source = source; break; } } /* Make sure we have the correct base uri. This can change when user's homedir name changes */ if (strcmp (base_uri_proto, e_source_group_peek_base_uri (on_this_computer))) { e_source_group_set_base_uri (on_this_computer, base_uri_proto); /* *sigh* . We shouldn't need this sync call here as set_base_uri call results in synching to gconf, but that happens in idle loop and too late to prevent user seeing "Can not Open ... because of invalid uri" error.*/ e_source_list_sync (source_list,NULL); } } else { /* create the local source group */ group = e_source_group_new (_("On This Computer"), base_uri_proto); e_source_list_add_group (source_list, group, -1); on_this_computer = group; } if (!personal_source) { GSList *memos_selected; /* Create the default Person addressbook */ ESource *source = e_source_new (_("Personal"), PERSONAL_RELATIVE_URI); e_source_group_add_source (on_this_computer, source, -1); memos_selected = calendar_config_get_memos_selected (); if (!calendar_config_get_primary_memos () && !memos_selected) { GSList selected; calendar_config_set_primary_memos (e_source_peek_uid (source)); selected.data = (gpointer)e_source_peek_uid (source); selected.next = NULL; calendar_config_set_memos_selected (&selected); } if (memos_selected) { g_slist_foreach (memos_selected, (GFunc) g_free, NULL); g_slist_free (memos_selected); } e_source_set_color_spec (source, "#BECEDD"); personal_source = source; } if (!on_the_web) { /* Create the LDAP source group */ group = e_source_group_new (_("On The Web"), WEB_BASE_URI); e_source_list_add_group (source_list, group, -1); on_the_web = group; } component->priv->source_list = source_list; g_free (base_uri_proto); g_free (base_uri); }
static void init_widgets(char *path) { GtkWidget *vbox, *hbox, *dialog; icalcomponent_kind kind; icalcomponent *subcomp; GtkWidget *selector, *label; ESourceList *source_list; ESource *primary; GtkWidget *scrolled; ICalImporterData *icidata = g_malloc0(sizeof(*icidata)); GtkWidget *icon, *button; char *label_str = NULL; char *markup; g_return_if_fail ( path != NULL); dialog = gtk_dialog_new_with_buttons (_("Import ICS"), NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL); icidata->window = dialog; g_signal_connect (dialog, "response", G_CALLBACK (dialog_response_cb), icidata); vbox = GTK_DIALOG(dialog)->vbox; hbox = gtk_hbox_new (FALSE, FALSE); label = gtk_label_new(NULL); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, TRUE, 6); icidata->icalcomp = get_icalcomponent_from_file (path); subcomp = icalcomponent_get_inner(icidata->icalcomp); kind = icalcomponent_isa (subcomp); if (kind == ICAL_VTODO_COMPONENT ) { e_cal_get_sources (&source_list, E_CAL_SOURCE_TYPE_TODO, NULL); label_str = _("Select Task List"); icidata->source_type = E_CAL_SOURCE_TYPE_TODO; } else if ( kind == ICAL_VEVENT_COMPONENT) { e_cal_get_sources (&source_list, E_CAL_SOURCE_TYPE_EVENT, NULL); label_str = _("Select Calendar"); icidata->source_type = E_CAL_SOURCE_TYPE_EVENT; } markup = g_markup_printf_escaped ("<b>%s</b>", label_str); gtk_label_set_markup (GTK_LABEL (label), markup); g_free (markup); hbox = gtk_hbox_new (FALSE, FALSE); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 6); selector = e_source_selector_new (source_list); e_source_selector_show_selection (E_SOURCE_SELECTOR (selector), FALSE); scrolled = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add((GtkContainer *)scrolled, selector); gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled), GTK_SHADOW_IN); hbox = gtk_hbox_new (FALSE, FALSE); gtk_box_pack_start (GTK_BOX (hbox), scrolled, TRUE, TRUE, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 6); icidata->selector = selector; /* FIXME What if no sources? */ primary = e_source_list_peek_source_any (source_list); e_source_selector_set_primary_selection (E_SOURCE_SELECTOR (selector), primary); g_object_unref (source_list); hbox = gtk_hbox_new (FALSE, FALSE); icon = e_icon_factory_get_image ("stock_mail-import", E_ICON_SIZE_MENU); gtk_box_pack_start (GTK_BOX(hbox), icon, FALSE, FALSE, 6); label = gtk_label_new_with_mnemonic (_("_Import")); gtk_box_pack_start (GTK_BOX(hbox), label, FALSE, FALSE, 6); gtk_widget_show(label); button = gtk_button_new (); gtk_container_add (GTK_CONTAINER (button), hbox); gtk_dialog_add_action_widget (GTK_DIALOG (dialog), button, GTK_RESPONSE_OK); gtk_widget_grab_focus (button); gtk_window_set_default_size (GTK_WINDOW (dialog), 210,340); gtk_widget_show_all (dialog); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); }