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 | |
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
-rw-r--r-- | application/pages/WorldListPage.cpp | 35 | ||||
-rw-r--r-- | application/pages/WorldListPage.h | 3 | ||||
-rw-r--r-- | application/pages/WorldListPage.ui | 79 |
3 files changed, 83 insertions, 34 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(); +} diff --git a/application/pages/WorldListPage.h b/application/pages/WorldListPage.h index f0b0e7e9..5cf0966a 100644 --- a/application/pages/WorldListPage.h +++ b/application/pages/WorldListPage.h @@ -68,6 +68,8 @@ protected: private: QModelIndex getSelectedWorld(); + bool isWorldSafe(QModelIndex index); + bool worldSafetyNagQuestion(); private: Ui::WorldListPage *ui; @@ -84,6 +86,7 @@ private slots: void on_addBtn_clicked(); void on_copyBtn_clicked(); void on_renameBtn_clicked(); + void on_refreshBtn_clicked(); void on_viewFolderBtn_clicked(); void worldChanged(const QModelIndex ¤t, const QModelIndex &previous); }; diff --git a/application/pages/WorldListPage.ui b/application/pages/WorldListPage.ui index b5fd33da..b172fed8 100644 --- a/application/pages/WorldListPage.ui +++ b/application/pages/WorldListPage.ui @@ -36,32 +36,7 @@ <string>Tab 1</string> </attribute> <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QTreeView" name="worldTreeView"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="acceptDrops"> - <bool>true</bool> - </property> - <property name="dragDropMode"> - <enum>QAbstractItemView::DragDrop</enum> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - <property name="allColumnsShowFocus"> - <bool>true</bool> - </property> - <attribute name="headerStretchLastSection"> - <bool>false</bool> - </attribute> - </widget> - </item> - <item row="0" column="1"> + <item row="0" column="2"> <layout class="QVBoxLayout" name="verticalLayout_2"> <item> <widget class="QPushButton" name="addBtn"> @@ -71,16 +46,19 @@ </widget> </item> <item> - <widget class="QPushButton" name="copyBtn"> + <widget class="LineSeparator" name="separator" native="true"/> + </item> + <item> + <widget class="QPushButton" name="renameBtn"> <property name="text"> - <string>Copy</string> + <string>Rename</string> </property> </widget> </item> <item> - <widget class="QPushButton" name="renameBtn"> + <widget class="QPushButton" name="copyBtn"> <property name="text"> - <string>Rename</string> + <string>Copy</string> </property> </widget> </item> @@ -92,9 +70,6 @@ </widget> </item> <item> - <widget class="LineSeparator" name="separator" native="true"/> - </item> - <item> <widget class="QPushButton" name="mcEditBtn"> <property name="text"> <string>MCEdit</string> @@ -102,6 +77,9 @@ </widget> </item> <item> + <widget class="LineSeparator" name="separator_2" native="true"/> + </item> + <item> <widget class="QPushButton" name="copySeedBtn"> <property name="text"> <string>Copy Seed</string> @@ -122,6 +100,13 @@ </spacer> </item> <item> + <widget class="QPushButton" name="refreshBtn"> + <property name="text"> + <string>Refresh</string> + </property> + </widget> + </item> + <item> <widget class="QPushButton" name="viewFolderBtn"> <property name="text"> <string>&View Folder</string> @@ -130,6 +115,31 @@ </item> </layout> </item> + <item row="0" column="1"> + <widget class="QTreeView" name="worldTreeView"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="acceptDrops"> + <bool>true</bool> + </property> + <property name="dragDropMode"> + <enum>QAbstractItemView::DragDrop</enum> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <attribute name="headerStretchLastSection"> + <bool>false</bool> + </attribute> + </widget> + </item> </layout> </widget> </widget> @@ -148,11 +158,12 @@ <tabstop>tabWidget</tabstop> <tabstop>worldTreeView</tabstop> <tabstop>addBtn</tabstop> - <tabstop>copyBtn</tabstop> <tabstop>renameBtn</tabstop> + <tabstop>copyBtn</tabstop> <tabstop>rmWorldBtn</tabstop> <tabstop>mcEditBtn</tabstop> <tabstop>copySeedBtn</tabstop> + <tabstop>refreshBtn</tabstop> <tabstop>viewFolderBtn</tabstop> </tabstops> <resources/> |