diff options
| author | Petr Mrázek <peterix@gmail.com> | 2018-03-19 02:36:12 +0100 |
|---|---|---|
| committer | Petr Mrázek <peterix@gmail.com> | 2018-03-27 09:25:36 +0200 |
| commit | 8e44ab2338f4ca63d58de4b3329c384df9d6c053 (patch) | |
| tree | 60b915ec620221656d1c3a42f40124b15e9e69f0 /application | |
| parent | 4c7ea0f99a23f73fd3cae87f7dfaab89922a2311 (diff) | |
| download | PrismLauncher-8e44ab2338f4ca63d58de4b3329c384df9d6c053.tar.gz PrismLauncher-8e44ab2338f4ca63d58de4b3329c384df9d6c053.tar.bz2 PrismLauncher-8e44ab2338f4ca63d58de4b3329c384df9d6c053.zip | |
NOISSUE redo new instance dialog
Diffstat (limited to 'application')
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); |
