userMenu: Move UserAvatarWidget into UserWidget
https://bugzilla.gnome.org/show_bug.cgi?id=701755
This commit is contained in:
parent
c39497222f
commit
403540e8a1
@ -42,7 +42,6 @@ const Main = imports.ui.main;
|
|||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
const UserMenu = imports.ui.userMenu;
|
|
||||||
const UserWidget = imports.ui.userWidget;
|
const UserWidget = imports.ui.userWidget;
|
||||||
|
|
||||||
const _FADE_ANIMATION_TIME = 0.25;
|
const _FADE_ANIMATION_TIME = 0.25;
|
||||||
@ -69,8 +68,8 @@ const UserListItem = new Lang.Class({
|
|||||||
x_align: St.Align.START,
|
x_align: St.Align.START,
|
||||||
x_fill: true });
|
x_fill: true });
|
||||||
|
|
||||||
this._userAvatar = new UserMenu.UserAvatarWidget(this.user,
|
this._userAvatar = new UserWidget.Avatar(this.user,
|
||||||
{ styleClass: 'login-dialog-user-list-item-icon' });
|
{ styleClass: 'login-dialog-user-list-item-icon' });
|
||||||
layout.add(this._userAvatar.actor);
|
layout.add(this._userAvatar.actor);
|
||||||
let textLayout = new St.BoxLayout({ style_class: 'login-dialog-user-list-item-text-box',
|
let textLayout = new St.BoxLayout({ style_class: 'login-dialog-user-list-item-text-box',
|
||||||
vertical: true });
|
vertical: true });
|
||||||
|
@ -16,7 +16,7 @@ const PolkitAgent = imports.gi.PolkitAgent;
|
|||||||
const Components = imports.ui.components;
|
const Components = imports.ui.components;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
const ShellEntry = imports.ui.shellEntry;
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
const UserMenu = imports.ui.userMenu;
|
const UserWidget = imports.ui.userWidget;
|
||||||
|
|
||||||
const DIALOG_ICON_SIZE = 48;
|
const DIALOG_ICON_SIZE = 48;
|
||||||
|
|
||||||
@ -100,9 +100,9 @@ const AuthenticationDialog = new Lang.Class({
|
|||||||
let userBox = new St.BoxLayout({ style_class: 'polkit-dialog-user-layout',
|
let userBox = new St.BoxLayout({ style_class: 'polkit-dialog-user-layout',
|
||||||
vertical: false });
|
vertical: false });
|
||||||
messageBox.add(userBox);
|
messageBox.add(userBox);
|
||||||
this._userAvatar = new UserMenu.UserAvatarWidget(this._user,
|
this._userAvatar = new UserWidget.Avatar(this._user,
|
||||||
{ iconSize: DIALOG_ICON_SIZE,
|
{ iconSize: DIALOG_ICON_SIZE,
|
||||||
styleClass: 'polkit-dialog-user-icon' });
|
styleClass: 'polkit-dialog-user-icon' });
|
||||||
this._userAvatar.actor.hide();
|
this._userAvatar.actor.hide();
|
||||||
userBox.add(this._userAvatar.actor,
|
userBox.add(this._userAvatar.actor,
|
||||||
{ x_fill: true,
|
{ x_fill: true,
|
||||||
|
@ -35,7 +35,7 @@ const GnomeSession = imports.misc.gnomeSession;
|
|||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
const UserMenu = imports.ui.userMenu;
|
const UserWidget = imports.ui.userWidget;
|
||||||
|
|
||||||
let _endSessionDialog = null;
|
let _endSessionDialog = null;
|
||||||
|
|
||||||
@ -360,9 +360,9 @@ const EndSessionDialog = new Lang.Class({
|
|||||||
icon_size: _DIALOG_ICON_SIZE,
|
icon_size: _DIALOG_ICON_SIZE,
|
||||||
style_class: dialogContent.iconStyleClass });
|
style_class: dialogContent.iconStyleClass });
|
||||||
} else {
|
} else {
|
||||||
let avatarWidget = new UserMenu.UserAvatarWidget(this._user,
|
let avatarWidget = new UserWidget.Avatar(this._user,
|
||||||
{ iconSize: _DIALOG_ICON_SIZE,
|
{ iconSize: _DIALOG_ICON_SIZE,
|
||||||
styleClass: dialogContent.iconStyleClass });
|
styleClass: dialogContent.iconStyleClass });
|
||||||
this._iconBin.child = avatarWidget.actor;
|
this._iconBin.child = avatarWidget.actor;
|
||||||
avatarWidget.update();
|
avatarWidget.update();
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,6 @@ const ModalDialog = imports.ui.modalDialog;
|
|||||||
const Panel = imports.ui.panel;
|
const Panel = imports.ui.panel;
|
||||||
const ShellEntry = imports.ui.shellEntry;
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
const UserMenu = imports.ui.userMenu;
|
|
||||||
const UserWidget = imports.ui.userWidget;
|
const UserWidget = imports.ui.userWidget;
|
||||||
|
|
||||||
const Batch = imports.gdm.batch;
|
const Batch = imports.gdm.batch;
|
||||||
|
@ -20,8 +20,8 @@ const Main = imports.ui.main;
|
|||||||
const ModalDialog = imports.ui.modalDialog;
|
const ModalDialog = imports.ui.modalDialog;
|
||||||
const PanelMenu = imports.ui.panelMenu;
|
const PanelMenu = imports.ui.panelMenu;
|
||||||
const PopupMenu = imports.ui.popupMenu;
|
const PopupMenu = imports.ui.popupMenu;
|
||||||
const Params = imports.misc.params;
|
|
||||||
const Util = imports.misc.util;
|
const Util = imports.misc.util;
|
||||||
|
const UserWidget = imports.ui.userWidget;
|
||||||
|
|
||||||
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
|
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
|
||||||
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
const SCREENSAVER_SCHEMA = 'org.gnome.desktop.screensaver';
|
||||||
@ -32,8 +32,6 @@ const DISABLE_LOG_OUT_KEY = 'disable-log-out';
|
|||||||
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
|
const ALWAYS_SHOW_LOG_OUT_KEY = 'always-show-log-out';
|
||||||
const SHOW_FULL_NAME_IN_TOP_BAR_KEY = 'show-full-name-in-top-bar';
|
const SHOW_FULL_NAME_IN_TOP_BAR_KEY = 'show-full-name-in-top-bar';
|
||||||
|
|
||||||
const DIALOG_ICON_SIZE = 64;
|
|
||||||
|
|
||||||
const MAX_USERS_IN_SESSION_DIALOG = 5;
|
const MAX_USERS_IN_SESSION_DIALOG = 5;
|
||||||
|
|
||||||
const IMStatus = {
|
const IMStatus = {
|
||||||
@ -57,48 +55,6 @@ const SystemdLoginSessionIface = <interface name='org.freedesktop.login1.Session
|
|||||||
|
|
||||||
const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
|
const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
|
||||||
|
|
||||||
// Adapted from gdm/gui/user-switch-applet/applet.c
|
|
||||||
//
|
|
||||||
// Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>.
|
|
||||||
// Copyright (C) 2008,2009 Red Hat, Inc.
|
|
||||||
|
|
||||||
const UserAvatarWidget = new Lang.Class({
|
|
||||||
Name: 'UserAvatarWidget',
|
|
||||||
|
|
||||||
_init: function(user, params) {
|
|
||||||
this._user = user;
|
|
||||||
params = Params.parse(params, { reactive: false,
|
|
||||||
iconSize: DIALOG_ICON_SIZE,
|
|
||||||
styleClass: 'status-chooser-user-icon' });
|
|
||||||
this._iconSize = params.iconSize;
|
|
||||||
|
|
||||||
this.actor = new St.Bin({ style_class: params.styleClass,
|
|
||||||
track_hover: params.reactive,
|
|
||||||
reactive: params.reactive });
|
|
||||||
},
|
|
||||||
|
|
||||||
setSensitive: function(sensitive) {
|
|
||||||
this.actor.can_focus = sensitive;
|
|
||||||
this.actor.reactive = sensitive;
|
|
||||||
},
|
|
||||||
|
|
||||||
update: function() {
|
|
||||||
let iconFile = this._user.get_icon_file();
|
|
||||||
if (iconFile && !GLib.file_test(iconFile, GLib.FileTest.EXISTS))
|
|
||||||
iconFile = null;
|
|
||||||
|
|
||||||
if (iconFile) {
|
|
||||||
let file = Gio.File.new_for_path(iconFile);
|
|
||||||
this.actor.child = null;
|
|
||||||
this.actor.style = 'background-image: url("%s");'.format(iconFile);
|
|
||||||
} else {
|
|
||||||
this.actor.style = null;
|
|
||||||
this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic',
|
|
||||||
icon_size: this._iconSize });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const IMStatusItem = new Lang.Class({
|
const IMStatusItem = new Lang.Class({
|
||||||
Name: 'IMStatusItem',
|
Name: 'IMStatusItem',
|
||||||
Extends: PopupMenu.PopupBaseMenuItem,
|
Extends: PopupMenu.PopupBaseMenuItem,
|
||||||
@ -170,7 +126,7 @@ const IMStatusChooserItem = new Lang.Class({
|
|||||||
this._userManager = AccountsService.UserManager.get_default();
|
this._userManager = AccountsService.UserManager.get_default();
|
||||||
this._user = this._userManager.get_user(GLib.get_user_name());
|
this._user = this._userManager.get_user(GLib.get_user_name());
|
||||||
|
|
||||||
this._avatar = new UserAvatarWidget(this._user, { reactive: true });
|
this._avatar = new UserWidget.Avatar(this._user, { reactive: true });
|
||||||
this._iconBin = new St.Button({ child: this._avatar.actor });
|
this._iconBin = new St.Button({ child: this._avatar.actor });
|
||||||
this.addActor(this._iconBin);
|
this.addActor(this._iconBin);
|
||||||
|
|
||||||
@ -908,7 +864,7 @@ const UserMenuButton = new Lang.Class({
|
|||||||
let session = sessions[i];
|
let session = sessions[i];
|
||||||
let userEntry = new St.BoxLayout({ style_class: 'login-dialog-user-list-item',
|
let userEntry = new St.BoxLayout({ style_class: 'login-dialog-user-list-item',
|
||||||
vertical: false });
|
vertical: false });
|
||||||
let avatar = new UserAvatarWidget(session.user);
|
let avatar = new UserWidget.Avatar(session.user);
|
||||||
avatar.update();
|
avatar.update();
|
||||||
userEntry.add(avatar.actor);
|
userEntry.add(avatar.actor);
|
||||||
|
|
||||||
|
@ -3,10 +3,56 @@
|
|||||||
//
|
//
|
||||||
// A widget showing the user avatar and name
|
// A widget showing the user avatar and name
|
||||||
const AccountsService = imports.gi.AccountsService;
|
const AccountsService = imports.gi.AccountsService;
|
||||||
|
const GLib = imports.gi.GLib;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
const UserMenu = imports.ui.userMenu;
|
const Params = imports.misc.params;
|
||||||
|
|
||||||
|
const AVATAR_ICON_SIZE = 64;
|
||||||
|
|
||||||
|
// Adapted from gdm/gui/user-switch-applet/applet.c
|
||||||
|
//
|
||||||
|
// Copyright (C) 2004-2005 James M. Cape <jcape@ignore-your.tv>.
|
||||||
|
// Copyright (C) 2008,2009 Red Hat, Inc.
|
||||||
|
|
||||||
|
const Avatar = new Lang.Class({
|
||||||
|
Name: 'Avatar',
|
||||||
|
|
||||||
|
_init: function(user, params) {
|
||||||
|
this._user = user;
|
||||||
|
params = Params.parse(params, { reactive: false,
|
||||||
|
iconSize: AVATAR_ICON_SIZE,
|
||||||
|
styleClass: 'status-chooser-user-icon' });
|
||||||
|
this._iconSize = params.iconSize;
|
||||||
|
|
||||||
|
this.actor = new St.Bin({ style_class: params.styleClass,
|
||||||
|
track_hover: params.reactive,
|
||||||
|
reactive: params.reactive });
|
||||||
|
},
|
||||||
|
|
||||||
|
setSensitive: function(sensitive) {
|
||||||
|
this.actor.can_focus = sensitive;
|
||||||
|
this.actor.reactive = sensitive;
|
||||||
|
},
|
||||||
|
|
||||||
|
update: function() {
|
||||||
|
let iconFile = this._user.get_icon_file();
|
||||||
|
if (iconFile && !GLib.file_test(iconFile, GLib.FileTest.EXISTS))
|
||||||
|
iconFile = null;
|
||||||
|
|
||||||
|
if (iconFile) {
|
||||||
|
let file = Gio.File.new_for_path(iconFile);
|
||||||
|
this.actor.child = null;
|
||||||
|
this.actor.style = 'background-image: url("%s");'.format(iconFile);
|
||||||
|
} else {
|
||||||
|
this.actor.style = null;
|
||||||
|
this.actor.child = new St.Icon({ icon_name: 'avatar-default-symbolic',
|
||||||
|
icon_size: this._iconSize });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const UserWidget = new Lang.Class({
|
const UserWidget = new Lang.Class({
|
||||||
Name: 'UserWidget',
|
Name: 'UserWidget',
|
||||||
@ -18,7 +64,7 @@ const UserWidget = new Lang.Class({
|
|||||||
vertical: false });
|
vertical: false });
|
||||||
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
|
||||||
|
|
||||||
this._avatar = new UserMenu.UserAvatarWidget(user);
|
this._avatar = new Avatar(user);
|
||||||
this.actor.add(this._avatar.actor,
|
this.actor.add(this._avatar.actor,
|
||||||
{ x_fill: true, y_fill: true });
|
{ x_fill: true, y_fill: true });
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user