Glue code for using those editable widgets.

Added GcalEventWidget::activated signal.
Fixed bug in GcalMonthView preventing to get button events.
Added methods in GcalUtils from Evo for formatting time.
..and stuff
This commit is contained in:
Erick Pérez Castellanos
2012-07-03 15:20:00 -04:00
parent 5c47b9312c
commit 39ed044ca5
6 changed files with 312 additions and 39 deletions
+61 -21
View File
@@ -55,6 +55,8 @@ GcalManager* gcal_window_get_manager (GcalWindow *window)
static void gcal_window_set_sources_view (GcalWindow *window);
static void gcal_window_init_event_view (GcalWindow *window);
static void gcal_window_view_changed (GcalToolbar *main_toolbar,
GcalViewTypeEnum view_type,
gpointer user_data);
@@ -75,6 +77,9 @@ static void gcal_window_events_added (GcalManager *manager
gpointer events_list,
gpointer user_data);
static void gcal_window_event_activated (GcalEventWidget *event_widget,
gpointer user_data);
G_DEFINE_TYPE(GcalWindow, gcal_window, GTK_TYPE_APPLICATION_WINDOW)
static void
@@ -306,6 +311,28 @@ gcal_window_set_sources_view (GcalWindow *window)
window);
}
static void
gcal_window_init_event_view (GcalWindow *window)
{
GcalWindowPrivate *priv;
g_return_if_fail (GCAL_IS_WINDOW (window));
priv = window->priv;
priv->add_view = gcal_event_view_new_with_manager (
gcal_window_get_manager (window));
gtk_widget_set_hexpand (priv->add_view, TRUE);
gtk_widget_set_vexpand (priv->add_view, TRUE);
gtk_widget_set_margin_top (priv->add_view, 10);
gtk_widget_set_margin_left (priv->add_view, 20);
gtk_widget_set_margin_right (priv->add_view, 20);
gtk_widget_show (priv->add_view);
gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
priv->add_view,
NULL);
}
static void
gcal_window_view_changed (GcalToolbar *main_toolbar,
GcalViewTypeEnum view_type,
@@ -365,28 +392,12 @@ gcal_window_add_event (GcalToolbar *main_toolbar,
priv = GCAL_WINDOW (user_data)->priv;
if (priv->add_view == NULL)
{
priv->add_view = gcal_event_view_new_with_manager (
gcal_window_get_manager (GCAL_WINDOW (user_data)));
gtk_widget_set_hexpand (priv->add_view, TRUE);
gtk_widget_set_vexpand (priv->add_view, TRUE);
gtk_widget_set_margin_top (priv->add_view, 10);
gtk_widget_set_margin_left (priv->add_view, 20);
gtk_widget_set_margin_right (priv->add_view, 20);
gcal_window_init_event_view (GCAL_WINDOW (user_data));
gtk_widget_show (priv->add_view);
gtk_notebook_append_page (GTK_NOTEBOOK (priv->notebook),
priv->add_view,
NULL);
gtk_notebook_set_current_page (GTK_NOTEBOOK (priv->notebook), -1);
}
else
{
//TODO: Reload/clean/reinitialize status
gtk_notebook_set_current_page (
GTK_NOTEBOOK (priv->notebook),
gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), priv->add_view));
}
//TODO: Reload/clean/reinitialize status
gtk_notebook_set_current_page (
GTK_NOTEBOOK (priv->notebook),
gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), priv->add_view));
}
static void
@@ -471,6 +482,12 @@ gcal_window_events_added (GcalManager *manager,
event);
gtk_style_context_add_class (gtk_widget_get_style_context (event),
"event");
g_signal_connect (event,
"activated",
G_CALLBACK (gcal_window_event_activated),
user_data);
g_free (summary);
gdk_rgba_free (color);
}
@@ -484,6 +501,29 @@ gcal_window_events_added (GcalManager *manager,
}
}
static void
gcal_window_event_activated (GcalEventWidget *event_widget,
gpointer user_data)
{
GcalWindowPrivate *priv;
g_return_if_fail (GCAL_IS_WINDOW (user_data));
priv = GCAL_WINDOW (user_data)->priv;
g_debug ("event_activated: %s", gcal_event_widget_peek_uuid (event_widget));
if (priv->add_view == NULL)
gcal_window_init_event_view (GCAL_WINDOW (user_data));
gtk_notebook_set_current_page (
GTK_NOTEBOOK (priv->notebook),
gtk_notebook_page_num (GTK_NOTEBOOK (priv->notebook), priv->add_view));
gcal_event_view_load_event (GCAL_EVENT_VIEW (priv->add_view),
gcal_event_widget_peek_uuid (event_widget));
}
/* Public API */
GtkWidget*
gcal_window_new (GcalApplication *app)
{