summaryrefslogtreecommitdiffstats
path: root/application/MainWindow.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'application/MainWindow.cpp')
-rw-r--r--application/MainWindow.cpp44
1 files changed, 11 insertions, 33 deletions
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);
}
}