From 840fd10e1843ac4aac01595fe0701bc35a1bcfd3 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 12 Dec 2013 12:34:35 +0300 Subject: add theming for desktop object. New theme file: desktop.xml Theme options: showBackground - to show or hide background versionX - version label position by x versionY - version label position by y --- src/gui/widgets/desktop.cpp | 25 ++++++++++++++++++++++--- src/gui/widgets/desktop.h | 3 +++ 2 files changed, 25 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gui/widgets/desktop.cpp b/src/gui/widgets/desktop.cpp index 9bbe91cbb..d2e132c56 100644 --- a/src/gui/widgets/desktop.cpp +++ b/src/gui/widgets/desktop.cpp @@ -38,13 +38,22 @@ Desktop::Desktop(const Widget2 *const widget) : gcn::WidgetListener(), mWallpaper(nullptr), mVersionLabel(nullptr), + mSkin(nullptr), mBackgroundColor(getThemeColor(Theme::BACKGROUND, 128)), - mBackgroundGrayColor(getThemeColor(Theme::BACKGROUND_GRAY)) + mBackgroundGrayColor(getThemeColor(Theme::BACKGROUND_GRAY)), + mShowBackground(true) { addWidgetListener(this); Wallpaper::loadWallpapers(); + Theme *const theme = Theme::instance(); + if (theme) + mSkin = theme->load("desktop.xml", ""); + + if (mSkin) + mShowBackground = mSkin->getOption("showBackground"); + const std::string appName = branding.getValue("appName", std::string()); if (appName.empty()) { @@ -66,11 +75,21 @@ Desktop::~Desktop() mWallpaper->decRef(); mWallpaper = nullptr; } + if (Theme::instance()) + Theme::instance()->unload(mSkin); } void Desktop::postInit() { - add(mVersionLabel, 25, 2); + if (mSkin) + { + add(mVersionLabel, mSkin->getOption("versionX", 25), + mSkin->getOption("versionY", 2)); + } + else + { + add(mVersionLabel, 25, 2); + } } void Desktop::reloadWallpaper() @@ -132,7 +151,7 @@ void Desktop::draw(gcn::Graphics *graphics) void Desktop::setBestFittingWallpaper() { - if (!config.getBoolValue("showBackground")) + if (!mShowBackground || !config.getBoolValue("showBackground")) return; const std::string wallpaperName = diff --git a/src/gui/widgets/desktop.h b/src/gui/widgets/desktop.h index 112d1e794..824620f3b 100644 --- a/src/gui/widgets/desktop.h +++ b/src/gui/widgets/desktop.h @@ -30,6 +30,7 @@ class Image; class Label; +class Skin; /** * Desktop widget, for drawing a background image and color. @@ -69,8 +70,10 @@ class Desktop final : public Container, private gcn::WidgetListener Image *mWallpaper; Label *mVersionLabel; + Skin *mSkin; gcn::Color mBackgroundColor; gcn::Color mBackgroundGrayColor; + bool mShowBackground; }; #endif // GUI_WIDGETS_DESKTOP_H -- cgit v1.2.3-70-g09d2