From 189445191d40d5b53e05d44cb128d476e817e34d Mon Sep 17 00:00:00 2001 From: Al12rs Date: Wed, 18 Apr 2018 00:08:05 +0200 Subject: Added Delete shourcut to both modinfodialog and Overwriteinfodilaog. Added confirm messages since delete can't be undone. --- src/modinfodialog.cpp | 33 +++++++++++++++++++++++++++++++++ src/modinfodialog.h | 2 ++ src/overwriteinfodialog.cpp | 34 ++++++++++++++++++++++++++++++++++ src/overwriteinfodialog.h | 2 ++ 4 files changed, 71 insertions(+) (limited to 'src') diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp index c25041f2..710b9696 100644 --- a/src/modinfodialog.cpp +++ b/src/modinfodialog.cpp @@ -46,6 +46,7 @@ along with Mod Organizer. If not, see . #include #include #include +#include #include @@ -118,6 +119,8 @@ ModInfoDialog::ModInfoDialog(ModInfo::Ptr modInfo, const DirectoryEntry *directo //TODO: No easy way to delegate links //ui->descriptionView->page()->acceptNavigationRequest(QWebEnginePage::DelegateAllLinks); + new QShortcut(QKeySequence::Delete, this, SLOT(delete_activated())); + if (directory->originExists(ToWString(modInfo->name()))) { m_Origin = &directory->getOriginByName(ToWString(modInfo->name())); if (m_Origin->isDisabled()) { @@ -973,6 +976,36 @@ void ModInfoDialog::deleteFile(const QModelIndex &index) } } +void ModInfoDialog::delete_activated() +{ + if (ui->fileTree->hasFocus()) { + QItemSelectionModel *selection = ui->fileTree->selectionModel(); + + if (selection->hasSelection() && selection->selectedRows().count() >= 1) { + + if (selection->selectedRows().count() == 0) { + return; + } + else if (selection->selectedRows().count() == 1) { + QString fileName = m_FileSystemModel->fileName(selection->selectedRows().at(0)); + if (QMessageBox::question(this, tr("Confirm"), tr("Are sure you want to delete \"%1\"?").arg(fileName), + QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) { + return; + } + } + else { + if (QMessageBox::question(this, tr("Confirm"), tr("Are sure you want to delete the selected files?"), + QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) { + return; + } + } + + foreach(QModelIndex index, selection->selectedRows()) { + deleteFile(index); + } + } + } +} void ModInfoDialog::deleteTriggered() { diff --git a/src/modinfodialog.h b/src/modinfodialog.h index ddd72f4d..4709a1d2 100644 --- a/src/modinfodialog.h +++ b/src/modinfodialog.h @@ -165,6 +165,8 @@ private slots: void thumbnailClicked(const QString &fileName); void linkClicked(const QUrl &url); + void delete_activated(); + void deleteTriggered(); void renameTriggered(); void openTriggered(); diff --git a/src/overwriteinfodialog.cpp b/src/overwriteinfodialog.cpp index e956b025..3bb67354 100644 --- a/src/overwriteinfodialog.cpp +++ b/src/overwriteinfodialog.cpp @@ -23,6 +23,7 @@ along with Mod Organizer. If not, see . #include "utility.h" #include #include +#include #include @@ -89,6 +90,9 @@ OverwriteInfoDialog::OverwriteInfoDialog(ModInfo::Ptr modInfo, QWidget *parent) m_RenameAction = new QAction(tr("&Rename"), ui->filesView); m_OpenAction = new QAction(tr("&Open"), ui->filesView); m_NewFolderAction = new QAction(tr("&New Folder"), ui->filesView); + + new QShortcut(QKeySequence::Delete, this, SLOT(delete_activated())); + QObject::connect(m_DeleteAction, SIGNAL(triggered()), this, SLOT(deleteTriggered())); QObject::connect(m_RenameAction, SIGNAL(triggered()), this, SLOT(renameTriggered())); QObject::connect(m_OpenAction, SIGNAL(triggered()), this, SLOT(openTriggered())); @@ -145,6 +149,36 @@ void OverwriteInfoDialog::deleteFile(const QModelIndex &index) } } +void OverwriteInfoDialog::delete_activated() +{ + if (ui->filesView->hasFocus()) { + QItemSelectionModel *selection = ui->filesView->selectionModel(); + + if (selection->hasSelection() && selection->selectedRows().count() >= 1) { + + if (selection->selectedRows().count() == 0) { + return; + } + else if (selection->selectedRows().count() == 1) { + QString fileName = m_FileSystemModel->fileName(selection->selectedRows().at(0)); + if (QMessageBox::question(this, tr("Confirm"), tr("Are sure you want to delete \"%1\"?").arg(fileName), + QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) { + return; + } + } + else { + if (QMessageBox::question(this, tr("Confirm"), tr("Are sure you want to delete the selected files?"), + QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes) { + return; + } + } + + foreach(QModelIndex index, selection->selectedRows()) { + deleteFile(index); + } + } + } +} void OverwriteInfoDialog::deleteTriggered() { diff --git a/src/overwriteinfodialog.h b/src/overwriteinfodialog.h index eb182292..7d44c9e8 100644 --- a/src/overwriteinfodialog.h +++ b/src/overwriteinfodialog.h @@ -49,6 +49,8 @@ private: private slots: + void delete_activated(); + void deleteTriggered(); void renameTriggered(); void openTriggered(); -- cgit v1.3.1