aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/Ui')
-rw-r--r--src/plugins/Ui/skinned/skin.cpp20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/plugins/Ui/skinned/skin.cpp b/src/plugins/Ui/skinned/skin.cpp
index ec2515405..8e7eedfb5 100644
--- a/src/plugins/Ui/skinned/skin.cpp
+++ b/src/plugins/Ui/skinned/skin.cpp
@@ -29,6 +29,9 @@
#include <QAction>
#include <QTextStream>
#include <QStringList>
+#ifdef Q_OS_WIN
+#include <QApplication>
+#endif
#include <qmmp/qmmp.h>
#include "actionmanager.h"
#include "skin.h"
@@ -58,6 +61,10 @@ Skin::Skin (QObject *parent) : QObject (parent)
m_instance = this;
QSettings settings(Qmmp::configFile(), QSettings::IniFormat);
QString path = settings.value("Skinned/skin_path").toString();
+#ifdef Q_OS_WIN
+ if(Qmmp::isPortable())
+ path.prepend(QApplication::applicationDirPath() + "/");
+#endif
if (path.isEmpty() || !QDir(path).exists ())
path = ":/glare";
m_double_size = settings.value("Skinned/double_size", false).toBool();
@@ -79,7 +86,18 @@ void Skin::setSkin (const QString& path)
m_use_cursors = settings.value("Skinned/skin_cursors", false).toBool();
m_double_size = ACTION(ActionManager::WM_DOUBLE_SIZE)->isChecked();
m_antialiasing = ACTION(ActionManager::WM_ANTIALIASING)->isChecked();
- settings.setValue("Skinned/skin_path",path);
+#ifdef Q_OS_WIN
+ if(Qmmp::isPortable() && path.startsWith(QApplication::applicationDirPath()))
+ {
+ QString relativePath = path;
+ relativePath.remove(QApplication::applicationDirPath(), Qt::CaseInsensitive);
+ if(relativePath.startsWith("/"))
+ relativePath.remove(0, 1);
+ settings.setValue("Skinned/skin_path", relativePath);
+ }
+ else
+#endif
+ settings.setValue("Skinned/skin_path",path);
qDebug ("Skin: using %s",qPrintable(path));
m_skin_dir = QDir (path);
//clear old values