[gnome-shell/wip/reorg: 4/15] ui: move userAvatar to own file



commit 4f135be89ae2fa9f812de97a2b24a40e19d4af90
Author: Ray Strode <rstrode redhat com>
Date:   Fri Jun 14 08:49:12 2013 -0400

    ui: move userAvatar to own file
    
    There are a few places in the code that use the UserAvatar widget
    without using the user menu.
    
    Since the avatar is used outside of the user menu, move it from
    userMenu.js to its own file.

 js/Makefile.am                  |    1 +
 js/gdm/loginDialog.js           |    6 ++--
 js/ui/components/polkitAgent.js |    8 +++---
 js/ui/endSessionDialog.js       |    8 +++---
 js/ui/userAvatar.js             |   52 +++++++++++++++++++++++++++++++++++++++
 js/ui/userMenu.js               |   47 ++---------------------------------
 js/ui/userWidget.js             |    4 +-
 7 files changed, 69 insertions(+), 57 deletions(-)
---
diff --git a/js/Makefile.am b/js/Makefile.am
index 3f05b42..d4fbd86 100644
--- a/js/Makefile.am
+++ b/js/Makefile.am
@@ -97,6 +97,7 @@ nobase_dist_js_DATA =         \
        ui/switcherPopup.js     \
        ui/tweener.js           \
        ui/unlockDialog.js      \
+       ui/userAvatar.js        \
        ui/userMenu.js          \
        ui/userWidget.js        \
        ui/viewSelector.js      \
diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js
index 9c32e87..8432430 100644
--- a/js/gdm/loginDialog.js
+++ b/js/gdm/loginDialog.js
@@ -40,7 +40,7 @@ const GdmUtil = imports.gdm.util;
 const Main = imports.ui.main;
 const ModalDialog = imports.ui.modalDialog;
 const Tweener = imports.ui.tweener;
-const UserMenu = imports.ui.userMenu;
+const UserAvatar = imports.ui.userAvatar;
 const UserWidget = imports.ui.userWidget;
 
 const _FADE_ANIMATION_TIME = 0.25;
@@ -67,8 +67,8 @@ const UserListItem = new Lang.Class({
                                      x_align: St.Align.START,
                                      x_fill: true });
 
-        this._userAvatar = new UserMenu.UserAvatarWidget(this.user,
-                                                         { styleClass: 'login-dialog-user-list-item-icon' });
+        this._userAvatar = new UserAvatar.UserAvatar(this.user,
+                                                     { styleClass: 'login-dialog-user-list-item-icon' });
         layout.add(this._userAvatar.actor);
         let textLayout = new St.BoxLayout({ style_class: 'login-dialog-user-list-item-text-box',
                                             vertical:    true });
diff --git a/js/ui/components/polkitAgent.js b/js/ui/components/polkitAgent.js
index 20e8b2a..20c6fec 100644
--- a/js/ui/components/polkitAgent.js
+++ b/js/ui/components/polkitAgent.js
@@ -16,7 +16,7 @@ const PolkitAgent = imports.gi.PolkitAgent;
 const Components = imports.ui.components;
 const ModalDialog = imports.ui.modalDialog;
 const ShellEntry = imports.ui.shellEntry;
-const UserMenu = imports.ui.userMenu;
+const UserAvatar = imports.ui.userAvatar;
 
 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',
                                              vertical: false });
             messageBox.add(userBox);
-            this._userAvatar = new UserMenu.UserAvatarWidget(this._user,
-                                                             { iconSize: DIALOG_ICON_SIZE,
-                                                               styleClass: 'polkit-dialog-user-icon' });
+            this._userAvatar = new UserAvatar.UserAvatar(this._user,
+                                                         { iconSize: DIALOG_ICON_SIZE,
+                                                           styleClass: 'polkit-dialog-user-icon' });
             this._userAvatar.actor.hide();
             userBox.add(this._userAvatar.actor,
                         { x_fill:  true,
diff --git a/js/ui/endSessionDialog.js b/js/ui/endSessionDialog.js
index d322581..bc23502 100644
--- a/js/ui/endSessionDialog.js
+++ b/js/ui/endSessionDialog.js
@@ -35,7 +35,7 @@ const GnomeSession = imports.misc.gnomeSession;
 const Main = imports.ui.main;
 const ModalDialog = imports.ui.modalDialog;
 const Tweener = imports.ui.tweener;
-const UserMenu = imports.ui.userMenu;
+const UserAvatar = imports.ui.userAvatar;
 
 let _endSessionDialog = null;
 
@@ -360,9 +360,9 @@ const EndSessionDialog = new Lang.Class({
                                                 icon_size: _DIALOG_ICON_SIZE,
                                                 style_class: dialogContent.iconStyleClass });
         } else {
-            let avatarWidget = new UserMenu.UserAvatarWidget(this._user,
-                                                             { iconSize: _DIALOG_ICON_SIZE,
-                                                               styleClass: dialogContent.iconStyleClass });
+            let avatarWidget = new UserAvatar.UserAvatar(this._user,
+                                                         { iconSize: _DIALOG_ICON_SIZE,
+                                                           styleClass: dialogContent.iconStyleClass });
             this._iconBin.child = avatarWidget.actor;
             avatarWidget.update();
         }
diff --git a/js/ui/userAvatar.js b/js/ui/userAvatar.js
new file mode 100644
index 0000000..57aeba0
--- /dev/null
+++ b/js/ui/userAvatar.js
@@ -0,0 +1,52 @@
+// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
+
+const Gio = imports.gi.Gio;
+const GLib = imports.gi.GLib;
+const Lang = imports.lang;
+const St = imports.gi.St;
+
+const Params = imports.misc.params;
+
+const DIALOG_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 UserAvatar = new Lang.Class({
+    Name: 'UserAvatar',
+
+    _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 });
+        }
+    }
+});
diff --git a/js/ui/userMenu.js b/js/ui/userMenu.js
index 29d6694..ddaaae4 100644
--- a/js/ui/userMenu.js
+++ b/js/ui/userMenu.js
@@ -21,6 +21,7 @@ const ModalDialog = imports.ui.modalDialog;
 const PanelMenu = imports.ui.panelMenu;
 const PopupMenu = imports.ui.popupMenu;
 const Params = imports.misc.params;
+const UserAvatar = imports.ui.userAvatar;
 const Util = imports.misc.util;
 
 const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
@@ -57,48 +58,6 @@ const SystemdLoginSessionIface = <interface name='org.freedesktop.login1.Session
 
 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({
     Name: 'IMStatusItem',
     Extends: PopupMenu.PopupBaseMenuItem,
@@ -170,7 +129,7 @@ const IMStatusChooserItem = new Lang.Class({
         this._userManager = AccountsService.UserManager.get_default();
         this._user = this._userManager.get_user(GLib.get_user_name());
 
-        this._avatar = new UserAvatarWidget(this._user, { reactive: true });
+        this._avatar = new UserAvatar.UserAvatar(this._user, { reactive: true });
         this._iconBin = new St.Button({ child: this._avatar.actor });
         this.addActor(this._iconBin);
 
@@ -908,7 +867,7 @@ const UserMenuButton = new Lang.Class({
             let session = sessions[i];
             let userEntry = new St.BoxLayout({ style_class: 'login-dialog-user-list-item',
                                                vertical: false });
-            let avatar = new UserAvatarWidget(session.user);
+            let avatar = new UserAvatar.UserAvatar(session.user);
             avatar.update();
             userEntry.add(avatar.actor);
 
diff --git a/js/ui/userWidget.js b/js/ui/userWidget.js
index 433b0bf..6cc9748 100644
--- a/js/ui/userWidget.js
+++ b/js/ui/userWidget.js
@@ -6,7 +6,7 @@ const AccountsService = imports.gi.AccountsService;
 const Lang = imports.lang;
 const St = imports.gi.St;
 
-const UserMenu = imports.ui.userMenu;
+const UserAvatar = imports.ui.userAvatar;
 
 const UserWidget = new Lang.Class({
     Name: 'UserWidget',
@@ -18,7 +18,7 @@ const UserWidget = new Lang.Class({
                                         vertical: false });
         this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
 
-        this._avatar = new UserMenu.UserAvatarWidget(user);
+        this._avatar = new UserAvatar.UserAvatar(user);
         this.actor.add(this._avatar.actor,
                        { x_fill: true, y_fill: true });
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]