From 46fd19591f6cab76303a03f41d0b73d1cf91a806 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 2 Feb 2024 13:44:11 +0100 Subject: [PATCH] Squish: Fix missing impl for deleting shared scripts The action has been present for some time, but so far it had been unimplemented Change-Id: I798a144116ffeba60fb368430b30705ffc9b3f1c Reviewed-by: David Schulz --- src/plugins/squish/squishnavigationwidget.cpp | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/plugins/squish/squishnavigationwidget.cpp b/src/plugins/squish/squishnavigationwidget.cpp index 95f37c67eaf..7921938c37a 100644 --- a/src/plugins/squish/squishnavigationwidget.cpp +++ b/src/plugins/squish/squishnavigationwidget.cpp @@ -47,6 +47,7 @@ private: void onRowsInserted(const QModelIndex &parent, int, int); void onRowsRemoved(const QModelIndex &parent, int, int); void onAddSharedFileTriggered(const QModelIndex &idx); + void onRemoveSharedFileTriggered(const QModelIndex &idx); void onRemoveSharedFolderTriggered(int row, const QModelIndex &parent); void onRemoveAllSharedFolderTriggered(); void onRecordTestCase(const QString &suiteName, const QString &testCase); @@ -161,6 +162,9 @@ void SquishNavigationWidget::contextMenuEvent(QContextMenuEvent *event) case SquishTestTreeItem::SquishSharedFile: { QAction *deleteSharedFile = new QAction(Tr::tr("Delete Shared File"), &menu); menu.addAction(deleteSharedFile); + connect(deleteSharedFile, &QAction::triggered, this, [this, idx] { + onRemoveSharedFileTriggered(idx); + }); break; } case SquishTestTreeItem::SquishSharedFolder: { @@ -325,6 +329,31 @@ void SquishNavigationWidget::onAddSharedFileTriggered(const QModelIndex &idx) m_view->edit(m_sortModel->mapFromSource(added)); } +void SquishNavigationWidget::onRemoveSharedFileTriggered(const QModelIndex &idx) +{ + const auto scriptFile = FilePath::fromVariant(idx.data(LinkRole)); + QTC_ASSERT(!scriptFile.isEmpty(), return); + + const QString detail = Tr::tr("Do you really want to delete \"%1\" permanently?") + .arg(scriptFile.toUserOutput()); + const QMessageBox::StandardButton pressed + = CheckableMessageBox::question(Core::ICore::dialogParent(), + Tr::tr("Remove Shared File"), + detail, + Key("RemoveSharedSquishScript")); + if (pressed != QMessageBox::Yes) + return; + + const QModelIndex &realIdx = m_sortModel->mapToSource(idx); + // close document silently if open + if (Core::IDocument *doc = Core::DocumentModel::documentForFilePath(scriptFile)) + Core::EditorManager::closeDocuments({doc}, false); + if (scriptFile.removeFile()) + m_model->removeTreeItem(realIdx.row(), realIdx.parent()); + else + SquishMessages::criticalMessage(Tr::tr("Failed to remove \"%1\".")); +} + void SquishNavigationWidget::onRemoveSharedFolderTriggered(int row, const QModelIndex &parent) { const auto folder = Utils::FilePath::fromVariant(m_sortModel->index(row, 0, parent).data(LinkRole));