[gnome-contacts] Support showing the calendar



commit 056f6ac24e838a78e875629d4f411df736b3331d
Author: Alexander Larsson <alexl redhat com>
Date:   Fri Jan 27 09:56:52 2012 +0100

    Support showing the calendar

 src/contacts-contact-pane.vala |    3 +++
 src/contacts-utils.vala        |   36 ++++++++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+), 0 deletions(-)
---
diff --git a/src/contacts-contact-pane.vala b/src/contacts-contact-pane.vala
index 6c3198d..91139bb 100644
--- a/src/contacts-contact-pane.vala
+++ b/src/contacts-contact-pane.vala
@@ -802,6 +802,9 @@ class Contacts.BirthdayFieldRow : DataFieldRow {
     button.set_relief (ReliefStyle.NONE);
     button.add (image);
     this.right_add (button);
+    button.clicked.connect ( () => {
+	Utils.show_calendar (details);
+      });
   }
 
   public override void update () {
diff --git a/src/contacts-utils.vala b/src/contacts-utils.vala
index c268042..774ddf9 100644
--- a/src/contacts-utils.vala
+++ b/src/contacts-utils.vala
@@ -206,4 +206,40 @@ public class Contacts.Utils : Object {
     entry.select_region (start, end);
   }
 
+  private static void spawn_app (GLib.Settings app_settings) {
+    var needs_term = app_settings.get_boolean("needs-term");
+    var exec = app_settings.get_string("exec");
+    if (needs_term) {
+      var terminal_settings = new GLib.Settings("org.gnome.desktop.default-applications.terminal");
+      var term = terminal_settings.get_string("exec");
+      var arg = terminal_settings.get_string("exec-arg");
+      string[] args;
+      if (arg != "")
+	args = {term, arg, exec, null};
+      else
+	args = {term, exec, null};
+
+      Process.spawn_async (null, args, null, SpawnFlags.SEARCH_PATH, null, null);
+    } else {
+      Process.spawn_command_line_async (exec);
+    }
+  }
+
+  public static void show_calendar (DateTime? day) {
+    var calendar_settings = new GLib.Settings("org.gnome.desktop.default-applications.office.calendar");
+    var exec = calendar_settings.get_string("exec");
+    if (exec == "" || exec == "evolution") {
+      string[] args = {"evolution", "-c", "calendar", null, null};
+
+      if (day != null) {
+	var d = day.to_local ();
+	var today = new DateTime.now_local ();
+	args[3] = "calendar:///?startdate=%.4d%.2d%.2d".printf (today.get_year (), d.get_month (), d.get_day_of_month ());
+      }
+
+      Process.spawn_async (null, args, null, SpawnFlags.SEARCH_PATH, null, null);
+    } else {
+      spawn_app (calendar_settings);
+    }
+  }
 }



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