diff options
| -rw-r--r-- | lockscreen/LockScreenController.cpp | 2 | ||||
| -rw-r--r-- | lockscreen/LockScreenSettings.cpp | 29 | ||||
| -rw-r--r-- | lockscreen/LockScreenSettings.h | 5 | ||||
| -rw-r--r-- | lockscreen/ScreenSaverDBusManager.cpp | 5 |
4 files changed, 34 insertions, 7 deletions
diff --git a/lockscreen/LockScreenController.cpp b/lockscreen/LockScreenController.cpp index c778ed874..50d745856 100644 --- a/lockscreen/LockScreenController.cpp +++ b/lockscreen/LockScreenController.cpp @@ -65,7 +65,7 @@ Controller::Controller(session::Manager::Ptr const& session_manager, session_manager_->unlock_requested.connect(sigc::mem_fun(this, &Controller::OnUnlockRequested)); session_manager_->presence_status_changed.connect([this](bool is_idle) { - if (is_idle) + if (is_idle && Settings::Instance().idle_activation_enabled()) { EnsureFadeWindows(UScreen::GetDefault()->GetMonitors()); animation::StartOrReverse(fade_windows_animator_, animation::Direction::FORWARD); diff --git a/lockscreen/LockScreenSettings.cpp b/lockscreen/LockScreenSettings.cpp index c791be237..5b55196f2 100644 --- a/lockscreen/LockScreenSettings.cpp +++ b/lockscreen/LockScreenSettings.cpp @@ -43,18 +43,27 @@ const std::string BACKGROUND_COLOR_KEY = "background-color"; const std::string USER_BG_KEY = "draw-user-backgrounds"; const std::string DRAW_GRID_KEY = "draw-grid"; const std::string SHOW_HOSTNAME_KEY = "show-hostname"; + +const std::string GS_SETTINGS = "org.gnome.desktop.screensaver"; +const std::string IDLE_ACTIVATION_ENABLED_KEY = "idle-activation-enabled"; +const std::string LOCK_DELAY = "lock-delay"; +const std::string LOCK_ENABLED = "lock-enabled"; +const std::string LOCK_ON_SUSPEND = "ubuntu-lock-on-suspend"; } struct Settings::Impl { Impl() : greeter_settings_(g_settings_new(GREETER_SETTINGS.c_str())) - , signal_(greeter_settings_, "changed", sigc::hide(sigc::hide(sigc::mem_fun(this, &Impl::UpdateSettings)))) + , gs_settings_(g_settings_new(GS_SETTINGS.c_str())) + , greeter_signal_(greeter_settings_, "changed", sigc::hide(sigc::hide(sigc::mem_fun(this, &Impl::UpdateGreeterSettings)))) + , gs_signal_(gs_settings_, "changed", sigc::hide(sigc::hide(sigc::mem_fun(this, &Impl::UpdateGSSettings)))) { - UpdateSettings(); + UpdateGreeterSettings(); + UpdateGSSettings(); } - void UpdateSettings() + void UpdateGreeterSettings() { auto* s = settings_instance; s->font_name = glib::String(g_settings_get_string(greeter_settings_, FONT_KEY.c_str())).Str(); @@ -66,8 +75,20 @@ struct Settings::Impl s->draw_grid = g_settings_get_boolean(greeter_settings_, DRAW_GRID_KEY.c_str()) != FALSE; } + void UpdateGSSettings() + { + auto* s = settings_instance; + s->idle_activation_enabled = g_settings_get_boolean(gs_settings_, IDLE_ACTIVATION_ENABLED_KEY.c_str()) != FALSE; + s->lock_enabled = g_settings_get_boolean(gs_settings_, LOCK_ENABLED.c_str()) != FALSE; + s->lock_on_suspend = g_settings_get_boolean(gs_settings_, LOCK_ON_SUSPEND.c_str()) != FALSE; + s->lock_delay = g_settings_get_int(gs_settings_, LOCK_DELAY.c_str()); + } + glib::Object<GSettings> greeter_settings_; - glib::Signal<void, GSettings*, const gchar*> signal_; + glib::Object<GSettings> gs_settings_; + + glib::Signal<void, GSettings*, const gchar*> greeter_signal_; + glib::Signal<void, GSettings*, const gchar*> gs_signal_; }; Settings::Settings() diff --git a/lockscreen/LockScreenSettings.h b/lockscreen/LockScreenSettings.h index 4e1148673..af7d58711 100644 --- a/lockscreen/LockScreenSettings.h +++ b/lockscreen/LockScreenSettings.h @@ -53,6 +53,11 @@ public: nux::Property<bool> use_user_background; nux::Property<bool> draw_grid; + nux::Property<bool> idle_activation_enabled; + nux::Property<int> lock_delay; + nux::Property<bool> lock_enabled; + nux::Property<bool> lock_on_suspend; + static const int GRID_SIZE = 40; private: diff --git a/lockscreen/ScreenSaverDBusManager.cpp b/lockscreen/ScreenSaverDBusManager.cpp index d54852d39..8252c71dc 100644 --- a/lockscreen/ScreenSaverDBusManager.cpp +++ b/lockscreen/ScreenSaverDBusManager.cpp @@ -19,7 +19,7 @@ #include "ScreenSaverDBusManager.h" -#include <iostream> +#include "LockScreenSettings.h" namespace unity { @@ -85,7 +85,8 @@ DBusManager::DBusManager(session::Manager::Ptr const& session) connections_.Add(session_->presence_status_changed.connect([this] (bool value) { - object_->EmitSignal("ActiveChanged", g_variant_new("(b)", value)); + if (Settings::Instance().idle_activation_enabled()) + object_->EmitSignal("ActiveChanged", g_variant_new("(b)", value)); })); return nullptr; |
