diff options
author | Petr Mrázek <peterix@gmail.com> | 2015-09-15 22:51:10 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2015-09-15 22:51:10 +0200 |
commit | 0a187d0ad36f1223334a260b0c51c0b1b2935298 (patch) | |
tree | d05214e6dbe1204c11f291b82509d5aa80ad061b /application/pages/WorldListPage.cpp | |
parent | 8d3f13c4478f7e99a32a0804d57ac2ece05d7e92 (diff) | |
download | MultiMC-0a187d0ad36f1223334a260b0c51c0b1b2935298.tar MultiMC-0a187d0ad36f1223334a260b0c51c0b1b2935298.tar.gz MultiMC-0a187d0ad36f1223334a260b0c51c0b1b2935298.tar.lz MultiMC-0a187d0ad36f1223334a260b0c51c0b1b2935298.tar.xz MultiMC-0a187d0ad36f1223334a260b0c51c0b1b2935298.zip |
GH-1227 protect world from corruption
Diffstat (limited to 'application/pages/WorldListPage.cpp')
-rw-r--r-- | application/pages/WorldListPage.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/application/pages/WorldListPage.cpp b/application/pages/WorldListPage.cpp index 3b531d5d..a952d02c 100644 --- a/application/pages/WorldListPage.cpp +++ b/application/pages/WorldListPage.cpp @@ -156,6 +156,9 @@ void WorldListPage::on_mcEditBtn_clicked() return; } + if(!worldSafetyNagQuestion()) + return; + auto fullPath = m_worlds->data(index, WorldList::FolderRole).toString(); #ifdef Q_OS_OSX @@ -230,6 +233,25 @@ void WorldListPage::on_addBtn_clicked() } } +bool WorldListPage::isWorldSafe(QModelIndex) +{ + return !m_inst->isRunning(); +} + +bool WorldListPage::worldSafetyNagQuestion() +{ + if(!isWorldSafe(getSelectedWorld())) + { + auto result = QMessageBox::question(this, tr("Copy World"), tr("Changing a world while Minecraft is running is potentially unsafe.\nDo you wish to proceed?")); + if(result == QMessageBox::No) + { + return false; + } + } + return true; +} + + void WorldListPage::on_copyBtn_clicked() { QModelIndex index = getSelectedWorld(); @@ -237,6 +259,10 @@ void WorldListPage::on_copyBtn_clicked() { return; } + + if(!worldSafetyNagQuestion()) + return; + auto worldVariant = m_worlds->data(index, WorldList::ObjectRole); auto world = (World *) worldVariant.value<void *>(); bool ok = false; @@ -255,6 +281,10 @@ void WorldListPage::on_renameBtn_clicked() { return; } + + if(!worldSafetyNagQuestion()) + return; + auto worldVariant = m_worlds->data(index, WorldList::ObjectRole); auto world = (World *) worldVariant.value<void *>(); @@ -266,3 +296,8 @@ void WorldListPage::on_renameBtn_clicked() world->rename(name); } } + +void WorldListPage::on_refreshBtn_clicked() +{ + m_worlds->update(); +} |