screenShield: Move Clock to UnlockDialog

Move the clock to UnlockDialog, as per the latest mockups.
This commit is contained in:
Georges Basile Stavracas Neto 2019-10-07 15:28:40 -03:00
parent be5ab24e97
commit c9e2afcf65
2 changed files with 54 additions and 50 deletions

View File

@ -1,7 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const { AccountsService, Clutter, Cogl, Gio, GLib, const { AccountsService, Clutter, Cogl, Gio, GLib,
GnomeDesktop, GObject, Meta, Shell, St } = imports.gi; GObject, Meta, Shell, St } = imports.gi;
const Cairo = imports.cairo; const Cairo = imports.cairo;
const Signals = imports.signals; const Signals = imports.signals;
@ -45,39 +45,6 @@ var STANDARD_FADE_TIME = 10000;
var MANUAL_FADE_TIME = 300; var MANUAL_FADE_TIME = 300;
var CURTAIN_SLIDE_TIME = 300; var CURTAIN_SLIDE_TIME = 300;
var Clock = class {
constructor() {
this.actor = new St.BoxLayout({ style_class: 'screen-shield-clock',
vertical: true });
this._time = new St.Label({ style_class: 'screen-shield-clock-time' });
this._date = new St.Label({ style_class: 'screen-shield-clock-date' });
this.actor.add(this._time, { x_align: St.Align.MIDDLE });
this.actor.add(this._date, { x_align: St.Align.MIDDLE });
this._wallClock = new GnomeDesktop.WallClock({ time_only: true });
this._wallClock.connect('notify::clock', this._updateClock.bind(this));
this._updateClock();
}
_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);
}
destroy() {
this.actor.destroy();
this._wallClock.run_dispose();
}
};
var NotificationsBox = class { var NotificationsBox = class {
constructor() { constructor() {
this.actor = new St.BoxLayout({ vertical: true, this.actor = new St.BoxLayout({ vertical: true,
@ -978,9 +945,6 @@ var ScreenShield = class {
y_expand: true, y_expand: true,
vertical: true, vertical: true,
style_class: 'screen-shield-contents-box' }); style_class: 'screen-shield-contents-box' });
this._clock = new Clock();
this._lockScreenContentsBox.add(this._clock.actor, { x_fill: true,
y_fill: true });
this._lockScreenContents.add_actor(this._lockScreenContentsBox); this._lockScreenContents.add_actor(this._lockScreenContentsBox);
@ -999,9 +963,6 @@ var ScreenShield = class {
} }
_clearLockScreen() { _clearLockScreen() {
this._clock.destroy();
this._clock = null;
if (this._notificationsBox) { if (this._notificationsBox) {
this._notificationsBox.disconnect(this._wakeUpScreenId); this._notificationsBox.disconnect(this._wakeUpScreenId);
this._notificationsBox.destroy(); this._notificationsBox.destroy();

View File

@ -1,8 +1,8 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported UnlockDialog */ /* exported UnlockDialog */
const { AccountsService, Atk, Clutter, const { AccountsService, Atk, Clutter, Gdm, Gio, GLib,
Gdm, Gio, GLib, GObject, Meta, Shell, St } = imports.gi; GnomeDesktop, GObject, Meta, Shell, St } = imports.gi;
const Layout = imports.ui.layout; const Layout = imports.ui.layout;
const Main = imports.ui.main; const Main = imports.ui.main;
@ -12,6 +12,41 @@ const AuthPrompt = imports.gdm.authPrompt;
// The timeout before going back automatically to the lock screen (in seconds) // The timeout before going back automatically to the lock screen (in seconds)
const IDLE_TIMEOUT = 2 * 60; const IDLE_TIMEOUT = 2 * 60;
var Clock = class {
constructor() {
this.actor = new St.BoxLayout({
style_class: 'screen-shield-clock',
vertical: true,
});
this._time = new St.Label({ style_class: 'screen-shield-clock-time' });
this._date = new St.Label({ style_class: 'screen-shield-clock-date' });
this.actor.add(this._time, { x_align: St.Align.MIDDLE });
this.actor.add(this._date, { x_align: St.Align.MIDDLE });
this._wallClock = new GnomeDesktop.WallClock({ time_only: true });
this._wallClock.connect('notify::clock', this._updateClock.bind(this));
this._updateClock();
}
_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);
}
destroy() {
this.actor.destroy();
this._wallClock.run_dispose();
}
};
var UnlockDialog = GObject.registerClass({ var UnlockDialog = GObject.registerClass({
Signals: { 'failed': {} }, Signals: { 'failed': {} },
}, class UnlockDialog extends St.Widget { }, class UnlockDialog extends St.Widget {
@ -30,12 +65,17 @@ var UnlockDialog = GObject.registerClass({
this._userName = GLib.get_user_name(); this._userName = GLib.get_user_name();
this._user = this._userManager.get_user(this._userName); this._user = this._userManager.get_user(this._userName);
this._promptBox = new St.BoxLayout({ vertical: true, this._mainBox = new St.BoxLayout({
x_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER, y_align: Clutter.ActorAlign.CENTER,
x_expand: true, x_expand: true,
y_expand: true }); y_expand: true,
this.add_child(this._promptBox); vertical: true,
});
this.add_child(this._mainBox);
this._clock = new Clock();
this._mainBox.add_child(this._clock.actor);
this._authPrompt = new AuthPrompt.AuthPrompt(new Gdm.Client(), AuthPrompt.AuthPromptMode.UNLOCK_ONLY); this._authPrompt = new AuthPrompt.AuthPrompt(new Gdm.Client(), AuthPrompt.AuthPromptMode.UNLOCK_ONLY);
this._authPrompt.connect('failed', this._fail.bind(this)); this._authPrompt.connect('failed', this._fail.bind(this));
@ -44,7 +84,7 @@ var UnlockDialog = GObject.registerClass({
this._authPrompt.setPasswordChar('\u25cf'); this._authPrompt.setPasswordChar('\u25cf');
this._authPrompt.nextButton.label = _("Unlock"); this._authPrompt.nextButton.label = _("Unlock");
this._promptBox.add_child(this._authPrompt.actor); this._mainBox.add_child(this._authPrompt.actor);
this.allowCancel = false; this.allowCancel = false;
@ -59,7 +99,7 @@ var UnlockDialog = GObject.registerClass({
x_align: St.Align.START, x_align: St.Align.START,
x_fill: false }); x_fill: false });
this._otherUserButton.connect('clicked', this._otherUserClicked.bind(this)); this._otherUserButton.connect('clicked', this._otherUserClicked.bind(this));
this._promptBox.add_child(this._otherUserButton); this._mainBox.add_child(this._otherUserButton);
} else { } else {
this._otherUserButton = null; this._otherUserButton = null;
} }
@ -114,6 +154,9 @@ var UnlockDialog = GObject.registerClass({
_onDestroy() { _onDestroy() {
this.popModal(); this.popModal();
this._clock.destroy();
this._clock = null;
if (this._idleWatchId) { if (this._idleWatchId) {
this._idleMonitor.remove_watch(this._idleWatchId); this._idleMonitor.remove_watch(this._idleWatchId);
this._idleWatchId = 0; this._idleWatchId = 0;