From 0f662c6404c8feea54028126f3010ac24d48317e Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Tue, 21 Aug 2012 10:31:27 +0300 Subject: Add Online Accounts item to session menu. --- src/session-menu-mgr.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/session-menu-mgr.c') diff --git a/src/session-menu-mgr.c b/src/session-menu-mgr.c index 96fc2a0..1a66a44 100644 --- a/src/session-menu-mgr.c +++ b/src/session-menu-mgr.c @@ -33,6 +33,7 @@ with this program. If not, see . #include "session-menu-mgr.h" #include "shared-names.h" #include "users-service-dbus.h" +#include "webcredentials-mgr.h" #define DEBUG_SHOW_ALL FALSE @@ -88,6 +89,8 @@ struct _SessionMenuMgr DbusmenuMenuitem * lock_mi; DbusmenuMenuitem * lock_switch_mi; DbusmenuMenuitem * guest_mi; + DbusmenuMenuitem * online_accounts_mi; + DbusmenuMenuitem * online_accounts_separator; DbusmenuMenuitem * logout_mi; DbusmenuMenuitem * suspend_mi; DbusmenuMenuitem * hibernate_mi; @@ -113,6 +116,7 @@ struct _SessionMenuMgr DBusUPower * upower_proxy; SessionDbus * session_dbus; UsersServiceDbus * users_dbus_facade; + WebcredentialsMgr * webcredentials_mgr; }; static SwitcherMode get_switcher_mode (SessionMenuMgr *); @@ -192,6 +196,9 @@ session_menu_mgr_init (SessionMenuMgr *mgr) G_CALLBACK(on_guest_logged_in_changed), mgr); init_upower_proxy (mgr); + + /* Online accounts menu item */ + mgr->webcredentials_mgr = webcredentials_mgr_new (); } static void @@ -212,6 +219,7 @@ session_menu_mgr_dispose (GObject *object) g_clear_object (&mgr->users_dbus_facade); g_clear_object (&mgr->top_mi); g_clear_object (&mgr->session_dbus); + g_clear_object (&mgr->webcredentials_mgr); g_slist_free (mgr->user_menuitems); mgr->user_menuitems = NULL; @@ -412,6 +420,10 @@ update_session_menuitems (SessionMenuMgr * mgr) gboolean v; GSettings * s = mgr->indicator_settings; + v = !mgr->greeter_mode; + mi_set_visible (mgr->online_accounts_mi, v); + mi_set_visible (mgr->online_accounts_separator, v); + v = !mgr->greeter_mode && !is_this_live_session() && !g_settings_get_boolean (mgr->lockdown_settings, "disable-log-out") @@ -463,6 +475,13 @@ build_session_menuitems (SessionMenuMgr* mgr) { DbusmenuMenuitem * mi; + mi = mgr->online_accounts_mi = + webcredentials_mgr_get_menu_item (mgr->webcredentials_mgr); + dbusmenu_menuitem_child_append (mgr->top_mi, mi); + + mi = mgr->online_accounts_separator = mi_new_separator (); + dbusmenu_menuitem_child_append (mgr->top_mi, mi); + mi = mgr->logout_mi = mi_new (_("Log Out\342\200\246")); dbusmenu_menuitem_child_append (mgr->top_mi, mi); g_signal_connect_swapped (mi, DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, -- cgit v1.2.3 From 8ebef3969c9b69dc0fe24cd2ad33530a2e0b0e4c Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Tue, 21 Aug 2012 10:38:09 +0300 Subject: Class rename Rename the class from Webcredentials to OnlineAccounts, for improved consistency. --- src/session-menu-mgr.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/session-menu-mgr.c') diff --git a/src/session-menu-mgr.c b/src/session-menu-mgr.c index 1a66a44..72a4735 100644 --- a/src/session-menu-mgr.c +++ b/src/session-menu-mgr.c @@ -33,7 +33,7 @@ with this program. If not, see . #include "session-menu-mgr.h" #include "shared-names.h" #include "users-service-dbus.h" -#include "webcredentials-mgr.h" +#include "online_accounts-mgr.h" #define DEBUG_SHOW_ALL FALSE @@ -116,7 +116,7 @@ struct _SessionMenuMgr DBusUPower * upower_proxy; SessionDbus * session_dbus; UsersServiceDbus * users_dbus_facade; - WebcredentialsMgr * webcredentials_mgr; + OnlineAccountsMgr * online_accounts_mgr; }; static SwitcherMode get_switcher_mode (SessionMenuMgr *); @@ -198,7 +198,7 @@ session_menu_mgr_init (SessionMenuMgr *mgr) init_upower_proxy (mgr); /* Online accounts menu item */ - mgr->webcredentials_mgr = webcredentials_mgr_new (); + mgr->online_accounts_mgr = online_accounts_mgr_new (); } static void @@ -219,7 +219,7 @@ session_menu_mgr_dispose (GObject *object) g_clear_object (&mgr->users_dbus_facade); g_clear_object (&mgr->top_mi); g_clear_object (&mgr->session_dbus); - g_clear_object (&mgr->webcredentials_mgr); + g_clear_object (&mgr->online_accounts_mgr); g_slist_free (mgr->user_menuitems); mgr->user_menuitems = NULL; @@ -476,7 +476,7 @@ build_session_menuitems (SessionMenuMgr* mgr) DbusmenuMenuitem * mi; mi = mgr->online_accounts_mi = - webcredentials_mgr_get_menu_item (mgr->webcredentials_mgr); + online_accounts_mgr_get_menu_item (mgr->online_accounts_mgr); dbusmenu_menuitem_child_append (mgr->top_mi, mi); mi = mgr->online_accounts_separator = mi_new_separator (); -- cgit v1.2.3 From ff3294e7afb6a92d72608bd311533807a77a7857 Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Tue, 21 Aug 2012 11:21:08 +0300 Subject: Fix build --- src/session-menu-mgr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/session-menu-mgr.c') diff --git a/src/session-menu-mgr.c b/src/session-menu-mgr.c index 72a4735..8f42871 100644 --- a/src/session-menu-mgr.c +++ b/src/session-menu-mgr.c @@ -33,7 +33,7 @@ with this program. If not, see . #include "session-menu-mgr.h" #include "shared-names.h" #include "users-service-dbus.h" -#include "online_accounts-mgr.h" +#include "online-accounts-mgr.h" #define DEBUG_SHOW_ALL FALSE -- cgit v1.2.3 From 0a7f9ed274047c0228a5a5f9e053308e755bf89d Mon Sep 17 00:00:00 2001 From: Alberto Mardegan Date: Thu, 23 Aug 2012 15:05:00 +0300 Subject: Show Online Accounts only when needed --- src/session-menu-mgr.c | 43 +++++++++++++++++++++++++++++++------------ 1 file changed, 31 insertions(+), 12 deletions(-) (limited to 'src/session-menu-mgr.c') diff --git a/src/session-menu-mgr.c b/src/session-menu-mgr.c index 8f42871..643abd1 100644 --- a/src/session-menu-mgr.c +++ b/src/session-menu-mgr.c @@ -90,7 +90,6 @@ struct _SessionMenuMgr DbusmenuMenuitem * lock_switch_mi; DbusmenuMenuitem * guest_mi; DbusmenuMenuitem * online_accounts_mi; - DbusmenuMenuitem * online_accounts_separator; DbusmenuMenuitem * logout_mi; DbusmenuMenuitem * suspend_mi; DbusmenuMenuitem * hibernate_mi; @@ -370,6 +369,29 @@ mi_new (const char * label) return mi; } +static void +check_online_accounts_status (SessionMenuMgr * mgr, DbusmenuMenuitem * mi) +{ + const gchar *disposition; + gboolean on_alert; + + disposition = + dbusmenu_menuitem_property_get (mi, DBUSMENU_MENUITEM_PROP_DISPOSITION); + on_alert = g_strcmp0 (disposition, DBUSMENU_MENUITEM_DISPOSITION_ALERT) == 0; + + mi_set_visible (mi, on_alert); +} + +static void +on_online_accounts_changed (SessionMenuMgr * mgr, const gchar * property, + GVariant *value, DbusmenuMenuitem *mi) +{ + if (g_strcmp0 (property, DBUSMENU_MENUITEM_PROP_DISPOSITION) == 0) + { + check_online_accounts_status(mgr, mi); + } +} + /*** **** Admin Menuitems **** @@ -404,6 +426,14 @@ build_admin_menuitems (SessionMenuMgr * mgr) G_CALLBACK(action_func_spawn_async), CMD_SYSTEM_SETTINGS); + mi = mgr->online_accounts_mi = + online_accounts_mgr_get_menu_item (mgr->online_accounts_mgr); + dbusmenu_menuitem_child_append (mgr->top_mi, mi); + g_signal_connect_swapped (mi, DBUSMENU_MENUITEM_SIGNAL_PROPERTY_CHANGED, + G_CALLBACK(on_online_accounts_changed), + mgr); + check_online_accounts_status (mgr, mi); + mi = mi_new_separator (); dbusmenu_menuitem_child_append (mgr->top_mi, mi); } @@ -420,10 +450,6 @@ update_session_menuitems (SessionMenuMgr * mgr) gboolean v; GSettings * s = mgr->indicator_settings; - v = !mgr->greeter_mode; - mi_set_visible (mgr->online_accounts_mi, v); - mi_set_visible (mgr->online_accounts_separator, v); - v = !mgr->greeter_mode && !is_this_live_session() && !g_settings_get_boolean (mgr->lockdown_settings, "disable-log-out") @@ -475,13 +501,6 @@ build_session_menuitems (SessionMenuMgr* mgr) { DbusmenuMenuitem * mi; - mi = mgr->online_accounts_mi = - online_accounts_mgr_get_menu_item (mgr->online_accounts_mgr); - dbusmenu_menuitem_child_append (mgr->top_mi, mi); - - mi = mgr->online_accounts_separator = mi_new_separator (); - dbusmenu_menuitem_child_append (mgr->top_mi, mi); - mi = mgr->logout_mi = mi_new (_("Log Out\342\200\246")); dbusmenu_menuitem_child_append (mgr->top_mi, mi); g_signal_connect_swapped (mi, DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, -- cgit v1.2.3