summaryrefslogtreecommitdiffstats
path: root/gui/mainwindow.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2013-07-28 08:40:15 +0200
committerPetr Mrázek <peterix@gmail.com>2013-07-28 08:40:15 +0200
commit9d99b539bfaabe45a43948edf37e900401288f65 (patch)
treeb583a7649dfa59597f352a41ed641b373f130436 /gui/mainwindow.cpp
parenta7a84d4dbb58565f108cb0886da6cb786e34d10d (diff)
downloadMultiMC-9d99b539bfaabe45a43948edf37e900401288f65.tar
MultiMC-9d99b539bfaabe45a43948edf37e900401288f65.tar.gz
MultiMC-9d99b539bfaabe45a43948edf37e900401288f65.tar.lz
MultiMC-9d99b539bfaabe45a43948edf37e900401288f65.tar.xz
MultiMC-9d99b539bfaabe45a43948edf37e900401288f65.zip
Parsing the version files, part IV
Also, start of big refactors.
Diffstat (limited to 'gui/mainwindow.cpp')
-rw-r--r--gui/mainwindow.cpp69
1 files changed, 32 insertions, 37 deletions
diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp
index 4bf38424..901f70b3 100644
--- a/gui/mainwindow.cpp
+++ b/gui/mainwindow.cpp
@@ -56,6 +56,7 @@
#include "gameupdatetask.h"
#include "instance.h"
+#include "instanceloader.h"
#include "minecraftprocess.h"
#include "instancemodel.h"
@@ -182,46 +183,40 @@ void MainWindow::on_actionAddInstance_triggered()
}
NewInstanceDialog *newInstDlg = new NewInstanceDialog ( this );
- if (newInstDlg->exec())
+ if (!newInstDlg->exec())
+ return;
+
+ Instance *newInstance = NULL;
+
+ QString instDirName = DirNameFromString(newInstDlg->instName());
+ QString instDir = PathCombine(globalSettings->get("InstanceDir").toString(), instDirName);
+
+ auto &loader = InstanceLoader::get();
+ auto error = loader.createInstance(newInstance, instDir);
+ QString errorMsg = QString("Failed to create instance %1: ").arg(instDirName);
+
+ switch (error)
{
- Instance *newInstance = NULL;
-
- QString instDirName = DirNameFromString(newInstDlg->instName());
- QString instDir = PathCombine(globalSettings->get("InstanceDir").toString(),
- instDirName);
+ case InstanceLoader::NoCreateError:
+ newInstance->setName(newInstDlg->instName());
+ newInstance->setIntendedVersion(newInstDlg->selectedVersion()->descriptor());
+ instList.add(InstancePtr(newInstance));
+ return;
+
+ case InstanceLoader::InstExists:
+ errorMsg += "An instance with the given directory name already exists.";
+ QMessageBox::warning(this, "Error", errorMsg);
+ break;
- InstanceLoader::InstLoaderError error = InstanceLoader::get().
- createInstance(newInstance, instDir);
+ case InstanceLoader::CantCreateDir:
+ errorMsg += "Failed to create the instance directory.";
+ QMessageBox::warning(this, "Error", errorMsg);
+ break;
- if (error == InstanceLoader::NoError)
- {
- newInstance->setName(newInstDlg->instName());
- newInstance->setIntendedVersion(newInstDlg->selectedVersion()->descriptor());
- instList.add(InstancePtr(newInstance));
- }
- else
- {
- QString errorMsg = QString("Failed to create instance %1: ").
- arg(instDirName);
-
- switch (error)
- {
- case InstanceLoader::InstExists:
- errorMsg += "An instance with the given directory name already exists.";
- break;
-
- case InstanceLoader::CantCreateDir:
- errorMsg += "Failed to create the instance directory.";
- break;
-
- default:
- errorMsg += QString("Unknown instance loader error %1").
- arg(error);
- break;
- }
-
- QMessageBox::warning(this, "Error", errorMsg);
- }
+ default:
+ errorMsg += QString("Unknown instance loader error %1").arg(error);
+ QMessageBox::warning(this, "Error", errorMsg);
+ break;
}
}