animation: Add dedicated Spinner class

We use AnimatedIcon with the same resource all over the place, cut
down on the duplication by providing a dedicated class.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/316
This commit is contained in:
Florian Müllner 2018-11-28 16:41:09 +01:00 committed by Florian Müllner
parent ae48f8bda9
commit 22e21ad7d1
5 changed files with 15 additions and 8 deletions

View File

@ -127,8 +127,7 @@ var AuthPrompt = new Lang.Class({
this._initButtons(); this._initButtons();
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg'); this._spinner = new Animation.Spinner(DEFAULT_BUTTON_WELL_ICON_SIZE);
this._spinner = new Animation.AnimatedIcon(spinnerIcon, DEFAULT_BUTTON_WELL_ICON_SIZE);
this._spinner.actor.opacity = 0; this._spinner.actor.opacity = 0;
this._spinner.actor.show(); this._spinner.actor.show();
this._defaultButtonWell.add_child(this._spinner.actor); this._defaultButtonWell.add_child(this._spinner.actor);

View File

@ -1,6 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- // -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const GLib = imports.gi.GLib; const GLib = imports.gi.GLib;
const Gio = imports.gi.Gio;
const Lang = imports.lang; const Lang = imports.lang;
const Mainloop = imports.mainloop; const Mainloop = imports.mainloop;
const St = imports.gi.St; const St = imports.gi.St;
@ -86,3 +87,13 @@ var AnimatedIcon = new Lang.Class({
this.parent(file, size, size, ANIMATED_ICON_UPDATE_TIMEOUT); this.parent(file, size, size, ANIMATED_ICON_UPDATE_TIMEOUT);
} }
}); });
var Spinner = new Lang.Class({
Name: 'Spinner',
Extends: AnimatedIcon,
_init(size) {
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg');
this.parent(file, size);
}
});

View File

@ -114,8 +114,7 @@ var KeyringDialog = new Lang.Class({
ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true }); ShellEntry.addContextMenu(this._passwordEntry, { isPassword: true });
this._passwordEntry.clutter_text.connect('activate', this._onPasswordActivate.bind(this)); this._passwordEntry.clutter_text.connect('activate', this._onPasswordActivate.bind(this));
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg'); this._workSpinner = new Animation.Spinner(WORK_SPINNER_ICON_SIZE);
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
this._workSpinner.actor.opacity = 0; this._workSpinner.actor.opacity = 0;
if (rtl) { if (rtl) {

View File

@ -117,8 +117,7 @@ var AuthenticationDialog = new Lang.Class({
this._passwordBox.add(this._passwordEntry, this._passwordBox.add(this._passwordEntry,
{ expand: true }); { expand: true });
let spinnerIcon = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg'); this._workSpinner = new Animation.Spinner(WORK_SPINNER_ICON_SIZE);
this._workSpinner = new Animation.AnimatedIcon(spinnerIcon, WORK_SPINNER_ICON_SIZE);
this._workSpinner.actor.opacity = 0; this._workSpinner.actor.opacity = 0;
this._passwordBox.add(this._workSpinner.actor); this._passwordBox.add(this._workSpinner.actor);

View File

@ -865,8 +865,7 @@ var NMWirelessDialog = new Lang.Class({
x_align: Clutter.ActorAlign.CENTER, x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER }); y_align: Clutter.ActorAlign.CENTER });
let file = Gio.File.new_for_uri('resource:///org/gnome/shell/theme/process-working.svg'); this._noNetworksSpinner = new Animation.Spinner(16);
this._noNetworksSpinner = new Animation.AnimatedIcon(file, 16, 16);
this._noNetworksBox.add_actor(this._noNetworksSpinner.actor); this._noNetworksBox.add_actor(this._noNetworksSpinner.actor);
this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label', this._noNetworksBox.add_actor(new St.Label({ style_class: 'no-networks-label',
text: _("No Networks") })); text: _("No Networks") }));