[gnome-shell] clock: Switch to using GnomeWallClock, delete clock GSettings controls



commit ef0aa65774af02ef86d6b131b336c3914c6daf97
Author: Colin Walters <walters verbum org>
Date:   Sun Aug 21 03:31:16 2011 -0400

    clock: Switch to using GnomeWallClock, delete clock GSettings controls
    
    This avoids us having to poll once a second, among other things.  For
    more information, see the linked bug chain.
    
    See https://bugzilla.gnome.org/show_bug.cgi?id=657958 for the new
    clock keys.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=657074

 data/org.gnome.shell.gschema.xml.in.in |   19 --------
 js/ui/dateMenu.js                      |   76 +++-----------------------------
 2 files changed, 7 insertions(+), 88 deletions(-)
---
diff --git a/data/org.gnome.shell.gschema.xml.in.in b/data/org.gnome.shell.gschema.xml.in.in
index db23eda..ac4a1e3 100644
--- a/data/org.gnome.shell.gschema.xml.in.in
+++ b/data/org.gnome.shell.gschema.xml.in.in
@@ -61,7 +61,6 @@ value here is from the TpConnectionPresenceType enumeration.</_summary>
       <_summary>Internally used to store the last session presence status for the user. The
 value here is from the GsmPresenceStatus enumeration.</_summary>
     </key>
-    <child name="clock" schema="org.gnome.shell.clock"/>
     <child name="calendar" schema="org.gnome.shell.calendar"/>
     <child name="recorder" schema="org.gnome.shell.recorder"/>
     <child name="keybindings" schema="org.gnome.shell.keybindings"/>
@@ -108,24 +107,6 @@ value here is from the GsmPresenceStatus enumeration.</_summary>
     </key>
   </schema>
 
-  <schema id="org.gnome.shell.clock" path="/org/gnome/shell/clock/"
-          gettext-domain="@GETTEXT_PACKAGE@">
-    <key name="show-seconds" type="b">
-      <default>false</default>
-      <_summary>Show time with seconds</_summary>
-      <_description>
-        If true, display seconds in time.
-      </_description>
-    </key>
-    <key name="show-date" type="b">
-      <default>false</default>
-      <_summary>Show date in clock</_summary>
-      <_description>
-        If true, display date in the clock, in addition to time.
-      </_description>
-    </key>
-  </schema>
-
   <schema id="org.gnome.shell.recorder" path="/org/gnome/shell/recorder/"
           gettext-domain="@GETTEXT_PACKAGE@">
     <key name="framerate" type="i">
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index 656ac0e..878cd35 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -2,6 +2,7 @@
 
 const GLib = imports.gi.GLib;
 const Gio = imports.gi.Gio;
+const GnomeDesktop = imports.gi.GnomeDesktop;
 const Lang = imports.lang;
 const Mainloop = imports.mainloop;
 const Cairo = imports.cairo;
@@ -16,14 +17,6 @@ const Main = imports.ui.main;
 const PanelMenu = imports.ui.panelMenu;
 const PopupMenu = imports.ui.popupMenu;
 const Calendar = imports.ui.calendar;
-const UPowerGlib = imports.gi.UPowerGlib;
-
-// in org.gnome.desktop.interface
-const CLOCK_FORMAT_KEY        = 'clock-format';
-
-// in org.gnome.shell.clock
-const CLOCK_SHOW_DATE_KEY     = 'show-date';
-const CLOCK_SHOW_SECONDS_KEY  = 'show-seconds';
 
 function _onVertSepRepaint (area)
 {
@@ -60,8 +53,8 @@ const DateMenuButton = new Lang.Class({
         // role ATK_ROLE_MENU like other elements of the panel.
         this.actor.accessible_role = Atk.Role.LABEL;
 
-        this._clock = new St.Label();
-        this.actor.add_actor(this._clock);
+        this._clockDisplay = new St.Label();
+        this.actor.add_actor(this._clockDisplay);
 
         hbox = new St.BoxLayout({name: 'calendarArea' });
         this.menu.addActor(hbox);
@@ -73,7 +66,7 @@ const DateMenuButton = new Lang.Class({
 
         // Date
         this._date = new St.Label();
-        this.actor.label_actor = this._clock;
+        this.actor.label_actor = this._clockDisplay;
         this._date.style_class = 'datemenu-date-label';
         vbox.add(this._date);
 
@@ -155,68 +148,13 @@ const DateMenuButton = new Lang.Class({
 
         // Done with hbox for calendar and event list
 
-        // Track changes to clock settings
-        this._desktopSettings = new Gio.Settings({ schema: 'org.gnome.desktop.interface' });
-        this._clockSettings = new Gio.Settings({ schema: 'org.gnome.shell.clock' });
-        this._desktopSettings.connect('changed', Lang.bind(this, this._updateClockAndDate));
-        this._clockSettings.connect('changed', Lang.bind(this, this._updateClockAndDate));
-
-        // https://bugzilla.gnome.org/show_bug.cgi?id=655129
-        this._upClient = new UPowerGlib.Client();
-        this._upClient.connect('notify-resume', Lang.bind(this, this._updateClockAndDate));
-
-        // Start the clock
+        this._clock = new GnomeDesktop.WallClock();
+        this._clock.connect('notify::clock', Lang.bind(this, this._updateClockAndDate));
         this._updateClockAndDate();
     },
 
     _updateClockAndDate: function() {
-        let format = this._desktopSettings.get_string(CLOCK_FORMAT_KEY);
-        let showDate = this._clockSettings.get_boolean(CLOCK_SHOW_DATE_KEY);
-        let showSeconds = this._clockSettings.get_boolean(CLOCK_SHOW_SECONDS_KEY);
-
-        let clockFormat;
-        let dateFormat;
-
-        switch (format) {
-            case '24h':
-                if (showDate)
-                    /* Translators: This is the time format with date used
-                       in 24-hour mode. */
-                    clockFormat = showSeconds ? _("%a %b %e, %R:%S")
-                                              : _("%a %b %e, %R");
-                else
-                    /* Translators: This is the time format without date used
-                       in 24-hour mode. */
-                    clockFormat = showSeconds ? _("%a %R:%S")
-                                              : _("%a %R");
-                break;
-            case '12h':
-            default:
-                if (showDate)
-                    /* Translators: This is a time format with date used
-                       for AM/PM. */
-                    clockFormat = showSeconds ? _("%a %b %e, %l:%M:%S %p")
-                                              : _("%a %b %e, %l:%M %p");
-                else
-                    /* Translators: This is a time format without date used
-                       for AM/PM. */
-                    clockFormat = showSeconds ? _("%a %l:%M:%S %p")
-                                              : _("%a %l:%M %p");
-                break;
-        }
-
-        let displayDate = new Date();
-
-        this._clock.set_text(displayDate.toLocaleFormat(clockFormat));
-
-        /* Translators: This is the date format to use when the calendar popup is
-         * shown - it is shown just below the time in the shell (e.g. "Tue 9:29 AM").
-         */
-        dateFormat = _("%A %B %e, %Y");
-        this._date.set_text(displayDate.toLocaleFormat(dateFormat));
-
-        Mainloop.timeout_add_seconds(1, Lang.bind(this, this._updateClockAndDate));
-        return false;
+        this._clockDisplay.set_text(this._clock.clock);
     },
 
     _onOpenCalendarActivate: function() {



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