gnome-shell/js/ui/welcomeDialog.js
Florian Müllner 55e08a3a2f welcomeDialog: Hide overview when taking tour
The dialog is shown at session start, which right now means in the
regular session, however the plan is to start the session in the
overview. When that happens, the "Take the Tour" button should get
the user to the Tour without additonal actions.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1699>
2021-02-19 17:18:50 +01:00

63 lines
1.8 KiB
JavaScript

// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
/* exported WelcomeDialog */
const { Clutter, GObject, Shell, St } = imports.gi;
const Config = imports.misc.config;
const Dialog = imports.ui.dialog;
const Main = imports.ui.main;
const ModalDialog = imports.ui.modalDialog;
var DialogResponse = {
NO_THANKS: 0,
TAKE_TOUR: 1,
};
var WelcomeDialog = GObject.registerClass(
class WelcomeDialog extends ModalDialog.ModalDialog {
_init() {
super._init({ styleClass: 'welcome-dialog' });
const appSystem = Shell.AppSystem.get_default();
this._tourAppInfo = appSystem.lookup_app('org.gnome.Tour.desktop');
this._buildLayout();
}
open() {
if (!this._tourAppInfo)
return;
super.open();
}
_buildLayout() {
const [majorVersion] = Config.PACKAGE_VERSION.split('.');
const title = _('Welcome to GNOME %s'.format(majorVersion));
const description = _('If you want to learn your way around, check out the tour.');
const content = new Dialog.MessageDialogContent({ title, description });
const icon = new St.Widget({ style_class: 'welcome-dialog-image' });
content.insert_child_at_index(icon, 0);
this.contentLayout.add_child(content);
this.addButton({ label: _('No Thanks'),
action: () => {
this._sendResponse(DialogResponse.NO_THANKS);
},
key: Clutter.KEY_Escape });
this.addButton({ label: _('Take Tour'),
action: () => this._sendResponse(DialogResponse.TAKE_TOUR) });
}
_sendResponse(response) {
if (response === DialogResponse.TAKE_TOUR) {
this._tourAppInfo.launch(0, -1, Shell.AppLaunchGpu.APP_PREF);
Main.overview.hide();
}
this.close();
}
});