Improve handling of destructive actions
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
#include "ExternalResourcesPage.h"
|
||||
#include "ui/dialogs/CustomMessageBox.h"
|
||||
#include "ui_ExternalResourcesPage.h"
|
||||
|
||||
#include "DesktopServices.h"
|
||||
@ -128,7 +129,7 @@ bool ExternalResourcesPage::eventFilter(QObject* obj, QEvent* ev)
|
||||
{
|
||||
if (ev->type() != QEvent::KeyPress)
|
||||
return QWidget::eventFilter(obj, ev);
|
||||
|
||||
|
||||
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(ev);
|
||||
if (obj == ui->treeView)
|
||||
return listFilter(keyEvent);
|
||||
@ -140,7 +141,6 @@ void ExternalResourcesPage::addItem()
|
||||
{
|
||||
if (!m_controlsEnabled)
|
||||
return;
|
||||
|
||||
|
||||
auto list = GuiUtil::BrowseForFiles(
|
||||
helpPage(), tr("Select %1", "Select whatever type of files the page contains. Example: 'Loader Mods'").arg(displayName()),
|
||||
@ -157,8 +157,49 @@ void ExternalResourcesPage::removeItem()
|
||||
{
|
||||
if (!m_controlsEnabled)
|
||||
return;
|
||||
|
||||
|
||||
auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection());
|
||||
|
||||
int count = 0;
|
||||
bool folder = false;
|
||||
for (auto i : selection.indexes()) {
|
||||
if (i.column() == 0) {
|
||||
count++;
|
||||
|
||||
// if a folder is selected, show the confirmation dialog
|
||||
if (m_model->at(i.row()).fileinfo().isDir())
|
||||
folder = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool enough = count > 1;
|
||||
|
||||
if (enough || folder) {
|
||||
QString text;
|
||||
if (enough)
|
||||
text = tr("About to remove: %1 items\n"
|
||||
"This may be permanent and they will be gone from the folder.\n\n"
|
||||
"Are you sure?")
|
||||
.arg(count);
|
||||
else
|
||||
text = tr("About to remove: %1 (folder)\n"
|
||||
"This may be permanent and it will be gone from the parent folder.\n\n"
|
||||
"Are you sure?")
|
||||
.arg(m_model->at(selection.indexes().at(0).row()).fileinfo().fileName());
|
||||
|
||||
auto response = CustomMessageBox::selectable(this, tr("CAREFUL!"), text, QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No,
|
||||
QMessageBox::No)
|
||||
->exec();
|
||||
|
||||
if (response != QMessageBox::Yes)
|
||||
return;
|
||||
}
|
||||
|
||||
removeItems(selection);
|
||||
}
|
||||
|
||||
void ExternalResourcesPage::removeItems(const QItemSelection& selection)
|
||||
{
|
||||
m_model->deleteResources(selection.indexes());
|
||||
}
|
||||
|
||||
@ -209,4 +250,3 @@ bool ExternalResourcesPage::onSelectionChanged(const QModelIndex& current, const
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user