Added support to obtain properties of the event

Added very initial support to handle obtention of the modified properties
of the edited event. There's still some kind of Model implementation to keep
track of the changes made by the user.
This commit is contained in:
Erick Pérez Castellanos
2012-10-10 15:55:18 -04:00
parent 21088e7fb9
commit 20eccc8a31
3 changed files with 110 additions and 9 deletions
+82 -1
View File
@@ -108,6 +108,8 @@ gcal_edit_dialog_constructed (GObject* object)
GcalEditDialogPrivate *priv;
GtkWidget *content_area;
GtkWidget *child;
GtkSizeGroup *size_group;
GtkWidget *action_area;
GtkWidget *button;
@@ -244,10 +246,12 @@ gcal_edit_dialog_constructed (GObject* object)
gtk_widget_show_all (content_area);
/* action area, buttons */
size_group = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
action_area = gtk_dialog_get_action_area (GTK_DIALOG (object));
gtk_box_set_spacing (GTK_BOX (action_area), 6);
button = gtk_button_new_from_stock (GTK_STOCK_CANCEL);
gtk_size_group_add_widget (size_group, button);
gtk_widget_set_can_default (button, TRUE);
g_object_set_data (G_OBJECT (button),
"response",
@@ -262,6 +266,7 @@ gcal_edit_dialog_constructed (GObject* object)
TRUE);
priv->delete_button = gtk_button_new ();
gtk_size_group_add_widget (size_group, priv->delete_button);
gtk_container_add (
GTK_CONTAINER (priv->delete_button),
gtk_image_new_from_icon_name ("user-trash-symbolic",
@@ -281,6 +286,7 @@ gcal_edit_dialog_constructed (GObject* object)
/* done button */
button = gtk_button_new_with_label (_("Done"));
gtk_size_group_add_widget (size_group, button);
gtk_widget_set_can_default (button, TRUE);
g_object_set_data (G_OBJECT (button),
"response",
@@ -294,6 +300,9 @@ gcal_edit_dialog_constructed (GObject* object)
"suggested-action");
gtk_box_pack_end (GTK_BOX (action_area), button, TRUE, TRUE, 0);
g_object_unref (size_group);
g_debug ("Added size_group");
gtk_widget_show_all (action_area);
gtk_widget_pop_composite_child ();
@@ -611,9 +620,10 @@ gcal_edit_dialog_set_event (GcalEditDialog *dialog,
g_free (priv->event_uid);
priv->event_uid = g_strdup (event_uid);
/* Load event data */
/* Clear event data */
gcal_edit_dialog_clear_data (dialog);
/* Load new event data */
/* summary */
text = gcal_manager_get_event_summary (priv->manager,
priv->source_uid,
@@ -791,6 +801,24 @@ gcal_edit_dialog_set_manager (GcalEditDialog *dialog,
gtk_widget_show_all (GTK_WIDGET (menu));
}
const gchar*
gcal_edit_dialog_peek_source_uid (GcalEditDialog *dialog)
{
GcalEditDialogPrivate *priv;
priv = dialog->priv;
return priv->source_uid;
}
const gchar*
gcal_edit_dialog_peek_event_uid (GcalEditDialog *dialog)
{
GcalEditDialogPrivate *priv;
priv = dialog->priv;
return priv->event_uid;
}
gchar*
gcal_edit_dialog_get_event_uuid (GcalEditDialog *dialog)
{
@@ -805,3 +833,56 @@ gcal_edit_dialog_get_event_uuid (GcalEditDialog *dialog)
}
return g_strdup_printf ("%s:%s", priv->source_uid, priv->event_uid);
}
GList*
gcal_edit_dialog_get_modified_properties (GcalEditDialog *dialog)
{
/* FIXME: Implement some kind of backend/model here */
GList *res;
/* FIXME: Instead of always add SUMMARY check if was modified
by checking against some kind of model */
res = NULL;
res = g_list_append (res, GINT_TO_POINTER (EVENT_SUMMARY));
/* res = g_list_append (res, GINT_TO_POINTER (EVENT_START_DATE)); */
res = g_list_append (res, GINT_TO_POINTER (EVENT_LOCATION));
res = g_list_append (res, GINT_TO_POINTER (EVENT_DESCRIPTION));
return res;
}
const gchar*
gcal_edit_dialog_peek_summary (GcalEditDialog *dialog)
{
GcalEditDialogPrivate *priv;
priv = dialog->priv;
return gtk_entry_get_text (GTK_ENTRY (priv->summary_entry));
}
const gchar*
gcal_edit_dialog_peek_location (GcalEditDialog *dialog)
{
GcalEditDialogPrivate *priv;
priv = dialog->priv;
return gtk_entry_get_text (GTK_ENTRY (priv->location_entry));
}
gchar*
gcal_edit_dialog_get_event_description (GcalEditDialog *dialog)
{
GcalEditDialogPrivate *priv;
GtkTextBuffer *buffer;
GtkTextIter start_iter;
GtkTextIter end_iter;
gchar *desc;
priv = dialog->priv;
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->notes_text));
gtk_text_buffer_get_start_iter (buffer, &start_iter);
gtk_text_buffer_get_end_iter (buffer, &end_iter);
desc = gtk_text_buffer_get_text (buffer, &start_iter, &end_iter, FALSE);
return desc;
}
+20 -8
View File
@@ -53,18 +53,30 @@ struct _GcalEditDialogClass
};
GType gcal_edit_dialog_get_type (void);
GType gcal_edit_dialog_get_type (void);
GtkWidget* gcal_edit_dialog_new (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 (GcalEditDialog *dialog,
const gchar *source_uid,
const gchar *event_uid);
void gcal_edit_dialog_set_manager (GcalEditDialog *dialog,
GcalManager *manager);
void gcal_edit_dialog_set_manager (GcalEditDialog *dialog,
GcalManager *manager);
gchar* gcal_edit_dialog_get_event_uuid (GcalEditDialog *dialog);
const gchar* gcal_edit_dialog_peek_source_uid (GcalEditDialog *dialog);
const gchar* gcal_edit_dialog_peek_event_uid (GcalEditDialog *dialog);
gchar* gcal_edit_dialog_get_event_uuid (GcalEditDialog *dialog);
GList* gcal_edit_dialog_get_modified_properties (GcalEditDialog *dialog);
const gchar* gcal_edit_dialog_peek_summary (GcalEditDialog *dialog);
const gchar* gcal_edit_dialog_peek_location (GcalEditDialog *dialog);
gchar* gcal_edit_dialog_get_event_description (GcalEditDialog *dialog);
G_END_DECLS
+8
View File
@@ -46,6 +46,14 @@ typedef enum
GCAL_VIEW_MODE,
} GcalEditableMode;
typedef enum
{
EVENT_SUMMARY = 0,
EVENT_START_DATE,
EVENT_LOCATION,
EVENT_DESCRIPTION,
} EventEditableProperty;
typedef
const gchar* (*GcalTranslateFunc) (GtkWidget *source_widget);