diff options
| author | William Hua <william.hua@canonical.com> | 2014-04-11 04:23:49 +1200 |
|---|---|---|
| committer | William Hua <william.hua@canonical.com> | 2014-04-11 04:23:49 +1200 |
| commit | ed6e8eaf865e9f7f0ee0c9af7322635f85ef5b43 (patch) | |
| tree | 74ce281cb8e8916d8ac1618af9fcb70a1e88b86c /lockscreen | |
| parent | b37a14f4fe2fd1ac43d9c6978d80b1a9e99cbc0f (diff) | |
Minor changes.
(bzr r3764.7.3)
Diffstat (limited to 'lockscreen')
| -rw-r--r-- | lockscreen/LockScreenPanel.cpp | 92 | ||||
| -rw-r--r-- | lockscreen/LockScreenPanel.h | 15 |
2 files changed, 62 insertions, 45 deletions
diff --git a/lockscreen/LockScreenPanel.cpp b/lockscreen/LockScreenPanel.cpp index 463ec4f9c..1985fdc34 100644 --- a/lockscreen/LockScreenPanel.cpp +++ b/lockscreen/LockScreenPanel.cpp @@ -48,6 +48,12 @@ const std::string INPUT_SWITCH_SCHEMA = "org.gnome.desktop.wm.keybindings"; const std::string INPUT_SWITCH_PREVIOUS = "switch-input-source-backward"; const std::string INPUT_SWITCH_NEXT = "switch-input-source"; +const std::string INDICATOR_KEYBOARD_BUS_NAME = "com.canonical.indicator.keyboard"; +const std::string INDICATOR_KEYBOARD_OBJECT_PATH = "/com/canonical/indicator/keyboard"; +const std::string INDICATOR_SOUND_BUS_NAME = "com.canonical.indicator.sound"; +const std::string INDICATOR_SOUND_OBJECT_PATH = "/com/canonical/indicator/sound"; +const std::string INDICATOR_ACTION_INTERFACE = "org.gtk.Actions"; + const unsigned int MODIFIERS = nux::KEY_MODIFIER_SHIFT | nux::KEY_MODIFIER_CAPS_LOCK | nux::KEY_MODIFIER_CTRL | @@ -105,44 +111,10 @@ Panel::Panel(int monitor_, Indicators::Ptr const& indicators, session::Manager:: QueueRelayout(); }); - activate_indicator_ = WindowManager::Default().activate_indicators_key(); - volume_mute_ = ParseAcceleratorString(glib::String(g_settings_get_string(media_key_settings_, MEDIA_KEYS_VOLUME_MUTE.c_str()))); - volume_down_ = ParseAcceleratorString(glib::String(g_settings_get_string(media_key_settings_, MEDIA_KEYS_VOLUME_DOWN.c_str()))); - volume_up_ = ParseAcceleratorString(glib::String(g_settings_get_string(media_key_settings_, MEDIA_KEYS_VOLUME_UP.c_str()))); - - auto variant = glib::Variant(g_settings_get_value(input_switch_settings_, INPUT_SWITCH_PREVIOUS.c_str()), glib::StealRef()); - - if (g_variant_n_children(variant) > 0) - { - const gchar *accelerator; - g_variant_get_child(variant, 0, "&s", &accelerator); - previous_source_ = ParseAcceleratorString(accelerator); - } - else - previous_source_ = std::make_pair(0, 0); - - variant = glib::Variant(g_settings_get_value(input_switch_settings_, INPUT_SWITCH_NEXT.c_str()), glib::StealRef()); - - if (g_variant_n_children(variant) > 0) - { - const gchar *accelerator; - g_variant_get_child(variant, 0, "&s", &accelerator); - next_source_ = ParseAcceleratorString(accelerator); - } - else - next_source_ = std::make_pair(0, 0); + ParseAccelerators(); key_down.connect(sigc::mem_fun(this, &Panel::OnKeyDown)); key_up.connect(sigc::mem_fun(this, &Panel::OnKeyUp)); - - indicator_sound_actions_ = std::make_shared<glib::DBusProxy>("com.canonical.indicator.sound", - "/com/canonical/indicator/sound", - "org.gtk.Actions", - G_BUS_TYPE_SESSION); - indicator_keyboard_actions_ = std::make_shared<glib::DBusProxy>("com.canonical.indicator.keyboard", - "/com/canonical/indicator/keyboard", - "org.gtk.Actions", - G_BUS_TYPE_SESSION); } void Panel::BuildTexture() @@ -294,6 +266,36 @@ Panel::Accelerator Panel::ParseAcceleratorString(std::string const& string) cons return std::make_pair(nux_modifiers, nux_key); } +void Panel::ParseAccelerators() +{ + activate_indicator_ = WindowManager::Default().activate_indicators_key(); + volume_mute_ = ParseAcceleratorString(glib::String(g_settings_get_string(media_key_settings_, MEDIA_KEYS_VOLUME_MUTE.c_str()))); + volume_down_ = ParseAcceleratorString(glib::String(g_settings_get_string(media_key_settings_, MEDIA_KEYS_VOLUME_DOWN.c_str()))); + volume_up_ = ParseAcceleratorString(glib::String(g_settings_get_string(media_key_settings_, MEDIA_KEYS_VOLUME_UP.c_str()))); + + auto variant = glib::Variant(g_settings_get_value(input_switch_settings_, INPUT_SWITCH_PREVIOUS.c_str()), glib::StealRef()); + + if (g_variant_n_children(variant) > 0) + { + const gchar *accelerator; + g_variant_get_child(variant, 0, "&s", &accelerator); + previous_source_ = ParseAcceleratorString(accelerator); + } + else + previous_source_ = std::make_pair(0, 0); + + variant = glib::Variant(g_settings_get_value(input_switch_settings_, INPUT_SWITCH_NEXT.c_str()), glib::StealRef()); + + if (g_variant_n_children(variant) > 0) + { + const gchar *accelerator; + g_variant_get_child(variant, 0, "&s", &accelerator); + next_source_ = ParseAcceleratorString(accelerator); + } + else + next_source_ = std::make_pair(0, 0); +} + bool Panel::WillHandleKeyEvent(unsigned int event_type, unsigned long key_sym, unsigned long modifiers) { auto is_press = event_type == nux::EVENT_KEY_DOWN; @@ -416,9 +418,10 @@ void Panel::OnKeyUp(unsigned int key_sym, } } -void Panel::Activate(std::shared_ptr<glib::DBusProxy> indicator, - std::string const& action, - glib::Variant const& parameter) const +void Panel::ActivateIndicatorAction(std::string const& bus_name, + std::string const& object_path, + std::string const& action, + glib::Variant const& parameter = glib::Variant()) const; { GVariantBuilder builder; @@ -432,7 +435,18 @@ void Panel::Activate(std::shared_ptr<glib::DBusProxy> indicator, g_variant_builder_add_parsed(&builder, "@a{sv} []"); - indicator->Call("Activate", g_variant_builder_end(&builder)); + auto proxy = std::make_shared<glib::DBusProxy>(bus_name, object_path, INDICATOR_ACTION_INTERFACE, G_BUS_TYPE_SESSION); + proxy->CallBegin("Activate", g_variant_builder_end(&builder), [proxy] (GVariant*, glib::Error const&) {}); +} + +void Panel::ActivateKeyboardAction(std::string const& action, glib::Variant const& parameter) const +{ + ActivateIndicatorAction(INDICATOR_KEYBOARD_BUS_NAME, INDICATOR_KEYBOARD_OBJECT_PATH, action, parameter); +} + +void Panel::ActivateSoundAction(std::string const& action, glib::Variant const& parameter) const +{ + ActivateIndicatorAction(INDICATOR_SOUND_BUS_NAME, INDICATOR_SOUND_OBJECT_PATH, action, parameter); } } diff --git a/lockscreen/LockScreenPanel.h b/lockscreen/LockScreenPanel.h index 06c4d52e7..8c31108a5 100644 --- a/lockscreen/LockScreenPanel.h +++ b/lockscreen/LockScreenPanel.h @@ -78,6 +78,8 @@ private: typedef std::pair<unsigned int, unsigned int> Accelerator; Accelerator ParseAcceleratorString(std::string const& string) const; + void ParseAccelerators(); + Accelerator activate_indicator_; Accelerator volume_mute_; Accelerator volume_down_; @@ -107,13 +109,14 @@ private: unsigned long key_code, unsigned long state); - std::shared_ptr<glib::DBusProxy> indicator_sound_actions_; - std::shared_ptr<glib::DBusProxy> indicator_keyboard_actions_; - /* This is just for telling an indicator to do something. */ - void Activate(std::shared_ptr<glib::DBusProxy> indicator, - std::string const& action, - glib::Variant const& parameter = glib::Variant()) const; + void ActivateIndicatorAction(std::string const& bus_name, + std::string const& object_path, + std::string const& action, + glib::Variant const& parameter = glib::Variant()) const; + + void ActivateKeyboardAction(std::string const& action, glib::Variant const& parameter = glib::Variant()) const; + void ActivateSoundAction(std::string const& action, glib::Variant const& parameter = glib::Variant()) const; }; } // lockscreen namespace |
