diff options
Diffstat (limited to 'src/dolphinbookmarkhandler.cpp')
| -rw-r--r-- | src/dolphinbookmarkhandler.cpp | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/src/dolphinbookmarkhandler.cpp b/src/dolphinbookmarkhandler.cpp new file mode 100644 index 000000000..bb8f641ec --- /dev/null +++ b/src/dolphinbookmarkhandler.cpp @@ -0,0 +1,135 @@ +/*************************************************************************** + * Copyright (C) 2019 by David Hallas <[email protected]> * + * * + * 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 <KBookmarkMenu> +#include <KIO/Global> +#include <QDebug> +#include <QDir> +#include <QStandardPaths> + +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<KBookmarkOwner::FutureBookmark> DolphinBookmarkHandler::currentBookmarkList() const +{ + const auto viewContainers = m_mainWindow->viewContainers(); + QList<FutureBookmark> 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()); +} |
