diff --git a/launcher/Application.cpp b/launcher/Application.cpp
index 66044d9ac..9cff11546 100644
--- a/launcher/Application.cpp
+++ b/launcher/Application.cpp
@@ -536,6 +536,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv)
m_settings->registerSetting("IconsDir", "icons");
m_settings->registerSetting("DownloadsDir", QStandardPaths::writableLocation(QStandardPaths::DownloadLocation));
m_settings->registerSetting("DownloadsDirWatchRecursive", false);
+ m_settings->registerSetting("SkinsDir", "skins");
// Editors
m_settings->registerSetting("JsonEditor", QString());
diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp
index 5e55a5abb..a82932e08 100644
--- a/launcher/ui/MainWindow.cpp
+++ b/launcher/ui/MainWindow.cpp
@@ -1186,6 +1186,11 @@ void MainWindow::on_actionViewCentralModsFolder_triggered()
DesktopServices::openDirectory(APPLICATION->settings()->get("CentralModsDir").toString(), true);
}
+void MainWindow::on_actionViewSkinsFolder_triggered()
+{
+ DesktopServices::openDirectory(APPLICATION->settings()->get("SkinsDir").toString(), true);
+}
+
void MainWindow::on_actionViewIconThemeFolder_triggered()
{
DesktopServices::openDirectory(APPLICATION->themeManager()->getIconThemesFolder().path());
diff --git a/launcher/ui/MainWindow.h b/launcher/ui/MainWindow.h
index 0b6144522..5d816b5d0 100644
--- a/launcher/ui/MainWindow.h
+++ b/launcher/ui/MainWindow.h
@@ -118,6 +118,8 @@ class MainWindow : public QMainWindow {
void on_actionViewWidgetThemeFolder_triggered();
void on_actionViewCatPackFolder_triggered();
+ void on_actionViewSkinsFolder_triggered();
+
void on_actionViewSelectedInstFolder_triggered();
void refreshInstances();
diff --git a/launcher/ui/MainWindow.ui b/launcher/ui/MainWindow.ui
index 91b2c2703..266551588 100644
--- a/launcher/ui/MainWindow.ui
+++ b/launcher/ui/MainWindow.ui
@@ -190,6 +190,7 @@
+
@@ -575,6 +576,18 @@
Open the central mods folder in a file browser.
+
+
+
+ ..
+
+
+ View &Skins Folder
+
+
+ Open the skins folder in a file browser.
+
+
Themes
diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp
index 7f22fdb50..5576a0339 100644
--- a/launcher/ui/pages/global/LauncherPage.cpp
+++ b/launcher/ui/pages/global/LauncherPage.cpp
@@ -173,6 +173,17 @@ void LauncherPage::on_downloadsDirBrowseBtn_clicked()
}
}
+void LauncherPage::on_skinsDirBrowseBtn_clicked()
+{
+ QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Skins Folder"), ui->skinsDirTextBox->text());
+
+ // do not allow current dir - it's dirty. Do not allow dirs that don't exist
+ if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) {
+ QString cooked_dir = FS::NormalizePath(raw_dir);
+ ui->skinsDirTextBox->setText(cooked_dir);
+ }
+}
+
void LauncherPage::on_metadataDisableBtn_clicked()
{
ui->metadataWarningLabel->setHidden(!ui->metadataDisableBtn->isChecked());
@@ -205,6 +216,7 @@ void LauncherPage::applySettings()
s->set("CentralModsDir", ui->modsDirTextBox->text());
s->set("IconsDir", ui->iconsDirTextBox->text());
s->set("DownloadsDir", ui->downloadsDirTextBox->text());
+ s->set("SkinsDir", ui->skinsDirTextBox->text());
s->set("DownloadsDirWatchRecursive", ui->downloadsDirWatchRecursiveCheckBox->isChecked());
auto sortMode = (InstSortMode)ui->sortingModeGroup->checkedId();
@@ -259,6 +271,7 @@ void LauncherPage::loadSettings()
ui->modsDirTextBox->setText(s->get("CentralModsDir").toString());
ui->iconsDirTextBox->setText(s->get("IconsDir").toString());
ui->downloadsDirTextBox->setText(s->get("DownloadsDir").toString());
+ ui->skinsDirTextBox->setText(s->get("SkinsDir").toString());
ui->downloadsDirWatchRecursiveCheckBox->setChecked(s->get("DownloadsDirWatchRecursive").toBool());
QString sortMode = s->get("InstSortMode").toString();
diff --git a/launcher/ui/pages/global/LauncherPage.h b/launcher/ui/pages/global/LauncherPage.h
index e733224d2..f9aefb171 100644
--- a/launcher/ui/pages/global/LauncherPage.h
+++ b/launcher/ui/pages/global/LauncherPage.h
@@ -74,6 +74,7 @@ class LauncherPage : public QWidget, public BasePage {
void on_modsDirBrowseBtn_clicked();
void on_iconsDirBrowseBtn_clicked();
void on_downloadsDirBrowseBtn_clicked();
+ void on_skinsDirBrowseBtn_clicked();
void on_metadataDisableBtn_clicked();
/*!
diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui
index bc259a9b8..87c4b5ef9 100644
--- a/launcher/ui/pages/global/LauncherPage.ui
+++ b/launcher/ui/pages/global/LauncherPage.ui
@@ -67,7 +67,7 @@
Folders
- -
+
-
&Downloads:
@@ -90,13 +90,16 @@
-
- -
+
-
-
- -
+
-
+
+
+ -
Browse
@@ -147,7 +150,24 @@
- -
+
-
+
+
+ Browse
+
+
+
+ -
+
+
+ &Skins:
+
+
+ skinsDirTextBox
+
+
+
+ -
When enabled, in addition to the downloads folder, its sub folders will also be searched when looking for resources (e.g. when looking for blocked mods on CurseForge).