Support showing the calendar

This commit is contained in:
Alexander Larsson 2012-01-27 09:56:52 +01:00
parent d4d7f7d4a8
commit 056f6ac24e
2 changed files with 39 additions and 0 deletions

View file

@ -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 () {

View file

@ -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);
}
}
}