From ef716a7eb5c7d0e98e61dc8d260d97e99254f68a Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Thu, 28 Nov 2019 18:16:53 -0300 Subject: [PATCH] screenShield: Move clock to Unlock Dialog Move the Screen Shield clock to Unlock Dialog. Also adjust the CSS style classes names to match the new owner. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/872 --- data/theme/gnome-shell-sass/_common.scss | 6 +-- js/ui/screenShield.js | 47 +-------------------- js/ui/unlockDialog.js | 52 +++++++++++++++++++++++- 3 files changed, 54 insertions(+), 51 deletions(-) diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss index 5dac4d6fc..df530ede6 100644 --- a/data/theme/gnome-shell-sass/_common.scss +++ b/data/theme/gnome-shell-sass/_common.scss @@ -2049,7 +2049,7 @@ StScrollBar { $_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726); -.screen-shield-clock { +.unlock-dialog-clock { color: white; text-shadow: $_screenshield_shadow; font-weight: bold; @@ -2057,13 +2057,13 @@ $_screenshield_shadow: 0px 0px 6px rgba(0, 0, 0, 0.726); padding-bottom: 1.5em; } -.screen-shield-clock-time { +.unlock-dialog-clock-time { font-size: 72pt; text-shadow: $_screenshield_shadow; font-feature-settings: "tnum"; } -.screen-shield-clock-date { +.unlock-dialog-clock-date { font-size: 28pt; font-weight: normal; } diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index 3e2bc90dc..871e8211c 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -1,7 +1,7 @@ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- const { AccountsService, Clutter, Gio, GLib, - GnomeDesktop, GObject, Graphene, Meta, Shell, St } = imports.gi; + GObject, Graphene, Meta, Shell, St } = imports.gi; const Signals = imports.signals; const Background = imports.ui.background; @@ -45,46 +45,6 @@ var STANDARD_FADE_TIME = 10000; var MANUAL_FADE_TIME = 300; var CURTAIN_SLIDE_TIME = 300; -var Clock = GObject.registerClass( -class ScreenShieldClock extends St.BoxLayout { - _init() { - super._init({ style_class: 'screen-shield-clock', vertical: true }); - - this._time = new St.Label({ - style_class: 'screen-shield-clock-time', - x_align: Clutter.ActorAlign.CENTER, - }); - this._date = new St.Label({ - style_class: 'screen-shield-clock-date', - x_align: Clutter.ActorAlign.CENTER, - }); - - this.add_child(this._time); - this.add_child(this._date); - - this._wallClock = new GnomeDesktop.WallClock({ time_only: true }); - this._wallClock.connect('notify::clock', this._updateClock.bind(this)); - - this._updateClock(); - - this.connect('destroy', this._onDestroy.bind(this)); - } - - _updateClock() { - this._time.text = this._wallClock.clock; - - let date = new Date(); - /* Translators: This is a time format for a date in - long format */ - let dateFormat = Shell.util_translate_time_string(N_("%A, %B %d")); - this._date.text = date.toLocaleFormat(dateFormat); - } - - _onDestroy() { - this._wallClock.run_dispose(); - } -}); - var NotificationsBox = GObject.registerClass({ Signals: { 'wake-up-screen': {} }, }, class NotificationsBox extends St.BoxLayout { @@ -972,8 +932,6 @@ var ScreenShield = class { y_expand: true, vertical: true, style_class: 'screen-shield-contents-box' }); - this._clock = new Clock(); - this._lockScreenContentsBox.add_child(this._clock); this._lockScreenContents.add_actor(this._lockScreenContentsBox); @@ -990,9 +948,6 @@ var ScreenShield = class { } _clearLockScreen() { - this._clock.destroy(); - this._clock = null; - if (this._notificationsBox) { this._notificationsBox.disconnect(this._wakeUpScreenId); this._notificationsBox.destroy(); diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js index 6584bea45..d413fcd33 100644 --- a/js/ui/unlockDialog.js +++ b/js/ui/unlockDialog.js @@ -1,8 +1,8 @@ // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- /* exported UnlockDialog */ -const { AccountsService, Atk, Clutter, - Gdm, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; +const { AccountsService, Atk, Clutter, Gdm, Gio, + GnomeDesktop, GLib, GObject, Meta, Shell, St } = imports.gi; const Layout = imports.ui.layout; const Main = imports.ui.main; @@ -12,6 +12,46 @@ const AuthPrompt = imports.gdm.authPrompt; // The timeout before going back automatically to the lock screen (in seconds) const IDLE_TIMEOUT = 2 * 60; +var Clock = GObject.registerClass( +class UnlockDialogClock extends St.BoxLayout { + _init() { + super._init({ style_class: 'unlock-dialog-clock', vertical: true }); + + this._time = new St.Label({ + style_class: 'unlock-dialog-clock-time', + x_align: Clutter.ActorAlign.CENTER, + }); + this._date = new St.Label({ + style_class: 'unlock-dialog-clock-date', + x_align: Clutter.ActorAlign.CENTER, + }); + + this.add_child(this._time); + this.add_child(this._date); + + this._wallClock = new GnomeDesktop.WallClock({ time_only: true }); + this._wallClock.connect('notify::clock', this._updateClock.bind(this)); + + this._updateClock(); + + this.connect('destroy', this._onDestroy.bind(this)); + } + + _updateClock() { + this._time.text = this._wallClock.clock; + + let date = new Date(); + /* Translators: This is a time format for a date in + long format */ + let dateFormat = Shell.util_translate_time_string(N_("%A, %B %d")); + this._date.text = date.toLocaleFormat(dateFormat); + } + + _onDestroy() { + this._wallClock.run_dispose(); + } +}); + var UnlockDialog = GObject.registerClass({ Signals: { 'failed': {} }, }, class UnlockDialog extends St.Widget { @@ -37,6 +77,9 @@ var UnlockDialog = GObject.registerClass({ y_expand: true }); this.add_child(this._promptBox); + this._clock = new Clock(); + this._promptBox.add_child(this._clock); + this._authPrompt = new AuthPrompt.AuthPrompt(new Gdm.Client(), AuthPrompt.AuthPromptMode.UNLOCK_ONLY); this._authPrompt.connect('failed', this._fail.bind(this)); this._authPrompt.connect('cancelled', this._fail.bind(this)); @@ -110,6 +153,11 @@ var UnlockDialog = GObject.registerClass({ } _onDestroy() { + if (this._clock) { + this._clock.destroy(); + this._clock = null; + } + this.popModal(); if (this._idleWatchId) {