summaryrefslogtreecommitdiff
path: root/src/gui/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/widgets')
-rw-r--r--src/gui/widgets/desktop.cpp25
-rw-r--r--src/gui/widgets/desktop.h3
2 files changed, 25 insertions, 3 deletions
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