/*************************************************************************** * Copyright (C) 2019 by David Hallas * * * * 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 * ***************************************************************************/ #include "dolphinbookmarkhandler.h" #include "dolphinmainwindow.h" #include "dolphinviewcontainer.h" #include "global.h" #include #include #include #include #include DolphinBookmarkHandler::DolphinBookmarkHandler(DolphinMainWindow *mainWindow, KActionCollection* collection, QMenu* menu, QObject* parent) : QObject(parent), m_mainWindow(mainWindow) { QString bookmarksFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kfile/bookmarks.xml")); if (bookmarksFile.isEmpty()) { QString genericDataLocation = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); if (genericDataLocation.isEmpty()) { qWarning() << "GenericDataLocation is empty! Bookmarks will not be saved correctly."; } bookmarksFile = QStringLiteral("%1/dolphin").arg(genericDataLocation); QDir().mkpath(bookmarksFile); bookmarksFile += QLatin1String("/bookmarks.xml"); } m_bookmarkManager = KBookmarkManager::managerForFile(bookmarksFile, QStringLiteral("dolphin")); m_bookmarkManager->setUpdate(true); m_bookmarkMenu.reset(new KBookmarkMenu(m_bookmarkManager, this, menu, collection)); } DolphinBookmarkHandler::~DolphinBookmarkHandler() { } void DolphinBookmarkHandler::fillControlMenu(QMenu* menu, KActionCollection* collection) { m_bookmarkControlMenu.reset(new KBookmarkMenu(m_bookmarkManager, this, menu, collection)); } QString DolphinBookmarkHandler::currentTitle() const { return title(m_mainWindow->activeViewContainer()); } QUrl DolphinBookmarkHandler::currentUrl() const { return url(m_mainWindow->activeViewContainer()); } QString DolphinBookmarkHandler::currentIcon() const { return icon(m_mainWindow->activeViewContainer()); } bool DolphinBookmarkHandler::supportsTabs() const { return true; } QList DolphinBookmarkHandler::currentBookmarkList() const { const auto viewContainers = m_mainWindow->viewContainers(); QList bookmarks; bookmarks.reserve(viewContainers.size()); for (const auto viewContainer : viewContainers) { bookmarks << FutureBookmark(title(viewContainer), url(viewContainer), icon(viewContainer)); } return bookmarks; } bool DolphinBookmarkHandler::enableOption(KBookmarkOwner::BookmarkOption option) const { switch (option) { case BookmarkOption::ShowAddBookmark: return true; case BookmarkOption::ShowEditBookmark: return true; } return false; } void DolphinBookmarkHandler::openBookmark(const KBookmark& bookmark, Qt::MouseButtons, Qt::KeyboardModifiers) { m_mainWindow->changeUrl(bookmark.url()); } void DolphinBookmarkHandler::openFolderinTabs(const KBookmarkGroup& bookmarkGroup) { m_mainWindow->openDirectories(bookmarkGroup.groupUrlList(), false); } void DolphinBookmarkHandler::openInNewTab(const KBookmark& bookmark) { m_mainWindow->openNewTabAfterCurrentTab(bookmark.url()); } void DolphinBookmarkHandler::openInNewWindow(const KBookmark& bookmark) { Dolphin::openNewWindow({bookmark.url()}, m_mainWindow); } QString DolphinBookmarkHandler::title(DolphinViewContainer* viewContainer) { return viewContainer->caption(); } QUrl DolphinBookmarkHandler::url(DolphinViewContainer* viewContainer) { return viewContainer->url(); } QString DolphinBookmarkHandler::icon(DolphinViewContainer* viewContainer) { return KIO::iconNameForUrl(viewContainer->url()); }