Merge lp:~mterry/indicator-session/add-greeter-mode into lp:indicator-session/0.1

Proposed by Michael Terry
Status: Merged
Approved by: Conor Curran
Approved revision: 170
Merge reported by: Conor Curran
Merged at revision: not available
Proposed branch: lp:~mterry/indicator-session/add-greeter-mode
Merge into: lp:indicator-session/0.1
Diff against target: 232 lines (+94/-60)
3 files modified
src/device-menu-mgr.c (+74/-54)
src/device-menu-mgr.h (+1/-1)
src/session-service.c (+19/-5)
To merge this branch: bzr merge lp:~mterry/indicator-session/add-greeter-mode
Reviewer Review Type Date Requested Status
Indicator Applet Developers Pending
Review via email: mp+70324@code.launchpad.net

Description of the change

When in the greeter, use a simpler interface. See bug 811853 for more.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/device-menu-mgr.c'
2--- src/device-menu-mgr.c 2011-07-22 14:36:59 +0000
3+++ src/device-menu-mgr.c 2011-08-03 16:23:21 +0000
4@@ -461,9 +461,8 @@
5 }
6
7 static void
8-device_menu_mgr_build_static_items (DeviceMenuMgr* self)
9+device_menu_mgr_build_settings_items (DeviceMenuMgr* self)
10 {
11- // Static Setting items
12 system_settings_menuitem = dbusmenu_menuitem_new();
13 dbusmenu_menuitem_property_set (system_settings_menuitem,
14 DBUSMENU_MENUITEM_PROP_LABEL,
15@@ -520,8 +519,11 @@
16 DBUSMENU_MENUITEM_PROP_TYPE,
17 DBUSMENU_CLIENT_TYPES_SEPARATOR);
18 dbusmenu_menuitem_child_add_position (self->root_item, separator1, 5);
19+}
20
21- // Devices control
22+static void
23+device_menu_mgr_build_devices_items (DeviceMenuMgr* self)
24+{
25 DbusmenuMenuitem * device_heading = dbusmenu_menuitem_new();
26 dbusmenu_menuitem_property_set (device_heading,
27 DBUSMENU_MENUITEM_PROP_LABEL,
28@@ -581,58 +583,74 @@
29 DBUSMENU_MENUITEM_PROP_TYPE,
30 DBUSMENU_CLIENT_TYPES_SEPARATOR);
31 dbusmenu_menuitem_child_add_position (self->root_item, separator3, 11);
32-
33+}
34+
35+static void
36+device_menu_mgr_build_static_items (DeviceMenuMgr* self, gboolean greeter_mode)
37+{
38+ // Static Setting items
39+ if (!greeter_mode) {
40+ device_menu_mgr_build_settings_items (self);
41+ }
42+
43+ // Devices control
44+ if (!greeter_mode) {
45+ device_menu_mgr_build_devices_items (self);
46+ }
47+
48 // Session control
49- gboolean can_lockscreen;
50-
51- /* Make sure we have a valid GConf client, and build one
52- if needed */
53- device_menu_mgr_ensure_gconf_client (self);
54- can_lockscreen = !gconf_client_get_bool ( gconf_client,
55- LOCKDOWN_KEY_SCREENSAVER,
56- NULL);
57- /* Lock screen item */
58- if (can_lockscreen) {
59- lock_menuitem = dbusmenu_menuitem_new();
60- dbusmenu_menuitem_property_set (lock_menuitem,
61- DBUSMENU_MENUITEM_PROP_LABEL,
62- _("Lock Screen"));
63-
64- gchar * shortcut = gconf_client_get_string(gconf_client, KEY_LOCK_SCREEN, NULL);
65- if (shortcut != NULL) {
66- g_debug("Lock screen shortcut: %s", shortcut);
67- dbusmenu_menuitem_property_set_shortcut_string(lock_menuitem, shortcut);
68- g_free(shortcut);
69+ if (!greeter_mode) {
70+ gboolean can_lockscreen;
71+
72+ /* Make sure we have a valid GConf client, and build one
73+ if needed */
74+ device_menu_mgr_ensure_gconf_client (self);
75+ can_lockscreen = !gconf_client_get_bool ( gconf_client,
76+ LOCKDOWN_KEY_SCREENSAVER,
77+ NULL);
78+ /* Lock screen item */
79+ if (can_lockscreen) {
80+ lock_menuitem = dbusmenu_menuitem_new();
81+ dbusmenu_menuitem_property_set (lock_menuitem,
82+ DBUSMENU_MENUITEM_PROP_LABEL,
83+ _("Lock Screen"));
84+
85+ gchar * shortcut = gconf_client_get_string(gconf_client, KEY_LOCK_SCREEN, NULL);
86+ if (shortcut != NULL) {
87+ g_debug("Lock screen shortcut: %s", shortcut);
88+ dbusmenu_menuitem_property_set_shortcut_string(lock_menuitem, shortcut);
89+ g_free(shortcut);
90+ }
91+ else {
92+ g_debug("Unable to get lock screen shortcut.");
93+ }
94+
95+ g_signal_connect (G_OBJECT(lock_menuitem),
96+ DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
97+ G_CALLBACK(lock_screen), NULL);
98+ dbusmenu_menuitem_child_append(self->root_item, lock_menuitem);
99+ }
100+
101+ logout_mi = dbusmenu_menuitem_new();
102+
103+ if (supress_confirmations()) {
104+ dbusmenu_menuitem_property_set (logout_mi,
105+ DBUSMENU_MENUITEM_PROP_LABEL,
106+ _("Log Out"));
107 }
108 else {
109- g_debug("Unable to get lock screen shortcut.");
110+ dbusmenu_menuitem_property_set (logout_mi,
111+ DBUSMENU_MENUITEM_PROP_LABEL,
112+ _("Log Out\342\200\246"));
113 }
114-
115- g_signal_connect (G_OBJECT(lock_menuitem),
116+ dbusmenu_menuitem_property_set_bool (logout_mi,
117+ DBUSMENU_MENUITEM_PROP_VISIBLE,
118+ show_logout());
119+ dbusmenu_menuitem_child_append(self->root_item, logout_mi);
120+ g_signal_connect( G_OBJECT(logout_mi),
121 DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
122- G_CALLBACK(lock_screen), NULL);
123- dbusmenu_menuitem_child_append(self->root_item, lock_menuitem);
124- }
125-
126- logout_mi = dbusmenu_menuitem_new();
127-
128- if (supress_confirmations()) {
129- dbusmenu_menuitem_property_set (logout_mi,
130- DBUSMENU_MENUITEM_PROP_LABEL,
131- _("Log Out"));
132- }
133- else {
134- dbusmenu_menuitem_property_set (logout_mi,
135- DBUSMENU_MENUITEM_PROP_LABEL,
136- _("Log Out\342\200\246"));
137- }
138- dbusmenu_menuitem_property_set_bool (logout_mi,
139- DBUSMENU_MENUITEM_PROP_VISIBLE,
140- show_logout());
141- dbusmenu_menuitem_child_append(self->root_item, logout_mi);
142- g_signal_connect( G_OBJECT(logout_mi),
143- DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED,
144- G_CALLBACK(show_dialog), "logout");
145+ G_CALLBACK(show_dialog), "logout");
146+ }
147
148 if (can_suspend && allow_suspend) {
149 suspend_mi = dbusmenu_menuitem_new();
150@@ -787,12 +805,14 @@
151 /*
152 * Clean Entry Point
153 */
154-DeviceMenuMgr* device_menu_mgr_new (SessionDbus* session_dbus)
155+DeviceMenuMgr* device_menu_mgr_new (SessionDbus* session_dbus, gboolean greeter_mode)
156 {
157 DeviceMenuMgr* device_mgr = g_object_new (DEVICE_TYPE_MENU_MGR, NULL);
158 device_mgr->session_dbus_interface = session_dbus;
159- device_menu_mgr_build_static_items (device_mgr);
160- device_mgr->apt_watcher = apt_watcher_new (session_dbus,
161- software_updates_menuitem);
162+ device_menu_mgr_build_static_items (device_mgr, greeter_mode);
163+ if (software_updates_menuitem != NULL) {
164+ device_mgr->apt_watcher = apt_watcher_new (session_dbus,
165+ software_updates_menuitem);
166+ }
167 return device_mgr;
168 }
169
170=== modified file 'src/device-menu-mgr.h'
171--- src/device-menu-mgr.h 2011-07-20 17:17:49 +0000
172+++ src/device-menu-mgr.h 2011-08-03 16:23:21 +0000
173@@ -44,7 +44,7 @@
174
175 GType device_menu_mgr_get_type (void) G_GNUC_CONST;
176
177-DeviceMenuMgr* device_menu_mgr_new (SessionDbus* session_dbus);
178+DeviceMenuMgr* device_menu_mgr_new (SessionDbus* session_dbus, gboolean greeter_mode);
179
180 DbusmenuMenuitem* device_mgr_get_root_item (DeviceMenuMgr* self);
181
182
183=== modified file 'src/session-service.c'
184--- src/session-service.c 2011-07-22 17:22:37 +0000
185+++ src/session-service.c 2011-08-03 16:23:21 +0000
186@@ -78,11 +78,21 @@
187 return;
188 }
189
190+static gboolean
191+get_greeter_mode (void)
192+{
193+ const gchar *var;
194+ var = g_getenv("INDICATOR_GREETER_MODE");
195+ return (g_strcmp0(var, "1") == 0);
196+}
197+
198 /* Main, is well, main. It brings everything up and throws
199 us into the mainloop of no return. */
200 int
201 main (int argc, char ** argv)
202 {
203+ gboolean greeter_mode;
204+
205 g_type_init();
206
207 /* Setting up i18n and gettext. Apparently, we need
208@@ -99,15 +109,19 @@
209
210 session_dbus = session_dbus_new();
211
212+ greeter_mode = get_greeter_mode();
213+
214 // Devices
215- DeviceMenuMgr* device_mgr = device_menu_mgr_new (session_dbus);
216+ DeviceMenuMgr* device_mgr = device_menu_mgr_new (session_dbus, greeter_mode);
217 DbusmenuServer * server = dbusmenu_server_new(INDICATOR_SESSION_DBUS_OBJECT);
218 dbusmenu_server_set_root(server, device_mgr_get_root_item (device_mgr));
219
220- // Users
221- UserMenuMgr* user_mgr = user_menu_mgr_new (session_dbus);
222- DbusmenuServer* users_server = dbusmenu_server_new (INDICATOR_USERS_DBUS_OBJECT);
223- dbusmenu_server_set_root (users_server, user_mgr_get_root_item (user_mgr));
224+ if (!greeter_mode) {
225+ // Users
226+ UserMenuMgr* user_mgr = user_menu_mgr_new (session_dbus);
227+ DbusmenuServer* users_server = dbusmenu_server_new (INDICATOR_USERS_DBUS_OBJECT);
228+ dbusmenu_server_set_root (users_server, user_mgr_get_root_item (user_mgr));
229+ }
230
231 mainloop = g_main_loop_new(NULL, FALSE);
232 g_main_loop_run(mainloop);

Subscribers

People subscribed via source and target branches