Parsing the version files, part IV

Also, start of big refactors.
This commit is contained in:
Petr Mrázek
2013-07-28 08:40:15 +02:00
parent a7a84d4dbb
commit 9d99b539bf
13 changed files with 334 additions and 371 deletions

View File

@ -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;
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;
QString instDirName = DirNameFromString(newInstDlg->instName());
QString instDir = PathCombine(globalSettings->get("InstanceDir").toString(),
instDirName);
case InstanceLoader::CantCreateDir:
errorMsg += "Failed to create the instance directory.";
QMessageBox::warning(this, "Error", errorMsg);
break;
InstanceLoader::InstLoaderError error = InstanceLoader::get().
createInstance(newInstance, instDir);
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;
}
}

View File

@ -17,7 +17,6 @@
#include "ui_newinstancedialog.h"
#include "instanceloader.h"
#include "instancetypeinterface.h"
#include "instversionlist.h"
#include "instversion.h"
@ -36,7 +35,6 @@ NewInstanceDialog::NewInstanceDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::NewInstanceDialog)
{
m_selectedType = NULL;
m_selectedVersion = NULL;
ui->setupUi(this);

View File

@ -52,7 +52,6 @@ private:
Ui::NewInstanceDialog *ui;
const InstVersion *m_selectedVersion;
const InstanceTypeInterface *m_selectedType;
};
#endif // NEWINSTANCEDIALOG_H