[gnome-shell] dateMenu: Hide "Open Calendar" item if calendar unavailable
- From: Florian MÃllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] dateMenu: Hide "Open Calendar" item if calendar unavailable
- Date: Sat, 13 Oct 2012 12:42:49 +0000 (UTC)
commit 4342155748249e0090850c084223f226de619777
Author: Florian MÃllner <fmuellner gnome org>
Date: Fri Oct 12 20:59:31 2012 +0200
dateMenu: Hide "Open Calendar" item if calendar unavailable
The configured calendar application might not actually be installed.
Instead of failing with an error message, hide the menu item altogether
in this case.
https://bugzilla.gnome.org/show_bug.cgi?id=686050
js/ui/dateMenu.js | 16 +++++++++++++---
1 files changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index 7f01a76..7b762b3 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -113,6 +113,11 @@ const DateMenuButton = new Lang.Class({
this._openCalendarItem.actor.can_focus = false;
vbox.add(this._openCalendarItem.actor, {y_align: St.Align.END, expand: true, y_fill: false});
+ this._calendarSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.office.calendar' });
+ this._calendarSettings.connect('changed::exec',
+ Lang.bind(this, this._calendarSettingsChanged));
+ this._calendarSettingsChanged();
+
// Whenever the menu is opened, select today
this.menu.connect('open-state-changed', Lang.bind(this, function(menu, isOpen) {
if (isOpen) {
@@ -146,6 +151,12 @@ const DateMenuButton = new Lang.Class({
this._sessionUpdated();
},
+ _calendarSettingsChanged: function() {
+ let exec = this._calendarSettings.get_string('exec');
+ let fullExec = GLib.find_program_in_path(exec);
+ this._openCalendarItem.actor.visible = fullExec != null;
+ },
+
_setEventsVisibility: function(visible) {
this._openCalendarItem.actor.visible = visible;
this._separator.visible = visible;
@@ -194,14 +205,13 @@ const DateMenuButton = new Lang.Class({
_onOpenCalendarActivate: function() {
this.menu.close();
- let calendarSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.office.calendar' });
- let tool = calendarSettings.get_string('exec');
+ let tool = this._calendarSettings.get_string('exec');
if (tool.length == 0 || tool.substr(0, 9) == 'evolution') {
// TODO: pass the selected day
let app = Shell.AppSystem.get_default().lookup_app('evolution-calendar.desktop');
app.activate();
} else {
- let needTerm = calendarSettings.get_boolean('needs-term');
+ let needTerm = this._calendarSettings.get_boolean('needs-term');
if (needTerm) {
let terminalSettings = new Gio.Settings({ schema: 'org.gnome.desktop.default-applications.terminal' });
let term = terminalSettings.get_string('exec');
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]