From e86e25a79fbedda83e81e07afd3d0981cf1db44b Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 6 Aug 2010 10:43:18 -0500 Subject: Removing the ability to have the menu item say anything other than 'Lock Screen' --- src/session-service.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'src/session-service.c') diff --git a/src/session-service.c b/src/session-service.c index 4fc12a1..65640c7 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -516,14 +516,9 @@ rebuild_items (DbusmenuMenuitem *root, /* Lock screen item */ if (can_lockscreen) { lock_menuitem = dbusmenu_menuitem_new(); - if (will_lock_screen()) { - dbusmenu_menuitem_property_set(lock_menuitem, DBUSMENU_MENUITEM_PROP_LABEL, _("Lock Screen")); - } else { - dbusmenu_menuitem_property_set(lock_menuitem, DBUSMENU_MENUITEM_PROP_LABEL, _("Start Screensaver")); - } + dbusmenu_menuitem_property_set(lock_menuitem, DBUSMENU_MENUITEM_PROP_LABEL, _("Lock Screen")); g_signal_connect(G_OBJECT(lock_menuitem), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(lock_screen), NULL); dbusmenu_menuitem_child_append(root, lock_menuitem); - lock_screen_update_item(lock_menuitem); } /* Set to NULL just incase we don't end up building one */ -- cgit v1.2.3 From b423aba6638c2862e0ce92093b92225dbf4b172c Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 6 Aug 2010 11:58:25 -0500 Subject: Getting keybinding defines --- src/session-service.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/session-service.c') diff --git a/src/session-service.c b/src/session-service.c index 65640c7..4a03974 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -61,6 +61,9 @@ with this program. If not, see . #define LOCKDOWN_KEY_USER LOCKDOWN_DIR "/disable_user_switching" #define LOCKDOWN_KEY_SCREENSAVER LOCKDOWN_DIR "/disable_lock_screen" +#define KEYBINDING_DIR "/apps/gnome_settings_daemon/keybindings" +#define KEY_LOCK_SCREEN KEYBINDING_DIR "/screensaver" + typedef struct _ActivateData ActivateData; struct _ActivateData { -- cgit v1.2.3 From fbed796878da42ee291f86bfe4ae07ba213b1258 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 6 Aug 2010 12:01:20 -0500 Subject: Set up the listener for the keybinding --- src/session-service.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/session-service.c') diff --git a/src/session-service.c b/src/session-service.c index 4a03974..feef5e7 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -122,6 +122,26 @@ lockdown_changed (GConfClient *client, return; } +static void +keybinding_changed (GConfClient *client, + guint cnxd_id, + GConfEntry *entry, + gpointer user_data) +{ + GConfValue *value = gconf_entry_get_value (entry); + const gchar *key = gconf_entry_get_key (entry); + + if (value == NULL || key == NULL) { + return; + } + + if (g_strcmp0 (key, KEY_LOCK_SCREEN) == 0) { + // TODO: set value + } + + return; +} + /* Ensures that we have a GConf client and if we build one set up the signal handler. */ static void @@ -129,8 +149,12 @@ ensure_gconf_client (void) { if (!gconf_client) { gconf_client = gconf_client_get_default (); + gconf_client_add_dir(gconf_client, LOCKDOWN_DIR, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); gconf_client_notify_add(gconf_client, LOCKDOWN_DIR, lockdown_changed, NULL, NULL, NULL); + + gconf_client_add_dir(gconf_client, KEYBINDING_DIR, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL); + gconf_client_notify_add(gconf_client, KEYBINDING_DIR, keybinding_changed, NULL, NULL, NULL); } return; } -- cgit v1.2.3 From fcf32dbec44550b677610791f905c8dc8d1d097a Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Fri, 6 Aug 2010 13:40:30 -0500 Subject: Putting the shortcut on the menuitem --- src/session-service.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/session-service.c') diff --git a/src/session-service.c b/src/session-service.c index feef5e7..2872de0 100644 --- a/src/session-service.c +++ b/src/session-service.c @@ -36,6 +36,7 @@ with this program. If not, see . #include #include #include +#include #include @@ -136,7 +137,10 @@ keybinding_changed (GConfClient *client, } if (g_strcmp0 (key, KEY_LOCK_SCREEN) == 0) { - // TODO: set value + g_debug("Keybinding changed to: %s", gconf_value_get_string(value)); + if (lock_menuitem != NULL) { + dbusmenu_menuitem_property_set_shortcut_string(lock_menuitem, gconf_value_get_string(value)); + } } return; @@ -544,6 +548,16 @@ rebuild_items (DbusmenuMenuitem *root, if (can_lockscreen) { lock_menuitem = dbusmenu_menuitem_new(); dbusmenu_menuitem_property_set(lock_menuitem, DBUSMENU_MENUITEM_PROP_LABEL, _("Lock Screen")); + + gchar * shortcut = gconf_client_get_string(gconf_client, KEY_LOCK_SCREEN, NULL); + if (shortcut != NULL) { + g_debug("Lock screen shortcut: %s", shortcut); + dbusmenu_menuitem_property_set_shortcut_string(lock_menuitem, shortcut); + g_free(shortcut); + } else { + g_debug("Unable to get lock screen shortcut."); + } + g_signal_connect(G_OBJECT(lock_menuitem), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(lock_screen), NULL); dbusmenu_menuitem_child_append(root, lock_menuitem); } -- cgit v1.2.3