From 4f689b22e642ced22798924de1cce47f8fe369e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erick=20P=C3=A9rez=20Castellanos?= Date: Thu, 5 Feb 2015 14:20:00 -0500 Subject: [PATCH] app: read uuid from cli option Use also a function to set the value of the event's uuid to show. --- src/gcal-application.c | 30 +++++++++++++++++++++++++++++- src/gcal-application.h | 5 ++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/gcal-application.c b/src/gcal-application.c index 9f5cc0bc..7aa158c8 100644 --- a/src/gcal-application.c +++ b/src/gcal-application.c @@ -45,6 +45,7 @@ struct _GcalApplicationPrivate GtkCssProvider *provider; GtkCssProvider *colors_provider; + gchar *uuid; icaltimetype *initial_date; }; @@ -95,6 +96,7 @@ G_DEFINE_TYPE_WITH_PRIVATE (GcalApplication, gcal_application, GTK_TYPE_APPLICAT static gboolean show_version = FALSE; static gchar* date = NULL; +static gchar* uuid = NULL; static GOptionEntry gcal_application_goptions[] = { { @@ -107,6 +109,11 @@ static GOptionEntry gcal_application_goptions[] = { G_OPTION_ARG_STRING, &date, N_("Open calendar on the passed date"), NULL }, + { + "uuid", 'u', 0, + G_OPTION_ARG_STRING, &uuid, + N_("Open calendar showing the passed event"), NULL + }, { NULL } }; @@ -258,6 +265,7 @@ gcal_application_finalize (GObject *object) { GcalApplicationPrivate *priv = GCAL_APPLICATION (object)->priv; + g_free (priv->uuid); if (priv->initial_date != NULL) g_free (priv->initial_date); @@ -338,6 +346,11 @@ gcal_application_activate (GApplication *application) /* FIXME: remove me in favor of gtk_widget_show() */ gtk_widget_show_all (priv->window); } + if (priv->uuid != NULL) + { + gcal_window_open_event_by_uuid (GCAL_WINDOW (priv->window), priv->uuid); + g_clear_pointer (&(priv->uuid), g_free); + } } static void @@ -384,7 +397,12 @@ gcal_application_command_line (GApplication *app, return 0; } - if (date != NULL) + if (uuid != NULL) + { + gcal_application_set_uuid (GCAL_APPLICATION (app), uuid); + g_clear_pointer (&uuid, g_free); + } + else if (date != NULL) { struct tm result; @@ -588,3 +606,13 @@ gcal_application_get_settings (GcalApplication *app) return app->priv->settings; } +void +gcal_application_set_uuid (GcalApplication *application, + const gchar *uuid) +{ + GcalApplicationPrivate *priv = application->priv; + + g_free (priv->uuid); + priv->uuid = g_strdup (uuid); +} + diff --git a/src/gcal-application.h b/src/gcal-application.h index 82d522ab..0e27c825 100644 --- a/src/gcal-application.h +++ b/src/gcal-application.h @@ -51,12 +51,11 @@ struct _GcalApplicationClass }; GType gcal_application_get_type (void) G_GNUC_CONST; - GcalApplication* gcal_application_new (void); - GcalManager* gcal_application_get_manager (GcalApplication *app); - GSettings* gcal_application_get_settings (GcalApplication *app); +void gcal_application_set_uuid (GcalApplication *application, + const gchar *uuid); G_END_DECLS