[gnome-calendar/wip/gbsneto/gcal-event: 8/8] manager: use GcalEvent on it's API
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar/wip/gbsneto/gcal-event: 8/8] manager: use GcalEvent on it's API
- Date: Sat, 13 Feb 2016 17:35:07 +0000 (UTC)
commit 97eab3431a7ed76875eeebc37ce1fe9a59478a76
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Fri Feb 12 17:16:31 2016 -0200
manager: use GcalEvent on it's API
To make things consistend and clear, use the
GcalEvent class to handle events.
src/gcal-manager.c | 68 +++++++++++++++++++++++++++++++++------------------
src/gcal-manager.h | 12 +++------
src/gcal-window.c | 36 ++++++++-------------------
3 files changed, 59 insertions(+), 57 deletions(-)
---
diff --git a/src/gcal-manager.c b/src/gcal-manager.c
index 3e31b2c..2386be8 100644
--- a/src/gcal-manager.c
+++ b/src/gcal-manager.c
@@ -24,8 +24,7 @@
typedef struct
{
- ESource *source;
- ECalComponent *component;
+ GcalEvent *event;
GcalManager *manager;
} AsyncOpsData;
@@ -251,7 +250,7 @@ submit_thread_job (EThreadJobFunc func,
static void
free_async_ops_data (AsyncOpsData *data)
{
- g_object_unref (data->component);
+ g_object_unref (data->event);
g_free (data);
}
@@ -500,16 +499,18 @@ on_event_removed (GObject *source_object,
GError *error;
client = E_CAL_CLIENT (source_object);
-
error = NULL;
- if (!e_cal_client_remove_object_finish (client, result, &error))
+
+ e_cal_client_remove_object_finish (client, result, &error);
+
+ if (error)
{
/* FIXME: Notify the user somehow */
g_warning ("Error removing event: %s", error->message);
g_error_free (error);
}
- g_object_unref (E_CAL_COMPONENT (user_data));
+ g_object_unref (user_data);
}
void
@@ -1380,20 +1381,22 @@ gcal_manager_is_client_writable (GcalManager *manager,
void
gcal_manager_create_event (GcalManager *manager,
- ESource *source,
- ECalComponent *component)
+ GcalEvent *event)
{
GcalManagerUnit *unit;
icalcomponent *new_event_icalcomp;
+ ECalComponent *component;
AsyncOpsData *data;
+ ESource *source;
+ source = gcal_event_get_source (event);
+ component = gcal_event_get_component (event);
unit = g_hash_table_lookup (manager->clients, source);
new_event_icalcomp = e_cal_component_get_icalcomponent (component);
data = g_new0 (AsyncOpsData, 1);
- data->source = source;
- data->component = component;
+ data->event = g_object_ref (event);
data->manager = manager;
e_cal_client_create_object (unit->client,
@@ -1404,13 +1407,21 @@ gcal_manager_create_event (GcalManager *manager,
}
void
-gcal_manager_update_event (GcalManager *manager,
- ESource *source,
- ECalComponent *component)
+gcal_manager_update_event (GcalManager *manager,
+ GcalEvent *event)
{
GcalManagerUnit *unit;
+ ECalComponent *component;
- unit = (GcalManagerUnit*) g_hash_table_lookup (manager->clients, source);
+ unit = g_hash_table_lookup (manager->clients, gcal_event_get_source (event));
+ component = gcal_event_get_component (event);
+
+ /*
+ * While we're updating the event, we don't want the component
+ * to be destroyed, so take a reference of the component while
+ * we're performing the update on it.
+ */
+ g_object_ref (component);
e_cal_client_modify_object (unit->client,
e_cal_component_get_icalcomponent (component),
@@ -1422,15 +1433,23 @@ gcal_manager_update_event (GcalManager *manager,
void
gcal_manager_remove_event (GcalManager *manager,
- ESource *source,
- ECalComponent *component)
+ GcalEvent *event)
{
GcalManagerUnit *unit;
ECalComponentId *id;
+ ECalComponent *component;
- unit = g_hash_table_lookup (manager->clients, source);
+ component = gcal_event_get_component (event);
+ unit = g_hash_table_lookup (manager->clients, gcal_event_get_source (event));
id = e_cal_component_get_id (component);
+ /*
+ * While we're removing the event, we don't want the component
+ * to be destroyed, so take a reference of the component while
+ * we're deleting it.
+ */
+ g_object_ref (component);
+
e_cal_client_remove_object (unit->client,
id->uid,
id->rid,
@@ -1443,11 +1462,11 @@ gcal_manager_remove_event (GcalManager *manager,
}
void
-gcal_manager_move_event_to_source (GcalManager *manager,
- ECalComponent *component,
- ESource *source,
- ESource *dest)
+gcal_manager_move_event_to_source (GcalManager *manager,
+ GcalEvent *event,
+ ESource *dest)
{
+ ECalComponent *ecomponent;
ECalComponent *clone;
icalcomponent *comp;
GcalManagerUnit *unit;
@@ -1461,7 +1480,8 @@ gcal_manager_move_event_to_source (GcalManager *manager,
/* First, try to create the component on the destination source */
unit = g_hash_table_lookup (manager->clients, dest);
- clone = e_cal_component_clone (component);
+ ecomponent = gcal_event_get_component (event);
+ clone = e_cal_component_clone (ecomponent);
comp = e_cal_component_get_icalcomponent (clone);
e_cal_client_create_object_sync (unit->client,
@@ -1482,9 +1502,9 @@ gcal_manager_move_event_to_source (GcalManager *manager,
* created, try to remove the old component. Data loss it the last
* thing we want to happen here.
*/
- unit = g_hash_table_lookup (manager->clients, source);
+ unit = g_hash_table_lookup (manager->clients, gcal_event_get_source (event));
- id = e_cal_component_get_id (component);
+ id = e_cal_component_get_id (ecomponent);
e_cal_client_remove_object_sync (unit->client,
id->uid,
diff --git a/src/gcal-manager.h b/src/gcal-manager.h
index 92f3f0e..891b392 100644
--- a/src/gcal-manager.h
+++ b/src/gcal-manager.h
@@ -104,23 +104,19 @@ gboolean gcal_manager_is_client_writable (GcalManager *manager
/* Create method */
void gcal_manager_create_event (GcalManager *manager,
- ESource *source,
- ECalComponent *component);
+ GcalEvent *event);
/* Update method */
void gcal_manager_update_event (GcalManager *manager,
- ESource *source,
- ECalComponent *component);
+ GcalEvent *event);
/* Remove method */
void gcal_manager_remove_event (GcalManager *manager,
- ESource *source,
- ECalComponent *component);
+ GcalEvent *event);
/* Set methods */
void gcal_manager_move_event_to_source (GcalManager *manager,
- ECalComponent *component,
- ESource *source,
+ GcalEvent *event,
ESource *dest);
GList* gcal_manager_get_events (GcalManager *manager,
diff --git a/src/gcal-window.c b/src/gcal-window.c
index 90f8cb5..c04d6c9 100644
--- a/src/gcal-window.c
+++ b/src/gcal-window.c
@@ -708,9 +708,8 @@ show_new_event_widget (GcalView *view,
g_debug ("[show_new_event] position (%f, %f)", x, y);
/* Setup new event widget data */
- prepare_new_event_widget (GCAL_WINDOW (user_data));
-
- place_new_event_widget (GCAL_WINDOW (user_data), x, y);
+ prepare_new_event_widget (window);
+ place_new_event_widget (window, x, y);
}
static void
@@ -1071,8 +1070,9 @@ create_event (gpointer user_data,
GtkWidget *widget)
{
GcalWindow *window = GCAL_WINDOW (user_data);
- ESource *source;
ECalComponent *comp;
+ GcalEvent *event;
+ ESource *source;
/* reset and hide */
set_new_event_mode (GCAL_WINDOW (user_data), FALSE);
@@ -1081,12 +1081,10 @@ create_event (gpointer user_data,
comp = build_component_from_details (gtk_entry_get_text (GTK_ENTRY (window->new_event_what_entry)),
window->event_creation_data->start_date,
window->event_creation_data->end_date);
+ event = gcal_event_new (source, comp);
+
if (widget == window->new_event_details_button)
{
- GcalEvent *event;
-
- event = gcal_event_new (source, comp);
-
gcal_edit_dialog_set_event_is_new (GCAL_EDIT_DIALOG (window->edit_dialog), TRUE);
gcal_edit_dialog_set_event (GCAL_EDIT_DIALOG (window->edit_dialog), event);
g_object_unref (comp);
@@ -1096,7 +1094,7 @@ create_event (gpointer user_data,
else
{
/* create the event */
- gcal_manager_create_event (window->manager, source, comp);
+ gcal_manager_create_event (window->manager, event);
}
g_clear_object (&source);
@@ -1161,26 +1159,17 @@ edit_dialog_closed (GtkDialog *dialog,
switch (response)
{
case GCAL_RESPONSE_CREATE_EVENT:
- gcal_manager_create_event (window->manager,
- gcal_event_get_source (event),
- g_object_ref (gcal_event_get_component (event)));
-
+ gcal_manager_create_event (window->manager, event);
break;
case GCAL_RESPONSE_SAVE_EVENT:
- gcal_manager_update_event (window->manager,
- gcal_event_get_source (event),
- g_object_ref (gcal_event_get_component (event)));
-
+ gcal_manager_update_event (window->manager, event);
break;
case GCAL_RESPONSE_DELETE_EVENT:
if (window->event_to_delete != NULL)
{
- gcal_manager_remove_event (window->manager,
- gcal_event_get_source (window->event_to_delete),
- gcal_event_get_component (window->event_to_delete));
-
+ gcal_manager_remove_event (window->manager, window->event_to_delete);
g_clear_object (&window->event_to_delete);
create_notification (GCAL_WINDOW (user_data), _("Another event deleted"), _("Undo"));
@@ -1250,10 +1239,7 @@ remove_event (GtkWidget *notification,
if (window->event_to_delete != NULL)
{
- gcal_manager_remove_event (window->manager,
- gcal_event_get_source (window->event_to_delete),
- gcal_event_get_component (window->event_to_delete));
-
+ gcal_manager_remove_event (window->manager, window->event_to_delete);
g_clear_object (&window->event_to_delete);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]