From 6d3e30b16051c2ba4fc75edfcff2ba85c87f99ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erick=20P=C3=A9rez=20Castellanos?= Date: Mon, 6 Oct 2014 12:22:17 -0400 Subject: [PATCH] edit-dialog: added stub code The code added make the dialog show up. Probably anything else works, but it's start to keep the project building while GcalManager migration is finished and new GcalEditDialog is built. --- src/gcal-edit-dialog.c | 83 ++++++++++++++++++++++-------------------- src/gcal-edit-dialog.h | 5 +-- src/gcal-manager.c | 6 +-- src/gcal-manager.h | 4 +- 4 files changed, 51 insertions(+), 47 deletions(-) diff --git a/src/gcal-edit-dialog.c b/src/gcal-edit-dialog.c index 4dd8e8ac..7a285080 100644 --- a/src/gcal-edit-dialog.c +++ b/src/gcal-edit-dialog.c @@ -70,6 +70,10 @@ struct _GcalEditDialogPrivate SimpleEventStore *ev_store; + /* new data holders */ + ESource *source; /* weak reference */ + ECalComponent *component; + gboolean setting_event; }; @@ -393,6 +397,9 @@ gcal_edit_dialog_finalize (GObject *object) if (priv->calendars_menu != NULL) g_object_unref (priv->calendars_menu); + if (priv->component != NULL) + g_object_unref (priv->component); + G_OBJECT_CLASS (gcal_edit_dialog_parent_class)->finalize (object); } @@ -841,27 +848,36 @@ gcal_edit_dialog_new (void) } void -gcal_edit_dialog_set_event (GcalEditDialog *dialog, - const gchar *source_uid, - const gchar *event_uid) +gcal_edit_dialog_set_event_data (GcalEditDialog *dialog, + GcalEventData *data) { GcalEditDialogPrivate *priv; - const gchar *const_text; + const gchar *const_text = NULL; gboolean all_day; + const gchar *uid = NULL; + ECalComponentText e_summary; + ECalComponentDateTime dt; + priv = dialog->priv; all_day = FALSE; priv->setting_event = TRUE; + priv->source = data->source; + if (priv->component != NULL) + g_object_unref (priv->component); + priv->component = e_cal_component_clone (data->event_component); + if (priv->source_uid != NULL) g_free (priv->source_uid); - priv->source_uid = g_strdup (source_uid); + priv->source_uid = g_strdup (e_source_get_uid (priv->source)); if (priv->event_uid != NULL) g_free (priv->event_uid); - priv->event_uid = g_strdup (event_uid); + e_cal_component_get_uid (priv->component, &uid); + priv->event_uid = g_strdup (uid); /* Clear event data */ gcal_edit_dialog_clear_data (dialog); @@ -879,9 +895,8 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog, /* Load new event data */ /* summary */ - priv->ev_store->summary = gcal_manager_get_event_summary (priv->manager, - priv->source_uid, - priv->event_uid); + e_cal_component_get_summary (priv->component, &e_summary); + priv->ev_store->summary = g_strdup (e_summary.value); gtk_entry_set_text (GTK_ENTRY (priv->summary_entry), priv->ev_store->summary != NULL ? priv->ev_store->summary : ""); @@ -891,20 +906,28 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog, gcal_edit_dialog_set_calendar_selected (dialog); /* start date */ - priv->ev_store->start_date = - gcal_manager_get_event_start_date (priv->manager, - priv->source_uid, - priv->event_uid); + e_cal_component_get_dtstart (priv->component, &dt); + priv->ev_store->start_date = gcal_dup_icaltime (dt.value); + e_cal_component_free_datetime (&dt); gcal_date_entry_set_date (GCAL_DATE_ENTRY (priv->start_date_entry), priv->ev_store->start_date->day, priv->ev_store->start_date->month, priv->ev_store->start_date->year); + /* end date */ + e_cal_component_get_dtend (priv->component, &dt); + priv->ev_store->end_date = gcal_dup_icaltime (dt.value); + e_cal_component_free_datetime (&dt); + + gcal_date_entry_set_date (GCAL_DATE_ENTRY (priv->end_date_entry), + priv->ev_store->end_date->day, + priv->ev_store->end_date->month, + priv->ev_store->end_date->year); + /* all_day */ - priv->ev_store->all_day = gcal_manager_get_event_all_day (priv->manager, - priv->source_uid, - priv->event_uid); + priv->ev_store->all_day = (priv->ev_store->start_date->is_date == 1 && + priv->ev_store->end_date->is_date == 1); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->all_day_check), priv->ev_store->all_day); @@ -917,16 +940,6 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog, gcal_time_entry_set_time (GCAL_TIME_ENTRY (priv->start_time_entry), priv->ev_store->start_date->hour, priv->ev_store->start_date->minute); - - /* end date */ - priv->ev_store->end_date = gcal_manager_get_event_end_date (priv->manager, - priv->source_uid, - priv->event_uid); - gcal_date_entry_set_date (GCAL_DATE_ENTRY (priv->end_date_entry), - priv->ev_store->end_date->day, - priv->ev_store->end_date->month, - priv->ev_store->end_date->year); - /* end time */ if (all_day) { @@ -943,20 +956,13 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog, 0); /* location */ - const_text = gcal_manager_get_event_location (priv->manager, - priv->source_uid, - priv->event_uid); + e_cal_component_get_location (priv->component, &const_text); gtk_entry_set_text (GTK_ENTRY (priv->location_entry), const_text != NULL ? const_text : ""); priv->ev_store->location = const_text != NULL ? g_strdup (const_text) : ""; /* notes */ - priv->ev_store->description = - gcal_manager_get_event_description (priv->manager, - priv->source_uid, - priv->event_uid); - if (priv->ev_store->description == NULL) - priv->ev_store->description = ""; + priv->ev_store->description = ""; gtk_text_buffer_set_text ( gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->notes_text)), @@ -965,8 +971,8 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog, gcal_edit_dialog_set_writable ( dialog, - ! gcal_manager_get_source_readonly (priv->manager, - priv->source_uid)); + ! gcal_manager_is_client_writable (priv->manager, + priv->source)); priv->setting_event = FALSE; } @@ -1016,8 +1022,7 @@ gcal_edit_dialog_set_manager (GcalEditDialog *dialog, 3, &color, -1); - if (! active || - gcal_manager_get_source_readonly (priv->manager, uid)) + if (! active) { valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (sources_model), &iter); diff --git a/src/gcal-edit-dialog.h b/src/gcal-edit-dialog.h index 33eda0c7..945b93b9 100644 --- a/src/gcal-edit-dialog.h +++ b/src/gcal-edit-dialog.h @@ -57,9 +57,8 @@ GType gcal_edit_dialog_get_type (void); GtkWidget* gcal_edit_dialog_new (void); -void gcal_edit_dialog_set_event (GcalEditDialog *dialog, - const gchar *source_uid, - const gchar *event_uid); +void gcal_edit_dialog_set_event_data (GcalEditDialog *dialog, + GcalEventData *data); void gcal_edit_dialog_set_manager (GcalEditDialog *dialog, GcalManager *manager); diff --git a/src/gcal-manager.c b/src/gcal-manager.c index 9257174a..37680313 100644 --- a/src/gcal-manager.c +++ b/src/gcal-manager.c @@ -863,15 +863,15 @@ gcal_manager_get_default_source (GcalManager *manager) } gboolean -gcal_manager_get_source_readonly (GcalManager *manager, - const gchar *source_uid) +gcal_manager_is_client_writable (GcalManager *manager, + ESource *source) { GcalManagerPrivate *priv; GcalManagerUnit *unit; priv = gcal_manager_get_instance_private (manager); - unit = g_hash_table_lookup (priv->clients, source_uid); + unit = g_hash_table_lookup (priv->clients, source); return e_client_is_readonly (E_CLIENT (unit->client)); } diff --git a/src/gcal-manager.h b/src/gcal-manager.h index 5eec4877..582d88d5 100644 --- a/src/gcal-manager.h +++ b/src/gcal-manager.h @@ -78,8 +78,8 @@ gchar* gcal_manager_add_source (GcalManager *manager gchar* gcal_manager_get_default_source (GcalManager *manager); -gboolean gcal_manager_get_source_readonly (GcalManager *manager, - const gchar *source_uid); +gboolean gcal_manager_is_client_writable (GcalManager *manager, + ESource *source); void gcal_manager_set_new_range (GcalManager *manager, const icaltimetype *initial_date,