From 7b404e73a84ddbcf235dd8ab5183e36de224646b Mon Sep 17 00:00:00 2001 From: David Rosca Date: Thu, 31 Oct 2019 10:15:07 +0100 Subject: [PATCH] CookieManager: Add support for selecting more than one cookie at once Summary: When manually cleaning cookies, it is very convenient to be able to delete a bunch of them at once, when we do not want to delete all cookies. Reviewers: #falkon, drosca Reviewed By: #falkon, drosca Subscribers: falkon Tags: #falkon Differential Revision: https://phabricator.kde.org/D24967 --- src/lib/cookies/cookiemanager.cpp | 34 ++++++++++++++++++++----------- src/lib/cookies/cookiemanager.ui | 3 +++ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/lib/cookies/cookiemanager.cpp b/src/lib/cookies/cookiemanager.cpp index 1aa21a9b7..a6017727d 100644 --- a/src/lib/cookies/cookiemanager.cpp +++ b/src/lib/cookies/cookiemanager.cpp @@ -119,22 +119,22 @@ void CookieManager::removeAll() void CookieManager::remove() { - QTreeWidgetItem* current = ui->cookieTree->currentItem(); - if (!current) { - return; - } - QList cookies; + auto selection = ui->cookieTree->selectedItems(); - if (current->childCount()) { - for (int i = 0; i < current->childCount(); ++i) { - QTreeWidgetItem *item = current->child(i); - if (item && m_itemHash.contains(item)) { - cookies.append(m_itemHash.value(item)); + for (int i = 0; i < selection.count(); i++) { + QTreeWidgetItem* current = selection[i]; + + if (current->childCount()) { + for (int i = 0; i < current->childCount(); ++i) { + QTreeWidgetItem *item = current->child(i); + if (item && m_itemHash.contains(item)) { + cookies.append(m_itemHash.value(item)); + } } + } else if (m_itemHash.contains(current)) { + cookies.append(m_itemHash.value(current)); } - } else if (m_itemHash.contains(current)) { - cookies.append(m_itemHash.value(current)); } foreach (const QNetworkCookie &cookie, cookies) { @@ -157,6 +157,16 @@ void CookieManager::currentItemChanged(QTreeWidgetItem* current, QTreeWidgetItem ui->secure->setText(tr("")); ui->expiration->setText(tr("")); + ui->removeOne->setText(tr("Remove cookies")); + return; + } else if (ui->cookieTree->selectedItems().count() > 1) { + ui->name->setText(tr("")); + ui->value->setText(tr("")); + ui->server->setText(tr("")); + ui->path->setText(tr("")); + ui->secure->setText(tr("")); + ui->expiration->setText(tr("")); + ui->removeOne->setText(tr("Remove cookies")); return; } diff --git a/src/lib/cookies/cookiemanager.ui b/src/lib/cookies/cookiemanager.ui index 01cb72cba..d09326eb0 100644 --- a/src/lib/cookies/cookiemanager.ui +++ b/src/lib/cookies/cookiemanager.ui @@ -55,6 +55,9 @@ + + QAbstractItemView::ExtendedSelection + true