[gnome-shell/gnome-3-8] dateMenu: do not show "Open Calendar" button with no installed calendar application
- From: Lionel Landwerlin <llandwerlin src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gnome-3-8] dateMenu: do not show "Open Calendar" button with no installed calendar application
- Date: Mon, 6 May 2013 15:04:08 +0000 (UTC)
commit 4c350b90c7c136a9f799d8feafceeb5172b31da4
Author: Lionel Landwerlin <llandwerlin gmail com>
Date: Wed Apr 10 15:29:01 2013 +0100
dateMenu: do not show "Open Calendar" button with no installed calendar application
https://bugzilla.gnome.org/show_bug.cgi?id=697725
js/ui/dateMenu.js | 31 ++++++++++++++++++++++++-------
1 files changed, 24 insertions(+), 7 deletions(-)
---
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index 2613e58..32fdd59 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -100,7 +100,6 @@ const DateMenuButton = new Lang.Class({
Shell.AppSystem.get_default().connect('installed-changed',
Lang.bind(this, this._appInstalledChanged));
- this._appInstalledChanged();
item = this.menu.addSettingsAction(_("Date & Time Settings"), 'gnome-datetime-panel.desktop');
if (item) {
@@ -157,14 +156,16 @@ const DateMenuButton = new Lang.Class({
},
_appInstalledChanged: function() {
- let app = Shell.AppSystem.get_default().lookup_app('gnome-clocks.desktop');
- this._openClocksItem.actor.visible = app !== null;
+ this._calendarApp = undefined;
+ this._updateEventsVisibility();
},
_updateEventsVisibility: function() {
let visible = this._eventSource.hasCalendars;
- this._openCalendarItem.actor.visible = visible;
- this._openClocksItem.actor.visible = visible;
+ this._openCalendarItem.actor.visible = visible &&
+ (this._getCalendarApp() != null);
+ this._openClocksItem.actor.visible = visible &&
+ (this._getClockApp() != null);
this._separator.visible = visible;
if (visible) {
let alignment = 0.25;
@@ -217,10 +218,26 @@ const DateMenuButton = new Lang.Class({
this._date.set_text(displayDate.toLocaleFormat(dateFormat));
},
+ _getCalendarApp: function() {
+ if (this._calendarApp !== undefined)
+ return this._calendarApp;
+
+ let apps = Gio.AppInfo.get_recommended_for_type('text/calendar');
+ if (apps && (apps.length > 0))
+ this._calendarApp = apps[0];
+ else
+ this._calendarApp = null;
+ return this._calendarApp;
+ },
+
+ _getClockApp: function() {
+ return Shell.AppSystem.get_default().lookup_app('gnome-clocks.desktop');
+ },
+
_onOpenCalendarActivate: function() {
this.menu.close();
- let app = Gio.AppInfo.get_default_for_type('text/calendar', false);
+ let app = this._getCalendarApp();
if (app.get_id() == 'evolution.desktop')
app = Gio.DesktopAppInfo.new('evolution-calendar.desktop');
app.launch([], global.create_app_launch_context());
@@ -228,7 +245,7 @@ const DateMenuButton = new Lang.Class({
_onOpenClocksActivate: function() {
this.menu.close();
- let app = Shell.AppSystem.get_default().lookup_app('gnome-clocks.desktop');
+ let app = this._getClockApp();
app.activate();
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]