From 0a187d0ad36f1223334a260b0c51c0b1b2935298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 15 Sep 2015 22:51:10 +0200 Subject: GH-1227 protect world from corruption --- application/pages/WorldListPage.cpp | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'application/pages/WorldListPage.cpp') 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(); 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(); @@ -266,3 +296,8 @@ void WorldListPage::on_renameBtn_clicked() world->rename(name); } } + +void WorldListPage::on_refreshBtn_clicked() +{ + m_worlds->update(); +} -- cgit v1.2.3