Added view action to application.
Added links to GcalWindow::active-view Added fix to GcalWindow for checking for child/events widgets in view before instantiation.
This commit is contained in:
+68
-3
@@ -31,6 +31,7 @@ struct _GcalApplicationPrivate
|
|||||||
{
|
{
|
||||||
GtkWidget *window;
|
GtkWidget *window;
|
||||||
|
|
||||||
|
GSimpleAction *view;
|
||||||
GSettings *settings;
|
GSettings *settings;
|
||||||
GcalManager *manager;
|
GcalManager *manager;
|
||||||
|
|
||||||
@@ -45,9 +46,18 @@ static void gcal_application_startup (GApplication *app);
|
|||||||
|
|
||||||
static void gcal_application_set_app_menu (GApplication *app);
|
static void gcal_application_set_app_menu (GApplication *app);
|
||||||
|
|
||||||
|
static void gcal_application_changed_view (GSettings *settings,
|
||||||
|
gchar *key,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
|
static void gcal_application_change_view (GSimpleAction *simple,
|
||||||
|
GVariant *parameter,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
static void gcal_application_show_about (GSimpleAction *simple,
|
static void gcal_application_show_about (GSimpleAction *simple,
|
||||||
GVariant *parameter,
|
GVariant *parameter,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
|
|
||||||
static void gcal_application_quit (GSimpleAction *simple,
|
static void gcal_application_quit (GSimpleAction *simple,
|
||||||
GVariant *parameter,
|
GVariant *parameter,
|
||||||
gpointer user_data);
|
gpointer user_data);
|
||||||
@@ -110,8 +120,7 @@ gcal_application_activate (GApplication *application)
|
|||||||
"active-view",
|
"active-view",
|
||||||
priv->window,
|
priv->window,
|
||||||
"active-view",
|
"active-view",
|
||||||
G_SETTINGS_BIND_SET | G_SETTINGS_BIND_GET
|
G_SETTINGS_BIND_SET | G_SETTINGS_BIND_GET);
|
||||||
| G_SETTINGS_BIND_GET_NO_CHANGES);
|
|
||||||
gtk_window_set_title (GTK_WINDOW (priv->window), _("Calendar"));
|
gtk_window_set_title (GTK_WINDOW (priv->window), _("Calendar"));
|
||||||
gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (priv->window),
|
gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (priv->window),
|
||||||
TRUE);
|
TRUE);
|
||||||
@@ -157,10 +166,35 @@ gcal_application_startup (GApplication *app)
|
|||||||
static void
|
static void
|
||||||
gcal_application_set_app_menu (GApplication *app)
|
gcal_application_set_app_menu (GApplication *app)
|
||||||
{
|
{
|
||||||
GMenu *app_menu = g_menu_new ();
|
GcalApplicationPrivate *priv;
|
||||||
|
|
||||||
|
GMenu *app_menu;
|
||||||
|
GMenu *view_as;
|
||||||
GSimpleAction *about;
|
GSimpleAction *about;
|
||||||
GSimpleAction *quit;
|
GSimpleAction *quit;
|
||||||
|
|
||||||
|
g_return_if_fail (GCAL_IS_APPLICATION (app));
|
||||||
|
priv = GCAL_APPLICATION (app)->priv;
|
||||||
|
|
||||||
|
app_menu = g_menu_new ();
|
||||||
|
|
||||||
|
priv->view = g_simple_action_new_stateful (
|
||||||
|
"view",
|
||||||
|
G_VARIANT_TYPE_STRING,
|
||||||
|
g_settings_get_value (priv->settings, "active-view"));
|
||||||
|
|
||||||
|
g_signal_connect (priv->view,
|
||||||
|
"activate",
|
||||||
|
G_CALLBACK (gcal_application_change_view),
|
||||||
|
app);
|
||||||
|
g_action_map_add_action ( G_ACTION_MAP (app), G_ACTION (priv->view));
|
||||||
|
|
||||||
|
view_as = g_menu_new ();
|
||||||
|
g_menu_append (view_as, _("Weeks"), "app.view::week");
|
||||||
|
g_menu_append (view_as, _("Months"), "app.view::month");
|
||||||
|
|
||||||
|
g_menu_append_section (app_menu, _("View as"), G_MENU_MODEL (view_as));
|
||||||
|
|
||||||
about = g_simple_action_new ("about", NULL);
|
about = g_simple_action_new ("about", NULL);
|
||||||
g_signal_connect (about,
|
g_signal_connect (about,
|
||||||
"activate",
|
"activate",
|
||||||
@@ -180,6 +214,33 @@ gcal_application_set_app_menu (GApplication *app)
|
|||||||
gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (app_menu));
|
gtk_application_set_app_menu (GTK_APPLICATION (app), G_MENU_MODEL (app_menu));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gcal_application_changed_view (GSettings *settings,
|
||||||
|
gchar *key,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GcalApplicationPrivate *priv;
|
||||||
|
|
||||||
|
g_return_if_fail (GCAL_IS_APPLICATION (user_data));
|
||||||
|
priv = GCAL_APPLICATION (user_data)->priv;
|
||||||
|
g_simple_action_set_state (priv->view,
|
||||||
|
g_settings_get_value (priv->settings,
|
||||||
|
"active-view"));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gcal_application_change_view (GSimpleAction *simple,
|
||||||
|
GVariant *parameter,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
GcalApplicationPrivate *priv;
|
||||||
|
|
||||||
|
g_return_if_fail (GCAL_IS_APPLICATION (user_data));
|
||||||
|
priv = GCAL_APPLICATION (user_data)->priv;
|
||||||
|
|
||||||
|
g_settings_set_value (priv->settings, "active-view", parameter);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gcal_application_show_about (GSimpleAction *simple,
|
gcal_application_show_about (GSimpleAction *simple,
|
||||||
GVariant *parameter,
|
GVariant *parameter,
|
||||||
@@ -215,6 +276,10 @@ gcal_application_new (void)
|
|||||||
"application-id", "org.gnome.Calendar",
|
"application-id", "org.gnome.Calendar",
|
||||||
NULL);
|
NULL);
|
||||||
app->priv->settings = g_settings_new ("org.gnome.calendar");
|
app->priv->settings = g_settings_new ("org.gnome.calendar");
|
||||||
|
g_signal_connect (app->priv->settings,
|
||||||
|
"changed::active-view",
|
||||||
|
G_CALLBACK (gcal_application_changed_view),
|
||||||
|
app);
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -767,7 +767,10 @@ gcal_window_events_added (GcalManager *manager,
|
|||||||
event_uid);
|
event_uid);
|
||||||
if (gcal_view_contains (
|
if (gcal_view_contains (
|
||||||
GCAL_VIEW (priv->views[priv->active_view]),
|
GCAL_VIEW (priv->views[priv->active_view]),
|
||||||
starting_date))
|
starting_date)
|
||||||
|
&& gcal_view_get_by_uuid (
|
||||||
|
GCAL_VIEW (priv->views[priv->active_view]),
|
||||||
|
(gchar*)l->data) == NULL)
|
||||||
{
|
{
|
||||||
summary = gcal_manager_get_event_summary (manager,
|
summary = gcal_manager_get_event_summary (manager,
|
||||||
source_uid,
|
source_uid,
|
||||||
|
|||||||
Reference in New Issue
Block a user