2 * SPDX-FileCopyrightText: 2019 David Hallas <david@davidhallas.dk>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #include "dolphinbookmarkhandler.h"
8 #include "dolphinmainwindow.h"
9 #include "dolphinviewcontainer.h"
11 #include <KActionCollection>
12 #include <KBookmarkMenu>
15 #include <QStandardPaths>
17 DolphinBookmarkHandler::DolphinBookmarkHandler(DolphinMainWindow
*mainWindow
,
18 KActionCollection
* collection
,
22 m_mainWindow(mainWindow
)
24 QString bookmarksFile
= QStandardPaths::locate(QStandardPaths::GenericDataLocation
,
25 QStringLiteral("kfile/bookmarks.xml"));
26 if (bookmarksFile
.isEmpty()) {
27 QString genericDataLocation
= QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation
);
28 if (genericDataLocation
.isEmpty()) {
29 qWarning() << "GenericDataLocation is empty! Bookmarks will not be saved correctly.";
31 bookmarksFile
= QStringLiteral("%1/dolphin").arg(genericDataLocation
);
32 QDir().mkpath(bookmarksFile
);
33 bookmarksFile
+= QLatin1String("/bookmarks.xml");
35 m_bookmarkManager
= KBookmarkManager::managerForFile(bookmarksFile
, QStringLiteral("dolphin"));
36 m_bookmarkManager
->setUpdate(true);
37 m_bookmarkMenu
.reset(new KBookmarkMenu(m_bookmarkManager
, this, menu
));
39 collection
->addAction(QStringLiteral("add_bookmark"), m_bookmarkMenu
->addBookmarkAction());
40 collection
->addAction(QStringLiteral("edit_bookmarks"), m_bookmarkMenu
->editBookmarksAction());
41 collection
->addAction(QStringLiteral("add_bookmarks_list"), m_bookmarkMenu
->bookmarkTabsAsFolderAction());
44 DolphinBookmarkHandler::~DolphinBookmarkHandler()
48 QString
DolphinBookmarkHandler::currentTitle() const
50 return title(m_mainWindow
->activeViewContainer());
53 QUrl
DolphinBookmarkHandler::currentUrl() const
55 return url(m_mainWindow
->activeViewContainer());
58 QString
DolphinBookmarkHandler::currentIcon() const
60 return icon(m_mainWindow
->activeViewContainer());
63 bool DolphinBookmarkHandler::supportsTabs() const
68 QList
<KBookmarkOwner::FutureBookmark
> DolphinBookmarkHandler::currentBookmarkList() const
70 const auto viewContainers
= m_mainWindow
->viewContainers();
71 QList
<FutureBookmark
> bookmarks
;
72 bookmarks
.reserve(viewContainers
.size());
73 for (const auto viewContainer
: viewContainers
) {
74 bookmarks
<< FutureBookmark(title(viewContainer
), url(viewContainer
), icon(viewContainer
));
79 bool DolphinBookmarkHandler::enableOption(KBookmarkOwner::BookmarkOption option
) const
82 case BookmarkOption::ShowAddBookmark
: return true;
83 case BookmarkOption::ShowEditBookmark
: return true;
88 void DolphinBookmarkHandler::openBookmark(const KBookmark
& bookmark
, Qt::MouseButtons
, Qt::KeyboardModifiers
)
90 m_mainWindow
->changeUrl(bookmark
.url());
93 void DolphinBookmarkHandler::openFolderinTabs(const KBookmarkGroup
& bookmarkGroup
)
95 m_mainWindow
->openDirectories(bookmarkGroup
.groupUrlList(), false);
98 void DolphinBookmarkHandler::openInNewTab(const KBookmark
& bookmark
)
100 m_mainWindow
->openNewTab(bookmark
.url());
103 void DolphinBookmarkHandler::openInNewWindow(const KBookmark
& bookmark
)
105 Dolphin::openNewWindow({bookmark
.url()}, m_mainWindow
);
108 QString
DolphinBookmarkHandler::title(DolphinViewContainer
* viewContainer
)
110 return viewContainer
->caption();
113 QUrl
DolphinBookmarkHandler::url(DolphinViewContainer
* viewContainer
)
115 return viewContainer
->url();
118 QString
DolphinBookmarkHandler::icon(DolphinViewContainer
* viewContainer
)
120 return KIO::iconNameForUrl(viewContainer
->url());