diff --git a/res/images/skin_preview_placeholder.png b/res/images/skin_preview_placeholder.png
new file mode 100644
index 000000000000..047986ab1a15
Binary files /dev/null and b/res/images/skin_preview_placeholder.png differ
diff --git a/res/mixxx.qrc b/res/mixxx.qrc
index 87ce97ea5de1..191001acb965 100644
--- a/res/mixxx.qrc
+++ b/res/mixxx.qrc
@@ -26,6 +26,7 @@
images/library/ic_library_unchecked.png
images/mixxx-icon.png
images/mixxx-icon-logo-symbolic.svg
+ images/skin_preview_placeholder.png
images/preferences/ic_preferences_autodj.png
images/preferences/ic_preferences_bpmdetect.png
images/preferences/ic_preferences_broadcast.png
diff --git a/res/skins/Deere (64 Samplers)/preferences_preview_screenshot.png b/res/skins/Deere (64 Samplers)/preferences_preview_screenshot.png
new file mode 100644
index 000000000000..136c5fb1e83b
Binary files /dev/null and b/res/skins/Deere (64 Samplers)/preferences_preview_screenshot.png differ
diff --git a/res/skins/Deere/preferences_preview_screenshot.png b/res/skins/Deere/preferences_preview_screenshot.png
new file mode 100644
index 000000000000..b5abde0605fe
Binary files /dev/null and b/res/skins/Deere/preferences_preview_screenshot.png differ
diff --git a/res/skins/LateNight/preferences_preview_screenshot.png b/res/skins/LateNight/preferences_preview_screenshot.png
new file mode 100644
index 000000000000..325fabb43f2e
Binary files /dev/null and b/res/skins/LateNight/preferences_preview_screenshot.png differ
diff --git a/res/skins/Shade/preferences_preview_screenshot.png b/res/skins/Shade/preferences_preview_screenshot.png
new file mode 100644
index 000000000000..1c39f14db2c3
Binary files /dev/null and b/res/skins/Shade/preferences_preview_screenshot.png differ
diff --git a/res/skins/Tango (64 Samplers)/preferences_preview_screenshot.png b/res/skins/Tango (64 Samplers)/preferences_preview_screenshot.png
new file mode 100644
index 000000000000..a68261acbb5a
Binary files /dev/null and b/res/skins/Tango (64 Samplers)/preferences_preview_screenshot.png differ
diff --git a/res/skins/Tango/preferences_preview_screenshot.png b/res/skins/Tango/preferences_preview_screenshot.png
new file mode 100644
index 000000000000..a68a9f12af92
Binary files /dev/null and b/res/skins/Tango/preferences_preview_screenshot.png differ
diff --git a/src/preferences/dialog/dlgprefinterface.cpp b/src/preferences/dialog/dlgprefinterface.cpp
index 1bc50d4e655e..02dc8b5b0164 100644
--- a/src/preferences/dialog/dlgprefinterface.cpp
+++ b/src/preferences/dialog/dlgprefinterface.cpp
@@ -82,6 +82,7 @@ DlgPrefInterface::DlgPrefInterface(QWidget * parent, MixxxMainWindow * mixxx,
warningLabel->setText(warningString);
ComboBoxSkinconf->clear();
+ skinPreviewLabel->setText("");
QList skinSearchPaths = m_pSkinLoader->getSkinSearchPaths();
QList skins;
@@ -104,6 +105,7 @@ DlgPrefInterface::DlgPrefInterface(QWidget * parent, MixxxMainWindow * mixxx,
if (skinInfo.absoluteFilePath() == configuredSkinPath) {
m_skin = skinInfo.fileName();
ComboBoxSkinconf->setCurrentIndex(index);
+ skinPreviewLabel->setPixmap(m_pSkinLoader->getSkinPreview(m_skin));
if (size_ok) {
warningLabel->hide();
} else {
@@ -329,6 +331,7 @@ void DlgPrefInterface::slotSetScheme(int) {
void DlgPrefInterface::slotSetSkin(int) {
QString newSkin = ComboBoxSkinconf->currentText();
+ skinPreviewLabel->setPixmap(m_pSkinLoader->getSkinPreview(newSkin));
if (newSkin != m_skin) {
m_skin = newSkin;
m_bRebootMixxxView = newSkin != m_skinOnUpdate;
diff --git a/src/preferences/dialog/dlgprefinterfacedlg.ui b/src/preferences/dialog/dlgprefinterfacedlg.ui
index f65372ef7e0b..f07de235da2f 100644
--- a/src/preferences/dialog/dlgprefinterfacedlg.ui
+++ b/src/preferences/dialog/dlgprefinterfacedlg.ui
@@ -6,7 +6,7 @@
0
0
- 562
+ 594
723
@@ -52,7 +52,7 @@
- -
+
-
@@ -81,7 +81,7 @@
- -
+
-
@@ -97,7 +97,7 @@
- -
+
-
Locale
@@ -107,14 +107,14 @@
- -
+
-
Locales determine country and language specific settings.
- -
+
-
Full-screen mode
@@ -124,14 +124,14 @@
- -
+
-
Start in full-screen mode
- -
+
-
true
@@ -150,7 +150,7 @@
- -
+
-
-
@@ -184,7 +184,7 @@
- -
+
-
HiDPI / Retina scaling
@@ -194,7 +194,7 @@
- -
+
-
Change the size of text, buttons, and other items.
@@ -216,7 +216,7 @@
- -
+
-
Adopt scale factor from the operating system
@@ -226,16 +226,23 @@
- -
+
-
Screen saver
- -
+
-
+ -
+
+
+ skin preview screenshot goes here
+
+
+
diff --git a/src/skin/skinloader.cpp b/src/skin/skinloader.cpp
index 7c2f4baa4c04..f03e3e3064e7 100644
--- a/src/skin/skinloader.cpp
+++ b/src/skin/skinloader.cpp
@@ -56,6 +56,14 @@ QString SkinLoader::getSkinPath(const QString& skinName) const {
return QString();
}
+QPixmap SkinLoader::getSkinPreview(const QString& skinName) const {
+ QPixmap preview(getSkinPath(skinName) + "/preferences_preview_screenshot.png");
+ if (!preview.isNull()){
+ return preview;
+ }
+ return QPixmap(":/images/skin_preview_placeholder.png");
+}
+
QString SkinLoader::getConfiguredSkinPath() const {
QString configSkin = m_pConfig->getValueString(ConfigKey("[Config]", "ResizableSkin"));
diff --git a/src/skin/skinloader.h b/src/skin/skinloader.h
index aa2aac4eeb19..e31741823e10 100644
--- a/src/skin/skinloader.h
+++ b/src/skin/skinloader.h
@@ -33,6 +33,7 @@ class SkinLoader {
LaunchImage* loadLaunchImage(QWidget* pParent);
QString getSkinPath(const QString& skinName) const;
+ QPixmap getSkinPreview(const QString& skinName) const;
QString getConfiguredSkinPath() const;
QString getDefaultSkinName() const;
QList getSkinSearchPaths() const;