[gnome-contacts] Support showing the calendar
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-contacts] Support showing the calendar
- Date: Fri, 27 Jan 2012 08:57:09 +0000 (UTC)
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]