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
, KActionCollection
*collection
, QMenu
*menu
, QObject
*parent
)
19 , m_mainWindow(mainWindow
)
21 QString bookmarksFile
= QStandardPaths::locate(QStandardPaths::GenericDataLocation
, QStringLiteral("kfile/bookmarks.xml"));
22 if (bookmarksFile
.isEmpty()) {
23 QString genericDataLocation
= QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation
);
24 if (genericDataLocation
.isEmpty()) {
25 qWarning() << "GenericDataLocation is empty! Bookmarks will not be saved correctly.";
27 bookmarksFile
= QStringLiteral("%1/dolphin").arg(genericDataLocation
);
28 QDir().mkpath(bookmarksFile
);
29 bookmarksFile
+= QLatin1String("/bookmarks.xml");
31 m_bookmarkManager
= std::make_unique
<KBookmarkManager
>(bookmarksFile
);
32 m_bookmarkManager
->setUpdate(true);
33 m_bookmarkMenu
.reset(new KBookmarkMenu(m_bookmarkManager
.get(), this, menu
));
35 collection
->addAction(QStringLiteral("add_bookmark"), m_bookmarkMenu
->addBookmarkAction());
36 collection
->addAction(QStringLiteral("edit_bookmarks"), m_bookmarkMenu
->editBookmarksAction());
37 collection
->addAction(QStringLiteral("add_bookmarks_list"), m_bookmarkMenu
->bookmarkTabsAsFolderAction());
40 DolphinBookmarkHandler::~DolphinBookmarkHandler()
44 QString
DolphinBookmarkHandler::currentTitle() const
46 return title(m_mainWindow
->activeViewContainer());
49 QUrl
DolphinBookmarkHandler::currentUrl() const
51 return url(m_mainWindow
->activeViewContainer());
54 QString
DolphinBookmarkHandler::currentIcon() const
56 return icon(m_mainWindow
->activeViewContainer());
59 bool DolphinBookmarkHandler::supportsTabs() const
64 QList
<KBookmarkOwner::FutureBookmark
> DolphinBookmarkHandler::currentBookmarkList() const
66 const auto viewContainers
= m_mainWindow
->viewContainers();
67 QList
<FutureBookmark
> bookmarks
;
68 bookmarks
.reserve(viewContainers
.size());
69 for (const auto viewContainer
: viewContainers
) {
70 bookmarks
<< FutureBookmark(title(viewContainer
), url(viewContainer
), icon(viewContainer
));
75 bool DolphinBookmarkHandler::enableOption(KBookmarkOwner::BookmarkOption option
) const
78 case BookmarkOption::ShowAddBookmark
:
80 case BookmarkOption::ShowEditBookmark
:
86 void DolphinBookmarkHandler::openBookmark(const KBookmark
&bookmark
, Qt::MouseButtons
, Qt::KeyboardModifiers
)
88 m_mainWindow
->changeUrl(bookmark
.url());
91 void DolphinBookmarkHandler::openFolderinTabs(const KBookmarkGroup
&bookmarkGroup
)
93 m_mainWindow
->openDirectories(bookmarkGroup
.groupUrlList(), false);
96 void DolphinBookmarkHandler::openInNewTab(const KBookmark
&bookmark
)
98 m_mainWindow
->openNewTab(bookmark
.url());
101 void DolphinBookmarkHandler::openInNewWindow(const KBookmark
&bookmark
)
103 Dolphin::openNewWindow({bookmark
.url()}, m_mainWindow
);
106 QString
DolphinBookmarkHandler::title(DolphinViewContainer
*viewContainer
)
108 return viewContainer
->caption();
111 QUrl
DolphinBookmarkHandler::url(DolphinViewContainer
*viewContainer
)
113 return viewContainer
->url();
116 QString
DolphinBookmarkHandler::icon(DolphinViewContainer
*viewContainer
)
118 return KIO::iconNameForUrl(viewContainer
->url());
121 #include "moc_dolphinbookmarkhandler.cpp"