aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2018-03-19 02:36:12 +0100
committerPetr Mrázek <peterix@gmail.com>2018-03-27 09:25:36 +0200
commit8e44ab2338f4ca63d58de4b3329c384df9d6c053 (patch)
tree60b915ec620221656d1c3a42f40124b15e9e69f0
parent4c7ea0f99a23f73fd3cae87f7dfaab89922a2311 (diff)
downloadPrismLauncher-8e44ab2338f4ca63d58de4b3329c384df9d6c053.tar.gz
PrismLauncher-8e44ab2338f4ca63d58de4b3329c384df9d6c053.tar.bz2
PrismLauncher-8e44ab2338f4ca63d58de4b3329c384df9d6c053.zip
NOISSUE redo new instance dialog
-rw-r--r--api/logic/CMakeLists.txt20
-rw-r--r--api/logic/Filter.cpp31
-rw-r--r--api/logic/Filter.h44
-rw-r--r--api/logic/FolderInstanceProvider.cpp43
-rw-r--r--api/logic/FolderInstanceProvider.h7
-rw-r--r--api/logic/InstanceCopyTask.cpp7
-rw-r--r--api/logic/InstanceCopyTask.h14
-rw-r--r--api/logic/InstanceCreationTask.cpp8
-rw-r--r--api/logic/InstanceCreationTask.h12
-rw-r--r--api/logic/InstanceImportTask.cpp8
-rw-r--r--api/logic/InstanceImportTask.h12
-rw-r--r--api/logic/InstanceTask.cpp9
-rw-r--r--api/logic/InstanceTask.h55
-rw-r--r--api/logic/minecraft/legacy/LegacyUpgradeTask.cpp7
-rw-r--r--api/logic/minecraft/legacy/LegacyUpgradeTask.h12
-rw-r--r--api/logic/modplatform/ftb/FtbPackDownloader.cpp84
-rw-r--r--api/logic/modplatform/ftb/FtbPackDownloader.h49
-rw-r--r--api/logic/modplatform/ftb/FtbPackFetchTask.cpp2
-rw-r--r--api/logic/modplatform/ftb/FtbPackFetchTask.h2
-rw-r--r--api/logic/modplatform/ftb/FtbPackInstallTask.cpp96
-rw-r--r--api/logic/modplatform/ftb/FtbPackInstallTask.h42
-rw-r--r--api/logic/modplatform/ftb/PackHelpers.h4
-rw-r--r--application/CMakeLists.txt85
-rw-r--r--application/FtbListModel.cpp2
-rw-r--r--application/InstancePageProvider.h22
-rw-r--r--application/InstanceWindow.cpp2
-rw-r--r--application/MainWindow.cpp44
-rw-r--r--application/MainWindow.h5
-rw-r--r--application/MultiMC.cpp2
-rw-r--r--application/SettingsUI.h2
-rw-r--r--application/VersionProxyModel.cpp71
-rw-r--r--application/VersionProxyModel.h19
-rw-r--r--application/dialogs/ChooseFtbPackDialog.cpp88
-rw-r--r--application/dialogs/ChooseFtbPackDialog.h34
-rw-r--r--application/dialogs/ChooseFtbPackDialog.ui119
-rw-r--r--application/dialogs/NewInstanceDialog.cpp263
-rw-r--r--application/dialogs/NewInstanceDialog.h43
-rw-r--r--application/dialogs/NewInstanceDialog.ui346
-rw-r--r--application/dialogs/VersionSelectDialog.cpp4
-rw-r--r--application/pagedialog/PageDialog.cpp11
-rw-r--r--application/pagedialog/PageDialog.h3
-rw-r--r--application/pages/BasePage.h15
-rw-r--r--application/pages/BasePageProvider.h4
-rw-r--r--application/pages/global/PackagesPage.cpp2
-rw-r--r--application/pages/global/PackagesPage.h2
-rw-r--r--application/pages/instance/InstanceSettingsPage.cpp (renamed from application/pages/InstanceSettingsPage.cpp)0
-rw-r--r--application/pages/instance/InstanceSettingsPage.h (renamed from application/pages/InstanceSettingsPage.h)2
-rw-r--r--application/pages/instance/InstanceSettingsPage.ui (renamed from application/pages/InstanceSettingsPage.ui)0
-rw-r--r--application/pages/instance/LegacyUpgradePage.cpp (renamed from application/pages/LegacyUpgradePage.cpp)7
-rw-r--r--application/pages/instance/LegacyUpgradePage.h (renamed from application/pages/LegacyUpgradePage.h)0
-rw-r--r--application/pages/instance/LegacyUpgradePage.ui (renamed from application/pages/LegacyUpgradePage.ui)0
-rw-r--r--application/pages/instance/LogPage.cpp (renamed from application/pages/LogPage.cpp)0
-rw-r--r--application/pages/instance/LogPage.h (renamed from application/pages/LogPage.h)2
-rw-r--r--application/pages/instance/LogPage.ui (renamed from application/pages/LogPage.ui)0
-rw-r--r--application/pages/instance/ModFolderPage.cpp (renamed from application/pages/ModFolderPage.cpp)4
-rw-r--r--application/pages/instance/ModFolderPage.h (renamed from application/pages/ModFolderPage.h)6
-rw-r--r--application/pages/instance/ModFolderPage.ui (renamed from application/pages/ModFolderPage.ui)0
-rw-r--r--application/pages/instance/NotesPage.cpp (renamed from application/pages/NotesPage.cpp)0
-rw-r--r--application/pages/instance/NotesPage.h (renamed from application/pages/NotesPage.h)2
-rw-r--r--application/pages/instance/NotesPage.ui (renamed from application/pages/NotesPage.ui)0
-rw-r--r--application/pages/instance/OtherLogsPage.cpp (renamed from application/pages/OtherLogsPage.cpp)4
-rw-r--r--application/pages/instance/OtherLogsPage.h (renamed from application/pages/OtherLogsPage.h)6
-rw-r--r--application/pages/instance/OtherLogsPage.ui (renamed from application/pages/OtherLogsPage.ui)0
-rw-r--r--application/pages/instance/ResourcePackPage.h (renamed from application/pages/ResourcePackPage.h)0
-rw-r--r--application/pages/instance/ScreenshotsPage.cpp (renamed from application/pages/ScreenshotsPage.cpp)2
-rw-r--r--application/pages/instance/ScreenshotsPage.h (renamed from application/pages/ScreenshotsPage.h)4
-rw-r--r--application/pages/instance/ScreenshotsPage.ui (renamed from application/pages/ScreenshotsPage.ui)0
-rw-r--r--application/pages/instance/TexturePackPage.h (renamed from application/pages/TexturePackPage.h)0
-rw-r--r--application/pages/instance/VersionPage.cpp (renamed from application/pages/VersionPage.cpp)0
-rw-r--r--application/pages/instance/VersionPage.h (renamed from application/pages/VersionPage.h)2
-rw-r--r--application/pages/instance/VersionPage.ui (renamed from application/pages/VersionPage.ui)0
-rw-r--r--application/pages/instance/WorldListPage.cpp (renamed from application/pages/WorldListPage.cpp)4
-rw-r--r--application/pages/instance/WorldListPage.h (renamed from application/pages/WorldListPage.h)6
-rw-r--r--application/pages/instance/WorldListPage.ui (renamed from application/pages/WorldListPage.ui)0
-rw-r--r--application/pages/modplatform/FTBPage.cpp152
-rw-r--r--application/pages/modplatform/FTBPage.h86
-rw-r--r--application/pages/modplatform/FTBPage.ui61
-rw-r--r--application/pages/modplatform/ImportPage.cpp125
-rw-r--r--application/pages/modplatform/ImportPage.h70
-rw-r--r--application/pages/modplatform/ImportPage.ui52
-rw-r--r--application/pages/modplatform/TechnicPage.cpp29
-rw-r--r--application/pages/modplatform/TechnicPage.h61
-rw-r--r--application/pages/modplatform/TechnicPage.ui48
-rw-r--r--application/pages/modplatform/TwitchPage.cpp29
-rw-r--r--application/pages/modplatform/TwitchPage.h61
-rw-r--r--application/pages/modplatform/TwitchPage.ui48
-rw-r--r--application/pages/modplatform/VanillaPage.cpp114
-rw-r--r--application/pages/modplatform/VanillaPage.h75
-rw-r--r--application/pages/modplatform/VanillaPage.ui149
-rw-r--r--application/resources/multimc/multimc.qrc6
-rw-r--r--application/resources/multimc/scalable/technic.svg1
-rw-r--r--application/resources/multimc/scalable/twitch.svg63
-rw-r--r--application/widgets/InstanceCardWidget.ui61
-rw-r--r--application/widgets/JavaSettingsWidget.cpp4
-rw-r--r--application/widgets/PageContainer.cpp3
-rw-r--r--application/widgets/PageContainer.h10
-rw-r--r--application/widgets/VersionSelectWidget.cpp23
-rw-r--r--application/widgets/VersionSelectWidget.h6
98 files changed, 1903 insertions, 1241 deletions
diff --git a/api/logic/CMakeLists.txt b/api/logic/CMakeLists.txt
index e40f188e..c6daef6f 100644
--- a/api/logic/CMakeLists.txt
+++ b/api/logic/CMakeLists.txt
@@ -8,14 +8,10 @@ set(CORE_SOURCES
BaseInstaller.cpp
BaseVersionList.h
BaseVersionList.cpp
- InstanceCreationTask.h
- InstanceCreationTask.cpp
- InstanceCopyTask.h
- InstanceCopyTask.cpp
- InstanceImportTask.h
- InstanceImportTask.cpp
InstanceList.h
InstanceList.cpp
+ InstanceTask.h
+ InstanceTask.cpp
LoggedProcess.h
LoggedProcess.cpp
MessageLevel.cpp
@@ -32,6 +28,14 @@ set(CORE_SOURCES
MMCStrings.h
MMCStrings.cpp
+ # Basic instance manipulation tasks (derived from InstanceTask)
+ InstanceCreationTask.h
+ InstanceCreationTask.cpp
+ InstanceCopyTask.h
+ InstanceCopyTask.cpp
+ InstanceImportTask.h
+ InstanceImportTask.cpp
+
# Use tracking separate from memory management
Usable.h
@@ -42,6 +46,10 @@ set(CORE_SOURCES
Env.h
Env.cpp
+ # String filters
+ Filter.h
+ Filter.cpp
+
# JSON parsing helpers
Json.h
Json.cpp
diff --git a/api/logic/Filter.cpp b/api/logic/Filter.cpp
new file mode 100644
index 00000000..7f6667ae
--- /dev/null
+++ b/api/logic/Filter.cpp
@@ -0,0 +1,31 @@
+#include "Filter.h"
+
+Filter::~Filter(){}
+
+ContainsFilter::ContainsFilter(const QString& pattern) : pattern(pattern){}
+ContainsFilter::~ContainsFilter(){}
+bool ContainsFilter::accepts(const QString& value)
+{
+ return value.contains(pattern);
+}
+
+ExactFilter::ExactFilter(const QString& pattern) : pattern(pattern){}
+ExactFilter::~ExactFilter(){}
+bool ExactFilter::accepts(const QString& value)
+{
+ return value.contains(pattern);
+}
+
+RegexpFilter::RegexpFilter(const QString& regexp, bool invert)
+ :invert(invert)
+{
+ pattern.setPattern(regexp);
+ pattern.optimize();
+}
+RegexpFilter::~RegexpFilter(){}
+bool RegexpFilter::accepts(const QString& value)
+{
+ auto match = pattern.match(value);
+ bool matched = match.hasMatch();
+ return invert ? (!matched) : (matched);
+}
diff --git a/api/logic/Filter.h b/api/logic/Filter.h
new file mode 100644
index 00000000..8de7d8f9
--- /dev/null
+++ b/api/logic/Filter.h
@@ -0,0 +1,44 @@
+#pragma once
+
+#include <QString>
+#include <QRegularExpression>
+
+#include "multimc_logic_export.h"
+
+class MULTIMC_LOGIC_EXPORT Filter
+{
+public:
+ virtual ~Filter();
+ virtual bool accepts(const QString & value) = 0;
+};
+
+class MULTIMC_LOGIC_EXPORT ContainsFilter: public Filter
+{
+public:
+ ContainsFilter(const QString &pattern);
+ virtual ~ContainsFilter();
+ bool accepts(const QString & value) override;
+private:
+ QString pattern;
+};
+
+class MULTIMC_LOGIC_EXPORT ExactFilter: public Filter
+{
+public:
+ ExactFilter(const QString &pattern);
+ virtual ~ExactFilter();
+ bool accepts(const QString & value) override;
+private:
+ QString pattern;
+};
+
+class MULTIMC_LOGIC_EXPORT RegexpFilter: public Filter
+{
+public:
+ RegexpFilter(const QString &regexp, bool invert);
+ virtual ~RegexpFilter();
+ bool accepts(const QString & value) override;
+private:
+ QRegularExpression pattern;
+ bool invert = false;
+};
diff --git a/api/logic/FolderInstanceProvider.cpp b/api/logic/FolderInstanceProvider.cpp
index 52e23254..69ba6c82 100644
--- a/api/logic/FolderInstanceProvider.cpp
+++ b/api/logic/FolderInstanceProvider.cpp
@@ -412,46 +412,13 @@ private:
QTimer m_backoffTimer;
};
-#include "InstanceImportTask.h"
-Task * FolderInstanceProvider::zipImportTask(const QUrl sourceUrl, const QString& instName, const QString& instGroup, const QString& instIcon)
+#include "InstanceTask.h"
+Task * FolderInstanceProvider::wrapInstanceTask(InstanceTask * task)
{
auto stagingPath = getStagedInstancePath();
- auto task = new InstanceImportTask(m_globalSettings, sourceUrl, stagingPath, instName, instIcon, instGroup);
- return new FolderInstanceStaging(this, task, stagingPath, instName, instGroup);
-}
-
-#include "InstanceCreationTask.h"
-Task * FolderInstanceProvider::creationTask(BaseVersionPtr version, const QString& instName, const QString& instGroup, const QString& instIcon)
-{
- auto stagingPath = getStagedInstancePath();
- auto task = new InstanceCreationTask(m_globalSettings, stagingPath, version, instName, instIcon, instGroup);
- return new FolderInstanceStaging(this, task, stagingPath, instName, instGroup);
-}
-
-#include <modplatform/ftb/FtbPackInstallTask.h>
-Task * FolderInstanceProvider::ftbCreationTask(FtbPackDownloader *downloader, const QString& instName, const QString& instGroup, const QString& instIcon)
-{
- auto stagingPath = getStagedInstancePath();
- auto task = new FtbPackInstallTask(downloader, m_globalSettings, stagingPath, instName, instIcon, instGroup);
- return new FolderInstanceStaging(this, task, stagingPath, instName, instGroup);
-}
-
-#include "InstanceCopyTask.h"
-Task * FolderInstanceProvider::copyTask(const InstancePtr& oldInstance, const QString& instName, const QString& instGroup, const QString& instIcon, bool copySaves)
-{
- auto stagingPath = getStagedInstancePath();
- auto task = new InstanceCopyTask(m_globalSettings, stagingPath, oldInstance, instName, instIcon, instGroup, copySaves);
- return new FolderInstanceStaging(this, task, stagingPath, instName, instGroup);
-}
-
-// FIXME: find a better place for this
-#include "minecraft/legacy/LegacyUpgradeTask.h"
-Task * FolderInstanceProvider::legacyUpgradeTask(const InstancePtr& oldInstance)
-{
- auto stagingPath = getStagedInstancePath();
- QString newName = tr("%1 (Migrated)").arg(oldInstance->name());
- auto task = new LegacyUpgradeTask(m_globalSettings, stagingPath, oldInstance, newName);
- return new FolderInstanceStaging(this, task, stagingPath, newName, oldInstance->group());
+ task->setStagingPath(stagingPath);
+ task->setParentSettings(m_globalSettings);
+ return new FolderInstanceStaging(this, task, stagingPath, task->name(), task->group());
}
QString FolderInstanceProvider::getStagedInstancePath()
diff --git a/api/logic/FolderInstanceProvider.h b/api/logic/FolderInstanceProvider.h
index 2641a46b..e13dcfe9 100644
--- a/api/logic/FolderInstanceProvider.h
+++ b/api/logic/FolderInstanceProvider.h
@@ -2,9 +2,9 @@
#include "BaseInstanceProvider.h"
#include <QMap>
-#include <modplatform/ftb/FtbPackDownloader.h>
class QFileSystemWatcher;
+class InstanceTask;
class MULTIMC_LOGIC_EXPORT FolderInstanceProvider : public BaseInstanceProvider
{
@@ -20,6 +20,7 @@ public:
InstancePtr loadInstance(const InstanceId& id) override;
+ /*
// create instance in this provider
Task * creationTask(BaseVersionPtr version, const QString &instName, const QString &instGroup, const QString &instIcon);
@@ -34,6 +35,10 @@ public:
// migrate an instance to the current format
Task * legacyUpgradeTask(const InstancePtr& oldInstance);
+*/
+
+ // Wrap an instance creation task in some more task machinery and make it ready to be used
+ Task * wrapInstanceTask(InstanceTask * task);
/**
* Create a new empty staging area for instance creation and @return a path/key top commit it later.
diff --git a/api/logic/InstanceCopyTask.cpp b/api/logic/InstanceCopyTask.cpp
index 9ede65f5..62c22362 100644
--- a/api/logic/InstanceCopyTask.cpp
+++ b/api/logic/InstanceCopyTask.cpp
@@ -6,14 +6,9 @@
#include "pathmatcher/RegexpMatcher.h"
#include <QtConcurrentRun>