diff --git a/src/mumble/LookConfig.cpp b/src/mumble/LookConfig.cpp
index f3aa1d98f..dc6c81ad2 100644
--- a/src/mumble/LookConfig.cpp
+++ b/src/mumble/LookConfig.cpp
@@ -81,6 +81,13 @@ LookConfig::LookConfig(Settings &st) : ConfigWidget(st) {
qcbChannelDrag->insertItem(Settings::Ask, tr("Ask"), Settings::Ask);
qcbChannelDrag->insertItem(Settings::DoNothing, tr("Do Nothing"), Settings::DoNothing);
qcbChannelDrag->insertItem(Settings::Move, tr("Move"), Settings::Move);
+
+ QDir userThemeDirectory = Themes::getUserThemesDirectory();
+ if (userThemeDirectory.exists()) {
+ QUrl userThemeDirectoryUrl = QUrl::fromLocalFile(userThemeDirectory.path());
+ qlThemesDirectory->setText(tr("Browse").arg(userThemeDirectoryUrl.toString()));
+ qlThemesDirectory->setOpenExternalLinks(true);
+ }
}
QString LookConfig::title() const {
@@ -148,17 +155,17 @@ void LookConfig::load(const Settings &r) {
theme != themes.end();
++theme) {
- for (ThemeInfo::StylesMap::const_iterator style = theme->styles.begin();
- style != theme->styles.end();
- ++style) {
+ for (ThemeInfo::StylesMap::const_iterator styleit = theme->styles.begin();
+ styleit != theme->styles.end();
+ ++styleit) {
if (configuredStyle
- && configuredStyle->themeName == style->themeName
- && configuredStyle->name == style->name) {
+ && configuredStyle->themeName == styleit->themeName
+ && configuredStyle->name == styleit->name) {
selectedThemeEntry = qcbTheme->count();
}
- qcbTheme->addItem(theme->name + QLatin1String(" - ") + style->name, QVariant::fromValue(*style));
+ qcbTheme->addItem(theme->name + QLatin1String(" - ") + styleit->name, QVariant::fromValue(*styleit));
}
}
diff --git a/src/mumble/LookConfig.ui b/src/mumble/LookConfig.ui
index 6f843386d..a4561e86f 100644
--- a/src/mumble/LookConfig.ui
+++ b/src/mumble/LookConfig.ui
@@ -6,7 +6,7 @@
0
0
- 644
+ 702
611
@@ -93,6 +93,16 @@
+ -
+
+
+
+
+
+ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
+
+
+
diff --git a/src/mumble/Themes.cpp b/src/mumble/Themes.cpp
index 9860e33eb..9fecb3624 100644
--- a/src/mumble/Themes.cpp
+++ b/src/mumble/Themes.cpp
@@ -124,6 +124,10 @@ ThemeMap Themes::getThemes() {
return ThemeInfo::scanDirectories(getSearchDirectories());
}
+QDir Themes::getUserThemesDirectory() {
+ return QDir(g.qdBasePath.absolutePath() + QLatin1String("/Themes"));
+}
+
QVector Themes::getSearchDirectories() {
QVector themeSearchDirectories;
@@ -132,7 +136,7 @@ QVector Themes::getSearchDirectories() {
// Next come themes found in the applications Themes directory
themeSearchDirectories << QDir(MumbleApplication::instance()->applicationVersionRootPath() + QLatin1String("/Themes"));
// Highest priorty have themes located in the user directory
- themeSearchDirectories << QDir(g.qdBasePath.absolutePath() + QLatin1String("/Themes"));
+ themeSearchDirectories << getUserThemesDirectory();
return themeSearchDirectories;
}
diff --git a/src/mumble/Themes.h b/src/mumble/Themes.h
index 8904db380..a6cac4689 100644
--- a/src/mumble/Themes.h
+++ b/src/mumble/Themes.h
@@ -58,6 +58,9 @@ public:
/// Return a theme name to theme map
static ThemeMap getThemes();
+ /// Returns the per user themes directory
+ static QDir getUserThemesDirectory();
+
private:
/// Applies the fallback stylesheet
static void applyFallback();