diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-03-06 22:37:11 +0100 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-03-06 22:37:11 +0100 |
| commit | b683fc9e0af67ae2414a14ea0eaa47ea35f6e0eb (patch) | |
| tree | f9fa4be22d29980fde5da0ea943c32ad5125f248 | |
| parent | 644f78ffc8ce207768aaa36a3f09ae67fef43a42 (diff) | |
LockScreenSettings: bind unity greeter options with LockScreenSettings
(bzr r3695.4.47)
| -rw-r--r-- | lockscreen/LockScreenSettings.cpp | 38 | ||||
| -rw-r--r-- | lockscreen/LockScreenSettings.h | 11 | ||||
| -rw-r--r-- | tests/data/external.gschema.xml | 6 |
3 files changed, 55 insertions, 0 deletions
diff --git a/lockscreen/LockScreenSettings.cpp b/lockscreen/LockScreenSettings.cpp index d00c24f8f..c791be237 100644 --- a/lockscreen/LockScreenSettings.cpp +++ b/lockscreen/LockScreenSettings.cpp @@ -20,6 +20,9 @@ #include "LockScreenSettings.h" #include <NuxCore/Logger.h> +#include <sigc++/adaptors/hide.h> +#include <UnityCore/GLibSignal.h> +#include <UnityCore/GLibWrapper.h> namespace unity { @@ -31,8 +34,42 @@ DECLARE_LOGGER(logger, "unity.lockscreen.settings"); namespace { Settings* settings_instance = nullptr; + +const std::string GREETER_SETTINGS = "com.canonical.unity-greeter"; +const std::string LOGO_KEY = "logo"; +const std::string FONT_KEY = "font-name"; +const std::string BACKGROUND_KEY = "background"; +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"; } +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)))) + { + UpdateSettings(); + } + + void UpdateSettings() + { + auto* s = settings_instance; + s->font_name = glib::String(g_settings_get_string(greeter_settings_, FONT_KEY.c_str())).Str(); + s->logo = glib::String(g_settings_get_string(greeter_settings_, LOGO_KEY.c_str())).Str(); + s->background = glib::String(g_settings_get_string(greeter_settings_, BACKGROUND_KEY.c_str())).Str(); + s->background_color = nux::Color(glib::String(g_settings_get_string(greeter_settings_, BACKGROUND_COLOR_KEY.c_str())).Str()); + s->show_hostname = g_settings_get_boolean(greeter_settings_, SHOW_HOSTNAME_KEY.c_str()) != FALSE; + s->use_user_background = g_settings_get_boolean(greeter_settings_, USER_BG_KEY.c_str()) != FALSE; + s->draw_grid = g_settings_get_boolean(greeter_settings_, DRAW_GRID_KEY.c_str()) != FALSE; + } + + glib::Object<GSettings> greeter_settings_; + glib::Signal<void, GSettings*, const gchar*> signal_; +}; + Settings::Settings() { if (settings_instance) @@ -43,6 +80,7 @@ Settings::Settings() { lockscreen_type = Type::UNITY; settings_instance = this; + impl_.reset(new Impl()); } } diff --git a/lockscreen/LockScreenSettings.h b/lockscreen/LockScreenSettings.h index 0a017e779..4e1148673 100644 --- a/lockscreen/LockScreenSettings.h +++ b/lockscreen/LockScreenSettings.h @@ -45,8 +45,19 @@ public: static Settings& Instance(); nux::Property<Type> lockscreen_type; + nux::Property<std::string> font_name; + nux::Property<std::string> logo; + nux::Property<std::string> background; + nux::Property<nux::Color> background_color; + nux::Property<bool> show_hostname; + nux::Property<bool> use_user_background; + nux::Property<bool> draw_grid; static const int GRID_SIZE = 40; + +private: + struct Impl; + std::unique_ptr<Impl> impl_; }; } diff --git a/tests/data/external.gschema.xml b/tests/data/external.gschema.xml index d3928da58..160b79723 100644 --- a/tests/data/external.gschema.xml +++ b/tests/data/external.gschema.xml @@ -57,6 +57,9 @@ <key type="s" name="logo"> <default>'/usr/share/unity-greeter/logo.png'</default> </key> + <key type="s" name="font-name"> + <default>'Ubuntu 11'</default> + </key> <key type="s" name="background"> <default>'/usr/share/backgrounds/warty-final-ubuntu.png'</default> </key> @@ -69,5 +72,8 @@ <key type="b" name="draw-grid"> <default>true</default> </key> + <key type="b" name="show-hostname"> + <default>true</default> + </key> </schema> </schemalist> |
