X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e242d9548d11d92568a648efece5ff6c280b36cd..c07a97c4be1b5118026ea95831fd1edf7fac34e9:/src/dolphinrecenttabsmenu.cpp diff --git a/src/dolphinrecenttabsmenu.cpp b/src/dolphinrecenttabsmenu.cpp index d0b694c03..1087a38e4 100644 --- a/src/dolphinrecenttabsmenu.cpp +++ b/src/dolphinrecenttabsmenu.cpp @@ -21,8 +21,8 @@ #include #include -#include -#include +#include +#include DolphinRecentTabsMenu::DolphinRecentTabsMenu(QObject* parent) : KActionMenu(QIcon::fromTheme("edit-undo"), i18n("Recently Closed Tabs"), parent) @@ -40,19 +40,14 @@ DolphinRecentTabsMenu::DolphinRecentTabsMenu(QObject* parent) : this, SLOT(handleAction(QAction*))); } -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->setText(url.path()); + action->setData(state); + const QString iconName = KIO::iconNameForUrl(url); action->setIcon(QIcon::fromTheme(iconName)); - KUrl::List urls; - urls << primaryUrl; - urls << secondaryUrl; - action->setData(QVariant::fromValue(urls)); - // Add the closed tab menu entry after the separator and // "Empty Recently Closed Tabs" entry if (menu()->actions().size() == 2) { @@ -60,7 +55,7 @@ void DolphinRecentTabsMenu::rememberClosedTab(const KUrl& primaryUrl, const KUrl } else { insertAction(menu()->actions().at(2), action); } - + 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) { @@ -70,6 +65,12 @@ void DolphinRecentTabsMenu::rememberClosedTab(const KUrl& primaryUrl, const KUrl KAcceleratorManager::manage(menu()); } +void DolphinRecentTabsMenu::undoCloseTab() +{ + Q_ASSERT(menu()->actions().size() > 2); + handleAction(menu()->actions().at(2)); +} + void DolphinRecentTabsMenu::handleAction(QAction* action) { if (action == m_clearListAction) { @@ -80,17 +81,17 @@ void DolphinRecentTabsMenu::handleAction(QAction* action) for (int i = 2; i < count; ++i) { removeAction(actions.at(i)); } + emit closedTabsCountChanged(0); } else { - const KUrl::List urls = action->data().value(); - if (urls.count() == 2) { - emit restoreClosedTab(urls.first(), urls.last()); - } + const QByteArray state = action->data().value(); removeAction(action); delete action; action = 0; + emit restoreClosedTab(state); + emit closedTabsCountChanged(menu()->actions().size() - 2); } if (menu()->actions().count() <= 2) { setEnabled(false); } -} \ No newline at end of file +}