[gnome-calendar] app: read uuid from cli option



commit 4f689b22e642ced22798924de1cce47f8fe369e2
Author: Erick Pérez Castellanos <erick red gmail com>
Date:   Thu Feb 5 14:20:00 2015 -0500

    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 9f5cc0b..7aa158c 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 82d522a..0e27c82 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
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]