diff options
author | Andrew <forkk@forkk.net> | 2013-04-22 17:15:18 -0500 |
---|---|---|
committer | Andrew <forkk@forkk.net> | 2013-04-22 17:15:18 -0500 |
commit | 1626fa013c86dc9f30254f57b3518211f6d0c65a (patch) | |
tree | 7f5a1b09916f55587c282ff7ffb51d792ceefd08 /gui | |
parent | ff3078b3a652316eef760386f665d152cbeb8db9 (diff) | |
download | PrismLauncher-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.gz PrismLauncher-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.bz2 PrismLauncher-1626fa013c86dc9f30254f57b3518211f6d0c65a.zip |
Implement instance creation.
Diffstat (limited to 'gui')
-rw-r--r-- | gui/mainwindow.cpp | 45 | ||||
-rw-r--r-- | gui/newinstancedialog.cpp | 23 | ||||
-rw-r--r-- | gui/newinstancedialog.h | 5 |
3 files changed, 72 insertions, 1 deletions
diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 7761afe8..7f05c745 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -147,7 +147,50 @@ void MainWindow::instanceActivated ( QModelIndex index ) void MainWindow::on_actionAddInstance_triggered() { NewInstanceDialog *newInstDlg = new NewInstanceDialog ( this ); - newInstDlg->exec(); + if (newInstDlg->exec()) + { + Instance *newInstance = NULL; + + QString instDirName = DirNameFromString(newInstDlg->instName()); + QString instDir = PathCombine(globalSettings->get("InstanceDir").toString(), + instDirName); + + InstanceLoader::InstTypeError error = InstanceLoader::get(). + createInstance(newInstance, newInstDlg->selectedType(), instDir); + + if (error == InstanceLoader::NoError) + { + newInstance->setName(newInstDlg->instName()); + instList.add(InstancePtr(newInstance)); + } + else + { + QString errorMsg = QString("Failed to create instance %1: "). + arg(instDirName); + + switch (error) + { + case InstanceLoader::TypeNotRegistered: + errorMsg += "Instance type not found."; + break; + + 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); + } + } } void MainWindow::on_actionChangeInstGroup_triggered() diff --git a/gui/newinstancedialog.cpp b/gui/newinstancedialog.cpp index f4d57367..3cbfabb0 100644 --- a/gui/newinstancedialog.cpp +++ b/gui/newinstancedialog.cpp @@ -74,6 +74,8 @@ void NewInstanceDialog::updateSelectedType() { if (!m_selectedType->versionList()->isLoaded()) loadVersionList(); + + setSelectedVersion(m_selectedType->versionList()->getLatestStable()); } } @@ -112,6 +114,27 @@ void NewInstanceDialog::loadVersionList() setSelectedVersion(m_selectedType->versionList()->getLatestStable()); } +QString NewInstanceDialog::instName() const +{ + return ui->instNameTextBox->text(); +} + +QString NewInstanceDialog::iconKey() const +{ + // TODO: Implement icon stuff. + return "default"; +} + +const InstanceTypeInterface *NewInstanceDialog::selectedType() const +{ + return m_selectedType; +} + +const InstVersion *NewInstanceDialog::selectedVersion() const +{ + return m_selectedVersion; +} + void NewInstanceDialog::on_btnChangeVersion_clicked() { if (m_selectedType) diff --git a/gui/newinstancedialog.h b/gui/newinstancedialog.h index da689c41..93d94575 100644 --- a/gui/newinstancedialog.h +++ b/gui/newinstancedialog.h @@ -41,6 +41,11 @@ public: void loadVersionList(); + QString instName() const; + QString iconKey() const; + const InstanceTypeInterface *selectedType() const; + const InstVersion *selectedVersion() const; + private slots: void on_btnChangeVersion_clicked(); |