Added done-edit signal to GcalToolbar.
Connected ::done-edit to GcalEventView widget. Minor geometry fixes.
This commit is contained in:
@@ -115,7 +115,6 @@ gcal_editable_reminder_constructed (GObject *object)
|
|||||||
"orientation", GTK_ORIENTATION_VERTICAL,
|
"orientation", GTK_ORIENTATION_VERTICAL,
|
||||||
"row-spacing", 6,
|
"row-spacing", 6,
|
||||||
"column-spacing", 6,
|
"column-spacing", 6,
|
||||||
"vexpand", FALSE,
|
|
||||||
"valign", GTK_ALIGN_START,
|
"valign", GTK_ALIGN_START,
|
||||||
NULL);
|
NULL);
|
||||||
gtk_grid_attach (GTK_GRID (priv->edit_widget), priv->left_box, 0, 0, 1, 1);
|
gtk_grid_attach (GTK_GRID (priv->edit_widget), priv->left_box, 0, 0, 1, 1);
|
||||||
|
|||||||
+28
-8
@@ -50,6 +50,8 @@ struct _GcalEventViewPrivate
|
|||||||
GtkWidget *attending_maybe;
|
GtkWidget *attending_maybe;
|
||||||
GtkWidget *attending_no;
|
GtkWidget *attending_no;
|
||||||
|
|
||||||
|
GtkWidget *delete_button;
|
||||||
|
|
||||||
GcalManager *manager;
|
GcalManager *manager;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -147,7 +149,7 @@ gcal_event_view_constructed (GObject *object)
|
|||||||
what = gtk_label_new (_("What"));
|
what = gtk_label_new (_("What"));
|
||||||
gtk_widget_set_halign (what, GTK_ALIGN_END);
|
gtk_widget_set_halign (what, GTK_ALIGN_END);
|
||||||
gtk_grid_attach (GTK_GRID (object), what, 0, 0, 1, 1);
|
gtk_grid_attach (GTK_GRID (object), what, 0, 0, 1, 1);
|
||||||
gtk_grid_attach (GTK_GRID (object), priv->e_what, 1, 0, 3, 1);
|
gtk_grid_attach (GTK_GRID (object), priv->e_what, 1, 0, 1, 1);
|
||||||
|
|
||||||
when = gtk_label_new (_("When"));
|
when = gtk_label_new (_("When"));
|
||||||
gtk_widget_set_valign (when, GTK_ALIGN_START);
|
gtk_widget_set_valign (when, GTK_ALIGN_START);
|
||||||
@@ -158,33 +160,43 @@ gcal_event_view_constructed (GObject *object)
|
|||||||
where = gtk_label_new (_("Where"));
|
where = gtk_label_new (_("Where"));
|
||||||
gtk_widget_set_halign (where, GTK_ALIGN_END);
|
gtk_widget_set_halign (where, GTK_ALIGN_END);
|
||||||
gtk_grid_attach (GTK_GRID (object), where, 0, 2, 1, 1);
|
gtk_grid_attach (GTK_GRID (object), where, 0, 2, 1, 1);
|
||||||
gtk_grid_attach (GTK_GRID (object), priv->e_where, 1, 2, 3, 1);
|
gtk_grid_attach (GTK_GRID (object), priv->e_where, 1, 2, 1, 1);
|
||||||
|
|
||||||
calendar = gtk_label_new (_("Calendar"));
|
calendar = gtk_label_new (_("Calendar"));
|
||||||
gtk_widget_set_halign (calendar, GTK_ALIGN_END);
|
gtk_widget_set_halign (calendar, GTK_ALIGN_END);
|
||||||
gtk_grid_attach (GTK_GRID (object), calendar, 0, 3, 1, 1);
|
gtk_grid_attach (GTK_GRID (object), calendar, 0, 3, 1, 1);
|
||||||
gtk_grid_attach (GTK_GRID (object), priv->cb_cal, 1, 3, 3, 1);
|
gtk_grid_attach (GTK_GRID (object), priv->cb_cal, 1, 3, 1, 1);
|
||||||
|
|
||||||
desc = gtk_label_new (_("Description"));
|
desc = gtk_label_new (_("Description"));
|
||||||
gtk_widget_set_halign (desc, GTK_ALIGN_END);
|
gtk_widget_set_halign (desc, GTK_ALIGN_END);
|
||||||
gtk_widget_set_valign (desc, GTK_ALIGN_START);
|
gtk_widget_set_valign (desc, GTK_ALIGN_START);
|
||||||
gtk_grid_attach (GTK_GRID (object), desc, 0, 4, 1, 1);
|
gtk_grid_attach (GTK_GRID (object), desc, 0, 4, 1, 1);
|
||||||
gtk_grid_attach (GTK_GRID (object), priv->t_desc, 1, 4, 3, 1);
|
gtk_grid_attach (GTK_GRID (object), priv->t_desc, 1, 4, 1, 1);
|
||||||
|
|
||||||
rem = gtk_label_new (_("Reminders"));
|
rem = gtk_label_new (_("Reminders"));
|
||||||
gtk_widget_set_halign (rem, GTK_ALIGN_END);
|
gtk_widget_set_halign (rem, GTK_ALIGN_END);
|
||||||
gtk_widget_set_valign (rem, GTK_ALIGN_START);
|
gtk_widget_set_valign (rem, GTK_ALIGN_START);
|
||||||
gtk_grid_attach (GTK_GRID (object), rem, 0, 5, 1, 1);
|
gtk_grid_attach (GTK_GRID (object), rem, 0, 5, 1, 1);
|
||||||
gtk_grid_attach (GTK_GRID (object), priv->reminders, 1, 5, 3, 1);
|
gtk_grid_attach (GTK_GRID (object), priv->reminders, 1, 5, 1, 1);
|
||||||
|
|
||||||
attending = gtk_label_new (_("Attending"));
|
attending = gtk_label_new (_("Attending"));
|
||||||
gtk_widget_set_halign (attending, GTK_ALIGN_END);
|
gtk_widget_set_halign (attending, GTK_ALIGN_END);
|
||||||
gtk_grid_attach (GTK_GRID (object), attending, 0, 6, 1, 1);
|
gtk_grid_attach (GTK_GRID (object), attending, 0, 6, 1, 1);
|
||||||
gtk_grid_attach (GTK_GRID (object), attending_box, 1, 6, 3, 1);
|
gtk_grid_attach (GTK_GRID (object), attending_box, 1, 6, 1, 1);
|
||||||
|
|
||||||
gtk_grid_set_row_spacing (GTK_GRID (object), 12);
|
priv->delete_button = gtk_button_new_with_label (_("Delete Event"));
|
||||||
gtk_grid_set_column_spacing (GTK_GRID (object), 12);
|
gtk_widget_set_halign (priv->delete_button, GTK_ALIGN_START);
|
||||||
|
gtk_widget_set_valign (priv->delete_button, GTK_ALIGN_END);
|
||||||
|
gtk_widget_set_hexpand (priv->delete_button, FALSE);
|
||||||
|
gtk_grid_attach (GTK_GRID (object), priv->delete_button, 1, 7, 1, 1);
|
||||||
|
|
||||||
|
g_object_set (object,
|
||||||
|
"row-spacing", 12,
|
||||||
|
"column-spacing", 12,
|
||||||
|
NULL);
|
||||||
gtk_widget_show_all (GTK_WIDGET (object));
|
gtk_widget_show_all (GTK_WIDGET (object));
|
||||||
|
|
||||||
|
gtk_widget_hide (priv->delete_button);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -282,6 +294,9 @@ gcal_event_view_update (GcalEventView *view)
|
|||||||
GCAL_EDITABLE_REMINDER (priv->reminders),
|
GCAL_EDITABLE_REMINDER (priv->reminders),
|
||||||
reminders);
|
reminders);
|
||||||
|
|
||||||
|
/* since this loading is for viewing, we hide delete_button */
|
||||||
|
gtk_widget_hide (priv->delete_button);
|
||||||
|
|
||||||
g_free (description);
|
g_free (description);
|
||||||
g_free (when);
|
g_free (when);
|
||||||
g_free (summary);
|
g_free (summary);
|
||||||
@@ -381,6 +396,9 @@ gcal_event_view_enter_edit_mode (GcalEventView *view)
|
|||||||
g_slist_foreach (priv->e_widgets,
|
g_slist_foreach (priv->e_widgets,
|
||||||
(GFunc) gcal_editable_enter_edit_mode,
|
(GFunc) gcal_editable_enter_edit_mode,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
/* showing delete button */
|
||||||
|
gtk_widget_show (priv->delete_button);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -402,4 +420,6 @@ gcal_event_view_leave_edit_mode (GcalEventView *view)
|
|||||||
g_slist_foreach (priv->e_widgets,
|
g_slist_foreach (priv->e_widgets,
|
||||||
(GFunc) gcal_editable_leave_edit_mode,
|
(GFunc) gcal_editable_leave_edit_mode,
|
||||||
NULL);
|
NULL);
|
||||||
|
|
||||||
|
gtk_widget_hide (priv->delete_button);
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-5
@@ -49,6 +49,7 @@ enum
|
|||||||
|
|
||||||
BACK,
|
BACK,
|
||||||
EDIT_EVENT,
|
EDIT_EVENT,
|
||||||
|
DONE_EDIT,
|
||||||
|
|
||||||
NUM_SIGNALS
|
NUM_SIGNALS
|
||||||
};
|
};
|
||||||
@@ -139,6 +140,16 @@ gcal_toolbar_class_init (GcalToolbarClass *klass)
|
|||||||
G_TYPE_NONE,
|
G_TYPE_NONE,
|
||||||
0);
|
0);
|
||||||
|
|
||||||
|
signals[DONE_EDIT] = g_signal_new ("done-edit",
|
||||||
|
GCAL_TYPE_TOOLBAR,
|
||||||
|
G_SIGNAL_RUN_LAST,
|
||||||
|
G_STRUCT_OFFSET (GcalToolbarClass,
|
||||||
|
done_edit),
|
||||||
|
NULL, NULL,
|
||||||
|
g_cclosure_marshal_VOID__VOID,
|
||||||
|
G_TYPE_NONE,
|
||||||
|
0);
|
||||||
|
|
||||||
g_type_class_add_private ((gpointer) klass, sizeof(GcalToolbarPrivate));
|
g_type_class_add_private ((gpointer) klass, sizeof(GcalToolbarPrivate));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -430,19 +441,22 @@ gcal_toolbar_set_event_mode (GcalToolbar *toolbar)
|
|||||||
/* edit */
|
/* edit */
|
||||||
if (priv->edit_button == NULL)
|
if (priv->edit_button == NULL)
|
||||||
{
|
{
|
||||||
priv->edit_button = gtk_button_new_with_label (_("Edit"));
|
priv->edit_button = gtk_toggle_button_new_with_label (_("Edit"));
|
||||||
g_object_ref_sink (priv->edit_button);
|
g_object_ref_sink (priv->edit_button);
|
||||||
|
|
||||||
context = gtk_widget_get_style_context (priv->edit_button);
|
context = gtk_widget_get_style_context (priv->edit_button);
|
||||||
gtk_style_context_add_class (context, "raised");
|
gtk_style_context_add_class (context, "raised");
|
||||||
|
|
||||||
g_signal_connect (priv->edit_button,
|
g_signal_connect (priv->edit_button,
|
||||||
"clicked",
|
"toggled",
|
||||||
G_CALLBACK (gcal_toolbar_event_edited),
|
G_CALLBACK (gcal_toolbar_event_edited),
|
||||||
toolbar);
|
toolbar);
|
||||||
}
|
}
|
||||||
/* reset morphing edit_button */
|
/* reset morphing edit_button */
|
||||||
gtk_button_set_label (GTK_BUTTON (priv->edit_button), _("Edit"));
|
gtk_button_set_label (GTK_BUTTON (priv->edit_button), _("Edit"));
|
||||||
|
g_signal_handlers_block_by_func (priv->edit_button, gcal_toolbar_event_edited, toolbar);
|
||||||
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->edit_button), FALSE);
|
||||||
|
g_signal_handlers_unblock_by_func (priv->edit_button, gcal_toolbar_event_edited, toolbar);
|
||||||
|
|
||||||
gtk_container_add (GTK_CONTAINER (priv->right_item), priv->edit_button);
|
gtk_container_add (GTK_CONTAINER (priv->right_item), priv->edit_button);
|
||||||
gtk_widget_show_all (priv->edit_button);
|
gtk_widget_show_all (priv->edit_button);
|
||||||
@@ -506,9 +520,16 @@ gcal_toolbar_event_edited (GtkWidget *button,
|
|||||||
priv = toolbar->priv;
|
priv = toolbar->priv;
|
||||||
|
|
||||||
/* morphing edit_button */
|
/* morphing edit_button */
|
||||||
gtk_button_set_label (GTK_BUTTON (priv->edit_button), _("Done"));
|
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button)))
|
||||||
|
{
|
||||||
g_signal_emit (toolbar, signals[EDIT_EVENT], 0);
|
g_signal_emit (toolbar, signals[EDIT_EVENT], 0);
|
||||||
|
gtk_button_set_label (GTK_BUTTON (priv->edit_button), _("Done"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_signal_emit (toolbar, signals[DONE_EDIT], 0);
|
||||||
|
gtk_button_set_label (GTK_BUTTON (priv->edit_button), _("Edit"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Public API */
|
/* Public API */
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ struct _GcalToolbarClass
|
|||||||
|
|
||||||
void (*back) (GcalToolbar *toolbar);
|
void (*back) (GcalToolbar *toolbar);
|
||||||
void (*edit_event) (GcalToolbar *toolbar);
|
void (*edit_event) (GcalToolbar *toolbar);
|
||||||
|
void (*done_edit) (GcalToolbar *toolbar);
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GcalToolbar
|
struct _GcalToolbar
|
||||||
|
|||||||
+30
-5
@@ -74,6 +74,9 @@ static void gcal_window_back_last_view (GcalToolbar *main_to
|
|||||||
static void gcal_window_edit_event (GcalToolbar *main_toolbar,
|
static void gcal_window_edit_event (GcalToolbar *main_toolbar,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
|
static void gcal_window_done_edit_event (GcalToolbar *main_toolbar,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
static void gcal_window_sources_row_activated (GtkTreeView *tree_view,
|
static void gcal_window_sources_row_activated (GtkTreeView *tree_view,
|
||||||
GtkTreePath *path,
|
GtkTreePath *path,
|
||||||
GtkTreeViewColumn *column,
|
GtkTreeViewColumn *column,
|
||||||
@@ -253,6 +256,10 @@ gcal_window_constructed (GObject *object)
|
|||||||
"edit-event",
|
"edit-event",
|
||||||
G_CALLBACK (gcal_window_edit_event),
|
G_CALLBACK (gcal_window_edit_event),
|
||||||
object);
|
object);
|
||||||
|
g_signal_connect (priv->main_toolbar,
|
||||||
|
"done-edit",
|
||||||
|
G_CALLBACK (gcal_window_done_edit_event),
|
||||||
|
object);
|
||||||
|
|
||||||
gtk_widget_show (embed);
|
gtk_widget_show (embed);
|
||||||
}
|
}
|
||||||
@@ -342,11 +349,13 @@ gcal_window_init_event_view (GcalWindow *window)
|
|||||||
|
|
||||||
priv->add_view = gcal_event_view_new_with_manager (
|
priv->add_view = gcal_event_view_new_with_manager (
|
||||||
gcal_window_get_manager (window));
|
gcal_window_get_manager (window));
|
||||||
gtk_widget_set_hexpand (priv->add_view, TRUE);
|
g_object_set (priv->add_view,
|
||||||
gtk_widget_set_vexpand (priv->add_view, TRUE);
|
"hexpand", TRUE,
|
||||||
gtk_widget_set_margin_top (priv->add_view, 10);
|
"vexpand", TRUE,
|
||||||
gtk_widget_set_margin_left (priv->add_view, 20);
|
"margin-top", 10,
|
||||||
gtk_widget_set_margin_right (priv->add_view, 20);
|
"margin-left", 20,
|
||||||
|
"margin-right", 20,
|
||||||
|
NULL);
|
||||||
|
|
||||||
gtk_widget_show (priv->add_view);
|
gtk_widget_show (priv->add_view);
|
||||||
gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
|
gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
|
||||||
@@ -421,6 +430,10 @@ gcal_window_add_event (GcalToolbar *main_toolbar,
|
|||||||
gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), priv->add_view));
|
gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), priv->add_view));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* FIXME: Take into account the event we're viewing could be in edit-mode and we
|
||||||
|
* need to advice the user and offers him to save/discard the changes
|
||||||
|
*/
|
||||||
static void
|
static void
|
||||||
gcal_window_back_last_view (GcalToolbar *main_toolbar,
|
gcal_window_back_last_view (GcalToolbar *main_toolbar,
|
||||||
gpointer user_data)
|
gpointer user_data)
|
||||||
@@ -457,12 +470,24 @@ gcal_window_edit_event (GcalToolbar *main_toolbar,
|
|||||||
if (priv->add_view == NULL)
|
if (priv->add_view == NULL)
|
||||||
gcal_window_init_event_view (GCAL_WINDOW (user_data));
|
gcal_window_init_event_view (GCAL_WINDOW (user_data));
|
||||||
|
|
||||||
|
//FIXME: check here, maybe this isn't need since edit-event
|
||||||
|
//can be triggered only from add_view
|
||||||
gtk_notebook_set_current_page (
|
gtk_notebook_set_current_page (
|
||||||
GTK_NOTEBOOK (priv->notebook),
|
GTK_NOTEBOOK (priv->notebook),
|
||||||
gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), priv->add_view));
|
gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), priv->add_view));
|
||||||
gcal_event_view_enter_edit_mode (GCAL_EVENT_VIEW (priv->add_view));
|
gcal_event_view_enter_edit_mode (GCAL_EVENT_VIEW (priv->add_view));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gcal_window_done_edit_event (GcalToolbar *main_toolbar,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GcalWindowPrivate *priv;
|
||||||
|
|
||||||
|
priv = GCAL_WINDOW (user_data)->priv;
|
||||||
|
gcal_event_view_leave_edit_mode (GCAL_EVENT_VIEW (priv->add_view));
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gcal_window_sources_row_activated (GtkTreeView *tree_view,
|
gcal_window_sources_row_activated (GtkTreeView *tree_view,
|
||||||
GtkTreePath *path,
|
GtkTreePath *path,
|
||||||
|
|||||||
Reference in New Issue
Block a user