]> cloud.milkyroute.net Git - dolphin.git/blob - src/dolphinbookmarkhandler.cpp
Fix build for KIO version < 6.14
[dolphin.git] / src / dolphinbookmarkhandler.cpp
1 /*
2 * SPDX-FileCopyrightText: 2019 David Hallas <david@davidhallas.dk>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "dolphinbookmarkhandler.h"
8 #include "dolphinmainwindow.h"
9 #include "dolphinviewcontainer.h"
10 #include "global.h"
11 #include <KActionCollection>
12 #include <KBookmarkMenu>
13 #include <QDebug>
14 #include <QDir>
15 #include <QStandardPaths>
16
17 DolphinBookmarkHandler::DolphinBookmarkHandler(DolphinMainWindow *mainWindow, KActionCollection *collection, QMenu *menu, QObject *parent)
18 : QObject(parent)
19 , m_mainWindow(mainWindow)
20 {
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.";
26 }
27 bookmarksFile = QStringLiteral("%1/dolphin").arg(genericDataLocation);
28 QDir().mkpath(bookmarksFile);
29 bookmarksFile += QLatin1String("/bookmarks.xml");
30 }
31 m_bookmarkManager = std::make_unique<KBookmarkManager>(bookmarksFile);
32 m_bookmarkMenu.reset(new KBookmarkMenu(m_bookmarkManager.get(), this, menu));
33
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());
37 }
38
39 DolphinBookmarkHandler::~DolphinBookmarkHandler()
40 {
41 }
42
43 QString DolphinBookmarkHandler::currentTitle() const
44 {
45 return title(m_mainWindow->activeViewContainer());
46 }
47
48 QUrl DolphinBookmarkHandler::currentUrl() const
49 {
50 return url(m_mainWindow->activeViewContainer());
51 }
52
53 QString DolphinBookmarkHandler::currentIcon() const
54 {
55 return icon(m_mainWindow->activeViewContainer());
56 }
57
58 bool DolphinBookmarkHandler::supportsTabs() const
59 {
60 return true;
61 }
62
63 QList<KBookmarkOwner::FutureBookmark> DolphinBookmarkHandler::currentBookmarkList() const
64 {
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));
70 }
71 return bookmarks;
72 }
73
74 bool DolphinBookmarkHandler::enableOption(KBookmarkOwner::BookmarkOption option) const
75 {
76 switch (option) {
77 case BookmarkOption::ShowAddBookmark:
78 return true;
79 case BookmarkOption::ShowEditBookmark:
80 return true;
81 }
82 return false;
83 }
84
85 void DolphinBookmarkHandler::openBookmark(const KBookmark &bookmark, Qt::MouseButtons, Qt::KeyboardModifiers)
86 {
87 m_mainWindow->changeUrl(bookmark.url());
88 }
89
90 void DolphinBookmarkHandler::openFolderinTabs(const KBookmarkGroup &bookmarkGroup)
91 {
92 m_mainWindow->openDirectories(bookmarkGroup.groupUrlList(), false);
93 }
94
95 void DolphinBookmarkHandler::openInNewTab(const KBookmark &bookmark)
96 {
97 m_mainWindow->openNewTab(bookmark.url());
98 }
99
100 void DolphinBookmarkHandler::openInNewWindow(const KBookmark &bookmark)
101 {
102 Dolphin::openNewWindow({bookmark.url()}, m_mainWindow);
103 }
104
105 QString DolphinBookmarkHandler::title(DolphinViewContainer *viewContainer)
106 {
107 return viewContainer->caption();
108 }
109
110 QUrl DolphinBookmarkHandler::url(DolphinViewContainer *viewContainer)
111 {
112 return viewContainer->url();
113 }
114
115 QString DolphinBookmarkHandler::icon(DolphinViewContainer *viewContainer)
116 {
117 return KIO::iconNameForUrl(viewContainer->url());
118 }
119
120 #include "moc_dolphinbookmarkhandler.cpp"