X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/9203fdc4d9945b391cf0722334934df446938867..5d9051bba36c8690a622591b1164158f526a9f12:/src/dolphinrecenttabsmenu.cpp diff --git a/src/dolphinrecenttabsmenu.cpp b/src/dolphinrecenttabsmenu.cpp index 2335f1bf4..d9b103c0c 100644 --- a/src/dolphinrecenttabsmenu.cpp +++ b/src/dolphinrecenttabsmenu.cpp @@ -1,57 +1,45 @@ -/*************************************************************************** - * Copyright (C) 2014 by Emmanuel Pescosta * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2014 Emmanuel Pescosta + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #include "dolphinrecenttabsmenu.h" +#include "search/dolphinquery.h" -#include #include -#include -#include +#include +#include + +#include +#include -DolphinRecentTabsMenu::DolphinRecentTabsMenu(QObject* parent) : - KActionMenu(KIcon("edit-undo"), i18n("Recently Closed Tabs"), parent) +DolphinRecentTabsMenu::DolphinRecentTabsMenu(QObject *parent) + : KActionMenu(QIcon::fromTheme(QStringLiteral("edit-undo")), i18n("Recently Closed Tabs"), parent) { - setDelayed(false); + setPopupMode(QToolButton::InstantPopup); setEnabled(false); m_clearListAction = new QAction(i18n("Empty Recently Closed Tabs"), this); - m_clearListAction->setIcon(KIcon("edit-clear-list")); + m_clearListAction->setIcon(QIcon::fromTheme(QStringLiteral("edit-clear-history"))); addAction(m_clearListAction); addSeparator(); - connect(menu(), SIGNAL(triggered(QAction*)), - this, SLOT(handleAction(QAction*))); + connect(menu(), &QMenu::triggered, this, &DolphinRecentTabsMenu::handleAction); } -void DolphinRecentTabsMenu::rememberClosedTab(const KUrl& primaryUrl, const KUrl& secondaryUrl) +void DolphinRecentTabsMenu::rememberClosedTab(const QUrl &url, const QByteArray &state) { - QAction* action = new QAction(menu()); - action->setText(primaryUrl.path()); - - const QString iconName = KMimeType::iconNameForUrl(primaryUrl); - action->setIcon(KIcon(iconName)); - - KUrl::List urls; - urls << primaryUrl; - urls << secondaryUrl; - action->setData(QVariant::fromValue(urls)); + QAction *action = new QAction(menu()); + if (Search::isSupportedSearchScheme(url.scheme())) { + action->setText(Search::DolphinQuery{url, QUrl{}}.title()); + } else { + action->setText(url.path()); + } + action->setData(state); + const QString iconName = KIO::iconNameForUrl(url); + action->setIcon(QIcon::fromTheme(iconName)); // Add the closed tab menu entry after the separator and // "Empty Recently Closed Tabs" entry @@ -60,7 +48,7 @@ void DolphinRecentTabsMenu::rememberClosedTab(const KUrl& primaryUrl, const KUrl } else { insertAction(menu()->actions().at(2), action); } - emit closedTabsCountChanged(menu()->actions().size() - 2); + Q_EMIT closedTabsCountChanged(menu()->actions().size() - 2); // Assure that only up to 6 closed tabs are shown in the menu. // 8 because of clear action + separator + 6 closed tabs if (menu()->actions().size() > 8) { @@ -76,29 +64,29 @@ void DolphinRecentTabsMenu::undoCloseTab() handleAction(menu()->actions().at(2)); } -void DolphinRecentTabsMenu::handleAction(QAction* action) +void DolphinRecentTabsMenu::handleAction(QAction *action) { if (action == m_clearListAction) { // Clear all actions except the "Empty Recently Closed Tabs" // action and the separator - QList actions = menu()->actions(); + QList actions = menu()->actions(); const int count = actions.size(); - for (int i = 2; i < count; ++i) { + for (int i = count - 1; i >= 2; i--) { removeAction(actions.at(i)); } - emit closedTabsCountChanged(0); + Q_EMIT closedTabsCountChanged(0); } else { - const KUrl::List urls = action->data().value(); + const QByteArray state = action->data().toByteArray(); removeAction(action); delete action; - action = 0; - if (urls.count() == 2) { - emit restoreClosedTab(urls.first(), urls.last()); - } - emit closedTabsCountChanged(menu()->actions().size() - 2); + action = nullptr; + Q_EMIT restoreClosedTab(state); + Q_EMIT closedTabsCountChanged(menu()->actions().size() - 2); } if (menu()->actions().count() <= 2) { setEnabled(false); } -} \ No newline at end of file +} + +#include "moc_dolphinrecenttabsmenu.cpp"