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>
16 #include <QStandardPaths>
18 DolphinBookmarkHandler::DolphinBookmarkHandler(DolphinMainWindow
*mainWindow
,
19 KActionCollection
* collection
,
23 m_mainWindow(mainWindow
)
25 QString bookmarksFile
= QStandardPaths::locate(QStandardPaths::GenericDataLocation
,
26 QStringLiteral("kfile/bookmarks.xml"));
27 if (bookmarksFile
.isEmpty()) {
28 QString genericDataLocation
= QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation
);
29 if (genericDataLocation
.isEmpty()) {
30 qWarning() << "GenericDataLocation is empty! Bookmarks will not be saved correctly.";
32 bookmarksFile
= QStringLiteral("%1/dolphin").arg(genericDataLocation
);
33 QDir().mkpath(bookmarksFile
);
34 bookmarksFile
+= QLatin1String("/bookmarks.xml");
36 m_bookmarkManager
= KBookmarkManager::managerForFile(bookmarksFile
, QStringLiteral("dolphin"));
37 m_bookmarkManager
->setUpdate(true);
38 m_bookmarkMenu
.reset(new KBookmarkMenu(m_bookmarkManager
, this, menu
));
40 collection
->addAction(QStringLiteral("add_bookmark"), m_bookmarkMenu
->addBookmarkAction());
41 collection
->addAction(QStringLiteral("edit_bookmarks"), m_bookmarkMenu
->editBookmarksAction());
42 collection
->addAction(QStringLiteral("add_bookmarks_list"), m_bookmarkMenu
->bookmarkTabsAsFolderAction());
45 DolphinBookmarkHandler::~DolphinBookmarkHandler()
49 QString
DolphinBookmarkHandler::currentTitle() const
51 return title(m_mainWindow
->activeViewContainer());
54 QUrl
DolphinBookmarkHandler::currentUrl() const
56 return url(m_mainWindow
->activeViewContainer());
59 QString
DolphinBookmarkHandler::currentIcon() const
61 return icon(m_mainWindow
->activeViewContainer());
64 bool DolphinBookmarkHandler::supportsTabs() const
69 QList
<KBookmarkOwner::FutureBookmark
> DolphinBookmarkHandler::currentBookmarkList() const
71 const auto viewContainers
= m_mainWindow
->activeViewContainers();
72 QList
<FutureBookmark
> bookmarks
;
73 bookmarks
.reserve(viewContainers
.size());
74 for (const auto viewContainer
: viewContainers
) {
75 bookmarks
<< FutureBookmark(title(viewContainer
), url(viewContainer
), icon(viewContainer
));
80 bool DolphinBookmarkHandler::enableOption(KBookmarkOwner::BookmarkOption option
) const
83 case BookmarkOption::ShowAddBookmark
: return true;
84 case BookmarkOption::ShowEditBookmark
: return true;
89 void DolphinBookmarkHandler::openBookmark(const KBookmark
& bookmark
, Qt::MouseButtons
, Qt::KeyboardModifiers
)
91 m_mainWindow
->changeUrl(bookmark
.url());
94 void DolphinBookmarkHandler::openFolderinTabs(const KBookmarkGroup
& bookmarkGroup
)
96 m_mainWindow
->openDirectories(bookmarkGroup
.groupUrlList(), false);
99 void DolphinBookmarkHandler::openInNewTab(const KBookmark
& bookmark
)
101 m_mainWindow
->openNewTabAfterCurrentTab(bookmark
.url());
104 void DolphinBookmarkHandler::openInNewWindow(const KBookmark
& bookmark
)
106 Dolphin::openNewWindow({bookmark
.url()}, m_mainWindow
);
109 QString
DolphinBookmarkHandler::title(DolphinViewContainer
* viewContainer
)
111 return viewContainer
->caption();
114 QUrl
DolphinBookmarkHandler::url(DolphinViewContainer
* viewContainer
)
116 return viewContainer
->url();
119 QString
DolphinBookmarkHandler::icon(DolphinViewContainer
* viewContainer
)
121 return KIO::iconNameForUrl(viewContainer
->url());