aboutsummaryrefslogtreecommitdiff
path: root/launcher
diff options
context:
space:
mode:
Diffstat (limited to 'launcher')
-rw-r--r--launcher/BaseInstance.h3
-rw-r--r--launcher/NullInstance.h3
-rw-r--r--launcher/minecraft/MinecraftInstance.cpp4
-rw-r--r--launcher/minecraft/MinecraftInstance.h2
-rw-r--r--launcher/minecraft/legacy/LegacyInstance.cpp10
-rw-r--r--launcher/minecraft/legacy/LegacyInstance.h6
-rw-r--r--launcher/ui/MainWindow.cpp36
-rw-r--r--launcher/ui/MainWindow.h4
8 files changed, 58 insertions, 10 deletions
diff --git a/launcher/BaseInstance.h b/launcher/BaseInstance.h
index fd26bb4f..488f2781 100644
--- a/launcher/BaseInstance.h
+++ b/launcher/BaseInstance.h
@@ -100,6 +100,9 @@ public:
return instanceRoot();
}
+ /// Path to the instance's mods directory.
+ virtual QString modsRoot() const = 0;
+
QString name() const;
void setName(QString val);
diff --git a/launcher/NullInstance.h b/launcher/NullInstance.h
index 94ed6c3a..ed421433 100644
--- a/launcher/NullInstance.h
+++ b/launcher/NullInstance.h
@@ -73,4 +73,7 @@ public:
out << "Null instance - placeholder.";
return out;
}
+ QString modsRoot() const override {
+ return QString();
+ }
};
diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp
index 4c16e572..2526e620 100644
--- a/launcher/minecraft/MinecraftInstance.cpp
+++ b/launcher/minecraft/MinecraftInstance.cpp
@@ -202,7 +202,7 @@ QString MinecraftInstance::jarModsDir() const
return jarmods_dir.absolutePath();
}
-QString MinecraftInstance::loaderModsDir() const
+QString MinecraftInstance::modsRoot() const
{
return FS::PathCombine(gameRoot(), "mods");
}
@@ -961,7 +961,7 @@ std::shared_ptr<ModFolderModel> MinecraftInstance::loaderModList() const
{
if (!m_loader_mod_list)
{
- m_loader_mod_list.reset(new ModFolderModel(loaderModsDir()));
+ m_loader_mod_list.reset(new ModFolderModel(modsRoot()));
m_loader_mod_list->disableInteraction(isRunning());
connect(this, &BaseInstance::runningStatusChanged, m_loader_mod_list.get(), &ModFolderModel::disableInteraction);
}
diff --git a/launcher/minecraft/MinecraftInstance.h b/launcher/minecraft/MinecraftInstance.h
index bb45f37b..fda58aa7 100644
--- a/launcher/minecraft/MinecraftInstance.h
+++ b/launcher/minecraft/MinecraftInstance.h
@@ -40,7 +40,7 @@ public:
QString resourcePacksDir() const;
QString texturePacksDir() const;
QString shaderPacksDir() const;
- QString loaderModsDir() const;
+ QString modsRoot() const override;
QString coreModsDir() const;
QString modsCacheLocation() const;
QString libDir() const;
diff --git a/launcher/minecraft/legacy/LegacyInstance.cpp b/launcher/minecraft/legacy/LegacyInstance.cpp
index c2b4309c..f467ec06 100644
--- a/launcher/minecraft/legacy/LegacyInstance.cpp
+++ b/launcher/minecraft/legacy/LegacyInstance.cpp
@@ -122,6 +122,11 @@ QString LegacyInstance::binRoot() const
return FS::PathCombine(gameRoot(), "bin");
}
+QString LegacyInstance::modsRoot() const {
+ return FS::PathCombine(gameRoot(), "mods");
+}
+
+
QString LegacyInstance::jarModsDir() const
{
return FS::PathCombine(instanceRoot(), "instMods");
@@ -137,11 +142,6 @@ QString LegacyInstance::savesDir() const
return FS::PathCombine(gameRoot(), "saves");
}
-QString LegacyInstance::loaderModsDir() const
-{
- return FS::PathCombine(gameRoot(), "mods");
-}
-
QString LegacyInstance::coreModsDir() const
{
return FS::PathCombine(gameRoot(), "coremods");
diff --git a/launcher/minecraft/legacy/LegacyInstance.h b/launcher/minecraft/legacy/LegacyInstance.h
index c6680fd0..298543f7 100644
--- a/launcher/minecraft/legacy/LegacyInstance.h
+++ b/launcher/minecraft/legacy/LegacyInstance.h
@@ -45,11 +45,13 @@ public:
QString savesDir() const;
QString texturePacksDir() const;
QString jarModsDir() const;
- QString loaderModsDir() const;
QString coreModsDir() const;
QString resourceDir() const;
- virtual QString instanceConfigFolder() const override;
+
+ QString instanceConfigFolder() const override;
+
QString gameRoot() const override; // Path to the instance's minecraft directory.
+ QString modsRoot() const override; // Path to the instance's minecraft directory.
QString binRoot() const; // Path to the instance's minecraft bin directory.
/// Get the curent base jar of this instance. By default, it's the
diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp
index ac539fdc..b06f3d5a 100644
--- a/launcher/ui/MainWindow.cpp
+++ b/launcher/ui/MainWindow.cpp
@@ -211,8 +211,10 @@ public:
TranslatedAction actionEditInstNotes;
TranslatedAction actionEditInstance;
TranslatedAction actionWorlds;
+ TranslatedAction actionMods;
TranslatedAction actionViewSelectedInstFolder;
TranslatedAction actionViewSelectedMCFolder;
+ TranslatedAction actionViewSelectedModsFolder;
TranslatedAction actionDeleteInstance;
TranslatedAction actionConfig_Folder;
TranslatedAction actionCAT;
@@ -530,6 +532,13 @@ public:
all_actions.append(&actionEditInstNotes);
instanceToolBar->addAction(actionEditInstNotes);
+ actionMods = TranslatedAction(MainWindow);
+ actionMods->setObjectName(QStringLiteral("actionMods"));
+ actionMods.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View Mods"));
+ actionMods.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "View the mods of this instance."));
+ all_actions.append(&actionMods);
+ instanceToolBar->addAction(actionMods);
+
actionWorlds = TranslatedAction(MainWindow);
actionWorlds->setObjectName(QStringLiteral("actionWorlds"));
actionWorlds.setTextId(QT_TRANSLATE_NOOP("MainWindow", "View Worlds"));
@@ -560,6 +569,15 @@ public:
all_actions.append(&actionViewSelectedMCFolder);
instanceToolBar->addAction(actionViewSelectedMCFolder);
+ /*
+ actionViewSelectedModsFolder = TranslatedAction(MainWindow);
+ actionViewSelectedModsFolder->setObjectName(QStringLiteral("actionViewSelectedModsFolder"));
+ actionViewSelectedModsFolder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Mods Folder"));
+ actionViewSelectedModsFolder.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the selected instance's mods folder in a file browser."));
+ all_actions.append(&actionViewSelectedModsFolder);
+ instanceToolBar->addAction(actionViewSelectedModsFolder);
+ */
+
actionConfig_Folder = TranslatedAction(MainWindow);
actionConfig_Folder->setObjectName(QStringLiteral("actionConfig_Folder"));
actionConfig_Folder.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Config Folder"));
@@ -1651,6 +1669,11 @@ void MainWindow::on_actionWorlds_triggered()
APPLICATION->showInstanceWindow(m_selectedInstance, "worlds");
}
+void MainWindow::on_actionMods_triggered()
+{
+ APPLICATION->showInstanceWindow(m_selectedInstance, "mods");
+}
+
void MainWindow::on_actionEditInstance_triggered()
{
APPLICATION->showInstanceWindow(m_selectedInstance);
@@ -1761,6 +1784,19 @@ void MainWindow::on_actionViewSelectedMCFolder_triggered()
}
}
+void MainWindow::on_actionViewSelectedModsFolder_triggered()
+{
+ if (m_selectedInstance)
+ {
+ QString str = m_selectedInstance->modsRoot();
+ if (!FS::ensureFilePathExists(str))
+ {
+ // TODO: report error
+ return;
+ }
+ DesktopServices::openDirectory(QDir(str).absolutePath());
+ }
+}
void MainWindow::closeEvent(QCloseEvent *event)
{
diff --git a/launcher/ui/MainWindow.h b/launcher/ui/MainWindow.h
index 7e1256cc..e462c524 100644
--- a/launcher/ui/MainWindow.h
+++ b/launcher/ui/MainWindow.h
@@ -93,6 +93,8 @@ private slots:
void on_actionViewSelectedMCFolder_triggered();
+ void on_actionViewSelectedModsFolder_triggered();
+
void refreshInstances();
void on_actionViewCentralModsFolder_triggered();
@@ -133,6 +135,8 @@ private slots:
void on_actionEditInstNotes_triggered();
+ void on_actionMods_triggered();
+
void on_actionWorlds_triggered();
void on_actionScreenshots_triggered();