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_bookmarkMenu
.reset(new KBookmarkMenu(m_bookmarkManager
.get(), this, menu
));
34 collection
->addAction(QStringLiteral("add_bookmark"), m_bookmarkMenu
->addBookmarkAction());
35 collection
->addAction(QStringLiteral("edit_bookmarks"), m_bookmarkMenu
->editBookmarksAction());
36 collection
->addAction(QStringLiteral("add_bookmarks_list"), m_bookmarkMenu
->bookmarkTabsAsFolderAction());
39 DolphinBookmarkHandler::~DolphinBookmarkHandler()
43 QString
DolphinBookmarkHandler::currentTitle() const
45 return title(m_mainWindow
->activeViewContainer());
48 QUrl
DolphinBookmarkHandler::currentUrl() const
50 return url(m_mainWindow
->activeViewContainer());
53 QString
DolphinBookmarkHandler::currentIcon() const
55 return icon(m_mainWindow
->activeViewContainer());
58 bool DolphinBookmarkHandler::supportsTabs() const
63 QList
<KBookmarkOwner::FutureBookmark
> DolphinBookmarkHandler::currentBookmarkList() const
65 const auto viewContainers
= m_mainWindow
->viewContainers();
66 QList
<FutureBookmark
> bookmarks
;
67 bookmarks
.reserve(viewContainers
.size());
68 for (const auto viewContainer
: viewContainers
) {
69 bookmarks
<< FutureBookmark(title(viewContainer
), url(viewContainer
), icon(viewContainer
));
74 bool DolphinBookmarkHandler::enableOption(KBookmarkOwner::BookmarkOption option
) const
77 case BookmarkOption::ShowAddBookmark
:
79 case BookmarkOption::ShowEditBookmark
:
85 void DolphinBookmarkHandler::openBookmark(const KBookmark
&bookmark
, Qt::MouseButtons
, Qt::KeyboardModifiers
)
87 m_mainWindow
->changeUrl(bookmark
.url());
90 void DolphinBookmarkHandler::openFolderinTabs(const KBookmarkGroup
&bookmarkGroup
)
92 m_mainWindow
->openDirectories(bookmarkGroup
.groupUrlList(), false);
95 void DolphinBookmarkHandler::openInNewTab(const KBookmark
&bookmark
)
97 m_mainWindow
->openNewTab(bookmark
.url());
100 void DolphinBookmarkHandler::openInNewWindow(const KBookmark
&bookmark
)
102 Dolphin::openNewWindow({bookmark
.url()}, m_mainWindow
);
105 QString
DolphinBookmarkHandler::title(DolphinViewContainer
*viewContainer
)
107 return viewContainer
->caption();
110 QUrl
DolphinBookmarkHandler::url(DolphinViewContainer
*viewContainer
)
112 return viewContainer
->url();
115 QString
DolphinBookmarkHandler::icon(DolphinViewContainer
*viewContainer
)
117 return KIO::iconNameForUrl(viewContainer
->url());
120 #include "moc_dolphinbookmarkhandler.cpp"