File indexing completed on 2024-04-21 16:30:11
0001 /* 0002 * SPDX-FileCopyrightText: 2019 David Hallas <david@davidhallas.dk> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "dolphinbookmarkhandler.h" 0008 #include "dolphinmainwindow.h" 0009 #include "dolphinviewcontainer.h" 0010 #include "global.h" 0011 #include <KActionCollection> 0012 #include <KBookmarkMenu> 0013 #include <QDebug> 0014 #include <QDir> 0015 #include <QStandardPaths> 0016 0017 DolphinBookmarkHandler::DolphinBookmarkHandler(DolphinMainWindow *mainWindow, KActionCollection *collection, QMenu *menu, QObject *parent) 0018 : QObject(parent) 0019 , m_mainWindow(mainWindow) 0020 { 0021 QString bookmarksFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kfile/bookmarks.xml")); 0022 if (bookmarksFile.isEmpty()) { 0023 QString genericDataLocation = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); 0024 if (genericDataLocation.isEmpty()) { 0025 qWarning() << "GenericDataLocation is empty! Bookmarks will not be saved correctly."; 0026 } 0027 bookmarksFile = QStringLiteral("%1/dolphin").arg(genericDataLocation); 0028 QDir().mkpath(bookmarksFile); 0029 bookmarksFile += QLatin1String("/bookmarks.xml"); 0030 } 0031 m_bookmarkManager = std::make_unique<KBookmarkManager>(bookmarksFile); 0032 m_bookmarkMenu.reset(new KBookmarkMenu(m_bookmarkManager.get(), this, menu)); 0033 0034 collection->addAction(QStringLiteral("add_bookmark"), m_bookmarkMenu->addBookmarkAction()); 0035 collection->addAction(QStringLiteral("edit_bookmarks"), m_bookmarkMenu->editBookmarksAction()); 0036 collection->addAction(QStringLiteral("add_bookmarks_list"), m_bookmarkMenu->bookmarkTabsAsFolderAction()); 0037 } 0038 0039 DolphinBookmarkHandler::~DolphinBookmarkHandler() 0040 { 0041 } 0042 0043 QString DolphinBookmarkHandler::currentTitle() const 0044 { 0045 return title(m_mainWindow->activeViewContainer()); 0046 } 0047 0048 QUrl DolphinBookmarkHandler::currentUrl() const 0049 { 0050 return url(m_mainWindow->activeViewContainer()); 0051 } 0052 0053 QString DolphinBookmarkHandler::currentIcon() const 0054 { 0055 return icon(m_mainWindow->activeViewContainer()); 0056 } 0057 0058 bool DolphinBookmarkHandler::supportsTabs() const 0059 { 0060 return true; 0061 } 0062 0063 QList<KBookmarkOwner::FutureBookmark> DolphinBookmarkHandler::currentBookmarkList() const 0064 { 0065 const auto viewContainers = m_mainWindow->viewContainers(); 0066 QList<FutureBookmark> bookmarks; 0067 bookmarks.reserve(viewContainers.size()); 0068 for (const auto viewContainer : viewContainers) { 0069 bookmarks << FutureBookmark(title(viewContainer), url(viewContainer), icon(viewContainer)); 0070 } 0071 return bookmarks; 0072 } 0073 0074 bool DolphinBookmarkHandler::enableOption(KBookmarkOwner::BookmarkOption option) const 0075 { 0076 switch (option) { 0077 case BookmarkOption::ShowAddBookmark: 0078 return true; 0079 case BookmarkOption::ShowEditBookmark: 0080 return true; 0081 } 0082 return false; 0083 } 0084 0085 void DolphinBookmarkHandler::openBookmark(const KBookmark &bookmark, Qt::MouseButtons, Qt::KeyboardModifiers) 0086 { 0087 m_mainWindow->changeUrl(bookmark.url()); 0088 } 0089 0090 void DolphinBookmarkHandler::openFolderinTabs(const KBookmarkGroup &bookmarkGroup) 0091 { 0092 m_mainWindow->openDirectories(bookmarkGroup.groupUrlList(), false); 0093 } 0094 0095 void DolphinBookmarkHandler::openInNewTab(const KBookmark &bookmark) 0096 { 0097 m_mainWindow->openNewTab(bookmark.url()); 0098 } 0099 0100 void DolphinBookmarkHandler::openInNewWindow(const KBookmark &bookmark) 0101 { 0102 Dolphin::openNewWindow({bookmark.url()}, m_mainWindow); 0103 } 0104 0105 QString DolphinBookmarkHandler::title(DolphinViewContainer *viewContainer) 0106 { 0107 return viewContainer->caption(); 0108 } 0109 0110 QUrl DolphinBookmarkHandler::url(DolphinViewContainer *viewContainer) 0111 { 0112 return viewContainer->url(); 0113 } 0114 0115 QString DolphinBookmarkHandler::icon(DolphinViewContainer *viewContainer) 0116 { 0117 return KIO::iconNameForUrl(viewContainer->url()); 0118 } 0119 0120 #include "moc_dolphinbookmarkhandler.cpp"