diff options
| -rw-r--r-- | UnityCore/GnomeSessionManager.cpp | 38 | ||||
| -rw-r--r-- | UnityCore/GnomeSessionManager.h | 1 | ||||
| -rw-r--r-- | UnityCore/GnomeSessionManagerImpl.h | 1 | ||||
| -rw-r--r-- | UnityCore/SessionManager.h | 2 | ||||
| -rw-r--r-- | shutdown/StandaloneSession.cpp | 1 | ||||
| -rw-r--r-- | tests/test_mock_session_manager.h | 1 |
6 files changed, 31 insertions, 13 deletions
diff --git a/UnityCore/GnomeSessionManager.cpp b/UnityCore/GnomeSessionManager.cpp index 6815f0843..ef5534c73 100644 --- a/UnityCore/GnomeSessionManager.cpp +++ b/UnityCore/GnomeSessionManager.cpp @@ -400,6 +400,26 @@ void GnomeManager::Impl::CallConsoleKitMethod(std::string const& method, GVarian }); } +void GnomeManager::Impl::LockScreen(bool prompt) +{ + EnsureCancelPendingAction(); + + // FIXME (andy) we should ask gnome-session to emit the logind signal + glib::Object<GSettings> lockdown_settings(g_settings_new(GNOME_LOCKDOWN_OPTIONS.c_str())); + + if (g_settings_get_boolean(lockdown_settings, DISABLE_LOCKSCREEN_KEY.c_str())) + { + return; + } + else if (manager_->UserName().find("guest-") == 0) + { + LOG_INFO(logger) << "Impossible to lock a guest session"; + return; + } + + prompt ? manager_->prompt_lock_requested.emit() : manager_->lock_requested.emit(); +} + // Public implementation GnomeManager::GnomeManager() @@ -435,20 +455,12 @@ std::string GnomeManager::HostName() const void GnomeManager::LockScreen() { - impl_->EnsureCancelPendingAction(); - - // FIXME (andy) we should ask gnome-session to emit the logind signal - glib::Object<GSettings> lockdown_settings(g_settings_new(GNOME_LOCKDOWN_OPTIONS.c_str())); + impl_->LockScreen(false); +} - if (g_settings_get_boolean(lockdown_settings, DISABLE_LOCKSCREEN_KEY.c_str())) { - return; - } - else if (UserName().find("guest-") == 0) - { - LOG_INFO(logger) << "Impossible to lock a guest session"; - return; - } - lock_requested.emit(); +void GnomeManager::PromptLockScreen() +{ + impl_->LockScreen(true); } void GnomeManager::Logout() diff --git a/UnityCore/GnomeSessionManager.h b/UnityCore/GnomeSessionManager.h index d32296d66..a8e57ea4a 100644 --- a/UnityCore/GnomeSessionManager.h +++ b/UnityCore/GnomeSessionManager.h @@ -38,6 +38,7 @@ public: std::string HostName() const; void LockScreen(); + void PromptLockScreen(); void Logout(); void Reboot(); void Shutdown(); diff --git a/UnityCore/GnomeSessionManagerImpl.h b/UnityCore/GnomeSessionManagerImpl.h index 32792d9b8..1045b78db 100644 --- a/UnityCore/GnomeSessionManagerImpl.h +++ b/UnityCore/GnomeSessionManagerImpl.h @@ -52,6 +52,7 @@ struct GnomeManager::Impl void CancelAction(); void ClosedDialog(); void EnsureCancelPendingAction(); + void LockScreen(bool prompt); GVariant* OnShellMethodCall(std::string const& method, GVariant* parameters); void CallGnomeSessionMethod(std::string const& method, GVariant* parameters = nullptr, diff --git a/UnityCore/SessionManager.h b/UnityCore/SessionManager.h index 06464024d..9375bec6d 100644 --- a/UnityCore/SessionManager.h +++ b/UnityCore/SessionManager.h @@ -41,6 +41,7 @@ public: virtual std::string HostName() const = 0; virtual void LockScreen() = 0; + virtual void PromptLockScreen() = 0; virtual void Logout() = 0; virtual void Reboot() = 0; virtual void Shutdown() = 0; @@ -59,6 +60,7 @@ public: sigc::signal<void> lock_requested; sigc::signal<void> unlock_requested; + sigc::signal<void> prompt_lock_requested; sigc::signal<void> locked; sigc::signal<void> unlocked; sigc::signal<void, bool /* inhibitors */> logout_requested; diff --git a/shutdown/StandaloneSession.cpp b/shutdown/StandaloneSession.cpp index 0c64b9afe..f8f1a713d 100644 --- a/shutdown/StandaloneSession.cpp +++ b/shutdown/StandaloneSession.cpp @@ -41,6 +41,7 @@ public: std::string HostName() const { return "tricky"; } void LockScreen() { std::cout << "LockScreen" << std::endl; } + void PromptLockScreen() { std::cout << "PromptLockScreen" << std::endl; } void Logout() { std::cout << "Logout" << std::endl; } void Reboot() { std::cout << "Reboot" << std::endl; } void Shutdown() { std::cout << "Shutdown" << std::endl; } diff --git a/tests/test_mock_session_manager.h b/tests/test_mock_session_manager.h index 42da560c5..1070b53fc 100644 --- a/tests/test_mock_session_manager.h +++ b/tests/test_mock_session_manager.h @@ -34,6 +34,7 @@ struct MockManager : Manager MOCK_CONST_METHOD0(HostName, std::string()); MOCK_METHOD0(LockScreen, void()); + MOCK_METHOD0(PromptLockScreen, void()); MOCK_METHOD0(Logout, void()); MOCK_METHOD0(Reboot, void()); MOCK_METHOD0(Shutdown, void()); |
