aboutsummaryrefslogtreecommitdiff
path: root/application
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 /application
parent4c7ea0f99a23f73fd3cae87f7dfaab89922a2311 (diff)
downloadPrismLauncher-8e44ab2338f4ca63d58de4b3329c384df9d6c053.tar.gz
PrismLauncher-8e44ab2338f4ca63d58de4b3329c384df9d6c053.tar.bz2
PrismLauncher-8e44ab2338f4ca63d58de4b3329c384df9d6c053.zip
NOISSUE redo new instance dialog
Diffstat (limited to 'application')
-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
76 files changed, 1611 insertions, 965 deletions
diff --git a/application/CMakeLists.txt b/application/CMakeLists.txt
index 48c1a359..5eeca240 100644
--- a/application/CMakeLists.txt
+++ b/application/CMakeLists.txt
@@ -80,29 +80,32 @@ SET(MULTIMC_SOURCES
JavaCommon.h
JavaCommon.cpp
- # GUI - page dialog pages
+ # GUI - paged dialog base
pages/BasePage.h
pages/BasePageContainer.h
- pages/VersionPage.cpp
- pages/VersionPage.h
- pages/TexturePackPage.h
- pages/ResourcePackPage.h
- pages/ModFolderPage.cpp
- pages/ModFolderPage.h
- pages/NotesPage.cpp
- pages/NotesPage.h
- pages/LogPage.cpp
- pages/LogPage.h
- pages/InstanceSettingsPage.cpp
- pages/InstanceSettingsPage.h
- pages/ScreenshotsPage.cpp
- pages/ScreenshotsPage.h
- pages/OtherLogsPage.cpp
- pages/OtherLogsPage.h
- pages/LegacyUpgradePage.cpp
- pages/LegacyUpgradePage.h
- pages/WorldListPage.cpp
- pages/WorldListPage.h
+ pages/BasePageProvider.h
+
+ # GUI - instance pages
+ pages/instance/VersionPage.cpp
+ pages/instance/VersionPage.h
+ pages/instance/TexturePackPage.h
+ pages/instance/ResourcePackPage.h
+ pages/instance/ModFolderPage.cpp
+ pages/instance/ModFolderPage.h
+ pages/instance/NotesPage.cpp
+ pages/instance/NotesPage.h
+ pages/instance/LogPage.cpp
+ pages/instance/LogPage.h
+ pages/instance/InstanceSettingsPage.cpp
+ pages/instance/InstanceSettingsPage.h
+ pages/instance/ScreenshotsPage.cpp
+ pages/instance/ScreenshotsPage.h
+ pages/instance/OtherLogsPage.cpp
+ pages/instance/OtherLogsPage.h
+ pages/instance/LegacyUpgradePage.cpp
+ pages/instance/LegacyUpgradePage.h
+ pages/instance/WorldListPage.cpp
+ pages/instance/WorldListPage.h
# GUI - global settings pages
pages/global/AccountListPage.cpp
@@ -124,6 +127,18 @@ SET(MULTIMC_SOURCES
pages/global/PackagesPage.cpp
pages/global/PackagesPage.h
+ # GUI - platform pages
+ pages/modplatform/VanillaPage.cpp
+ pages/modplatform/VanillaPage.h
+ pages/modplatform/FTBPage.cpp
+ pages/modplatform/FTBPage.h
+ pages/modplatform/TwitchPage.cpp
+ pages/modplatform/TwitchPage.h
+ pages/modplatform/TechnicPage.cpp
+ pages/modplatform/TechnicPage.h
+ pages/modplatform/ImportPage.cpp
+ pages/modplatform/ImportPage.h
+
# GUI - dialogs
dialogs/AboutDialog.cpp
dialogs/AboutDialog.h
@@ -159,8 +174,6 @@ SET(MULTIMC_SOURCES
dialogs/VersionSelectDialog.h
dialogs/SkinUploadDialog.cpp
dialogs/SkinUploadDialog.h
- dialogs/ChooseFtbPackDialog.cpp
- dialogs/ChooseFtbPackDialog.h
# GUI - widgets
@@ -210,15 +223,15 @@ SET(MULTIMC_SOURCES
######## UIs ########
SET(MULTIMC_UIS
# Instance pages
- pages/VersionPage.ui
- pages/ModFolderPage.ui
- pages/LogPage.ui
- pages/InstanceSettingsPage.ui
- pages/NotesPage.ui
- pages/ScreenshotsPage.ui
- pages/OtherLogsPage.ui
- pages/LegacyUpgradePage.ui
- pages/WorldListPage.ui
+ pages/instance/VersionPage.ui
+ pages/instance/ModFolderPage.ui
+ pages/instance/LogPage.ui
+ pages/instance/InstanceSettingsPage.ui
+ pages/instance/NotesPage.ui
+ pages/instance/ScreenshotsPage.ui
+ pages/instance/OtherLogsPage.ui
+ pages/instance/LegacyUpgradePage.ui
+ pages/instance/WorldListPage.ui
# Global settings pages
pages/global/AccountListPage.ui
@@ -230,6 +243,13 @@ SET(MULTIMC_UIS
pages/global/PasteEEPage.ui
pages/global/PackagesPage.ui
+ # Platform pages
+ pages/modplatform/VanillaPage.ui
+ pages/modplatform/FTBPage.ui
+ pages/modplatform/TwitchPage.ui
+ pages/modplatform/TechnicPage.ui
+ pages/modplatform/ImportPage.ui
+
# Dialogs
dialogs/CopyInstanceDialog.ui
dialogs/NewComponentDialog.ui
@@ -244,7 +264,6 @@ SET(MULTIMC_UIS
dialogs/UpdateDialog.ui
dialogs/NotificationDialog.ui
dialogs/SkinUploadDialog.ui
- dialogs/ChooseFtbPackDialog.ui
# Widgets/other
widgets/CustomCommands.ui
diff --git a/application/FtbListModel.cpp b/application/FtbListModel.cpp
index 68a68794..d79bcac0 100644
--- a/application/FtbListModel.cpp
+++ b/application/FtbListModel.cpp
@@ -108,7 +108,9 @@ QVariant FtbListModel::data(const QModelIndex &index, int role) const
void FtbListModel::fill(FtbModpackList modpacks)
{
+ beginResetModel();
this->modpacks = modpacks;
+ endResetModel();
}
FtbModpack FtbListModel::at(int row)
diff --git a/application/InstancePageProvider.h b/application/InstancePageProvider.h
index b13ce93d..9dda7859 100644
--- a/application/InstancePageProvider.h
+++ b/application/InstancePageProvider.h
@@ -3,18 +3,18 @@
#include "minecraft/legacy/LegacyInstance.h"
#include <FileSystem.h>
#include "pages/BasePage.h"
-#include "pages/LogPage.h"
-#include "pages/VersionPage.h"
-#include "pages/ModFolderPage.h"
-#include "pages/ResourcePackPage.h"
-#include "pages/TexturePackPage.h"
-#include "pages/NotesPage.h"
-#include "pages/ScreenshotsPage.h"
-#include "pages/InstanceSettingsPage.h"
-#include "pages/OtherLogsPage.h"
#include "pages/BasePageProvider.h"
-#include "pages/LegacyUpgradePage.h"
-#include "pages/WorldListPage.h"
+#include "pages/instance/LogPage.h"
+#include "pages/instance/VersionPage.h"
+#include "pages/instance/ModFolderPage.h"
+#include "pages/instance/ResourcePackPage.h"
+#include "pages/instance/TexturePackPage.h"
+#include "pages/instance/NotesPage.h"
+#include "pages/instance/ScreenshotsPage.h"
+#include "pages/instance/InstanceSettingsPage.h"
+#include "pages/instance/OtherLogsPage.h"
+#include "pages/instance/LegacyUpgradePage.h"
+#include "pages/instance/WorldListPage.h"
class InstancePageProvider : public QObject, public BasePageProvider
diff --git a/application/InstanceWindow.cpp b/application/InstanceWindow.cpp
index 2e876fea..5895ca3a 100644
--- a/application/InstanceWindow.cpp
+++ b/application/InstanceWindow.cpp
@@ -47,7 +47,7 @@ InstanceWindow::InstanceWindow(InstancePtr instance, QWidget *parent)
// Add page container
{
auto provider = std::make_shared<InstancePageProvider>(m_instance);
- m_container = new PageContainer(provider, "console", this);
+ m_container = new PageContainer(provider.get(), "console", this);
m_container->setParentContainer(this);
setCentralWidget(m_container);
}
diff --git a/application/MainWindow.cpp b/application/MainWindow.cpp
index 542d1da6..60742412 100644
--- a/application/MainWindow.cpp
+++ b/application/MainWindow.cpp
@@ -90,6 +90,7 @@
#include <InstanceImportTask.h>
#include "UpdateController.h"
#include "KonamiCode.h"
+#include <InstanceCopyTask.h>
// WHY: to hold the pre-translation strings together with the T pointer, so it can be retranslated without a lot of ugly code
template <typename T>
@@ -1267,26 +1268,9 @@ void MainWindow::runModalTask(Task *task)
loadDialog.execWithTask(task);
}
-void MainWindow::instanceFromZipPack(QString instName, QString instGroup, QString instIcon, QUrl url)
+void MainWindow::instanceFromInstanceTask(InstanceTask *rawTask)
{
- std::unique_ptr<Task> task(MMC->folderProvider()->zipImportTask(url, instName, instGroup, instIcon));
- runModalTask(task.get());
-
- // FIXME: handle instance selection after creation
- // finalizeInstance(newInstance);
-}
-
-void MainWindow::instanceFromVersion(QString instName, QString instGroup, QString instIcon, BaseVersionPtr version)
-{
- std::unique_ptr<Task> task(MMC->folderProvider()->creationTask(version, instName, instGroup, instIcon));
- runModalTask(task.get());
-
- // FIXME: handle instance selection after creation
- // finalizeInstance(newInstance);
-}
-
-void MainWindow::instanceFromFtbPack(FtbPackDownloader *downloader, QString instName, QString instGroup, QString instIcon) {
- std::unique_ptr<Task> task(MMC->folderProvider()->ftbCreationTask(downloader, instName, instGroup, instIcon));
+ std::unique_ptr<Task> task(MMC->folderProvider()->wrapInstanceTask(rawTask));
runModalTask(task.get());
// FIXME: handle instance selection after creation
@@ -1302,8 +1286,11 @@ void MainWindow::on_actionCopyInstance_triggered()
if (!copyInstDlg.exec())
return;
- std::unique_ptr<Task> task(MMC->folderProvider()->copyTask(m_selectedInstance, copyInstDlg.instName(), copyInstDlg.instGroup(),
- copyInstDlg.iconKey(), copyInstDlg.shouldCopySaves()));
+ auto copyTask = new InstanceCopyTask(m_selectedInstance, copyInstDlg.shouldCopySaves());
+ copyTask->setName(copyInstDlg.instName());
+ copyTask->setGroup(copyInstDlg.instGroup());
+ copyTask->setIcon(copyInstDlg.iconKey());
+ std::unique_ptr<Task> task(MMC->folderProvider()->wrapInstanceTask(copyTask));
runModalTask(task.get());
// FIXME: handle instance selection after creation
@@ -1366,19 +1353,10 @@ void MainWindow::addInstance(QString url)
MMC->settings()->set("LastUsedGroupForNewInstance", newInstDlg.instGroup());
- const QUrl modpackUrl = newInstDlg.modpackUrl();
-
- if(newInstDlg.isFtbModpackRequested())
- {
- instanceFromFtbPack(newInstDlg.getFtbPackDownloader(), newInstDlg.instName(), newInstDlg.instGroup(), newInstDlg.iconKey());
- }
- else if (modpackUrl.isValid())
- {
- instanceFromZipPack(newInstDlg.instName(), newInstDlg.instGroup(), newInstDlg.iconKey(), modpackUrl);
- }
- else
+ InstanceTask * creationTask = newInstDlg.extractTask();
+ if(creationTask)
{
- instanceFromVersion(newInstDlg.instName(), newInstDlg.instGroup(), newInstDlg.iconKey(), newInstDlg.selectedVersion());
+ instanceFromInstanceTask(creationTask);
}
}
diff --git a/application/MainWindow.h b/application/MainWindow.h
index e9897606..609df4ca 100644
--- a/application/MainWindow.h
+++ b/application/MainWindow.h
@@ -39,6 +39,7 @@ class BaseProfilerFactory;
class GroupView;
class ServerStatus;
class KonamiCode;
+class InstanceTask;
class MainWindow : public QMainWindow
{
@@ -187,9 +188,7 @@ private:
void setSelectedInstanceById(const QString &id);
void runModalTask(Task *task);
- void instanceFromVersion(QString instName, QString instGroup, QString instIcon, BaseVersionPtr version);
- void instanceFromZipPack(QString instName, QString instGroup, QString instIcon, QUrl url);
- void instanceFromFtbPack(FtbPackDownloader *downloader, QString instName, QString instGroup, QString instIcon);
+ void instanceFromInstanceTask(InstanceTask *task);
void finalizeInstance(InstancePtr inst);
private:
diff --git a/application/MultiMC.cpp b/application/MultiMC.cpp
index 230d757f..4236fbcf 100644
--- a/application/MultiMC.cpp
+++ b/application/MultiMC.cpp
@@ -497,6 +497,8 @@ MultiMC::MultiMC(int &argc, char **argv) : QApplication(argc, argv)
m_settings->registerSetting("PagedGeometry", "");
+ m_settings->registerSetting("NewInstanceGeometry", "");
+
m_settings->registerSetting("UpdateDialogGeometry", "");
// paste.ee API key
diff --git a/application/SettingsUI.h b/application/SettingsUI.h
index 5b8badf2..0d14fbee 100644
--- a/application/SettingsUI.h
+++ b/application/SettingsUI.h
@@ -19,7 +19,7 @@ void ShowPageDialog(T raw_provider, QWidget * parent, QString open_page = QStrin
return;
{
SettingsObject::Lock lock(MMC->settings());
- PageDialog dlg(provider, open_page, parent);
+ PageDialog dlg(provider.get(), open_page, parent);
dlg.exec();
}
}
diff --git a/application/VersionProxyModel.cpp b/application/VersionProxyModel.cpp
index 0dbc4ef6..c180adf2 100644
--- a/application/VersionProxyModel.cpp
+++ b/application/VersionProxyModel.cpp
@@ -20,34 +20,21 @@ public:
const auto &filters = m_parent->filters();
for (auto it = filters.begin(); it != filters.end(); ++it)
{
- auto role = it.key();
auto idx = sourceModel()->index(source_row, 0, source_parent);
- auto data = sourceModel()->data(idx, role);
-
- switch(role)
+ auto data = sourceModel()->data(idx, it.key());
+ auto match = data.toString();
+ if(!it.value()->accepts(match))
{
- case BaseVersionList::ParentVersionRole:
- case BaseVersionList::VersionIdRole:
- // TODO: work with metadata here. Previous implementation based on the Version class is not sufficient
- default:
- {
- auto match = data.toString();
- if(it.value().exact)
- {
- if (match != it.value().string)
- {
- return false;
- }
- }
- else if (match.contains(it.value().string))
- {
- return false;
- }
- }
+ return false;
}
}
return true;
}
+
+ void filterChanged()
+ {
+ invalidateFilter();
+ }
private:
VersionProxyModel *m_parent;
};
@@ -56,12 +43,12 @@ VersionProxyModel::VersionProxyModel(QObject *parent) : QAbstractProxyModel(pare
{
filterModel = new VersionFilterModel(this);
connect(filterModel, &QAbstractItemModel::dataChanged, this, &VersionProxyModel::sourceDataChanged);
+ connect(filterModel, &QAbstractItemModel::rowsAboutToBeInserted, this, &VersionProxyModel::sourceRowsAboutToBeInserted);
+ connect(filterModel, &QAbstractItemModel::rowsInserted, this, &VersionProxyModel::sourceRowsInserted);