]> cloud.milkyroute.net Git - dolphin.git/blob - src/dolphinbookmarkhandler.cpp
Merge branch 'master' into kf6
[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_bookmarkManager->setUpdate(true);
33 m_bookmarkMenu.reset(new KBookmarkMenu(m_bookmarkManager.get(), this, menu));
34
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());
38 }
39
40 DolphinBookmarkHandler::~DolphinBookmarkHandler()
41 {
42 }
43
44 QString DolphinBookmarkHandler::currentTitle() const
45 {
46 return title(m_mainWindow->activeViewContainer());
47 }
48
49 QUrl DolphinBookmarkHandler::currentUrl() const
50 {
51 return url(m_mainWindow->activeViewContainer());
52 }
53
54 QString DolphinBookmarkHandler::currentIcon() const
55 {
56 return icon(m_mainWindow->activeViewContainer());
57 }
58
59 bool DolphinBookmarkHandler::supportsTabs() const
60 {
61 return true;
62 }
63
64 QList<KBookmarkOwner::FutureBookmark> DolphinBookmarkHandler::currentBookmarkList() const
65 {
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));
71 }
72 return bookmarks;
73 }
74
75 bool DolphinBookmarkHandler::enableOption(KBookmarkOwner::BookmarkOption option) const
76 {
77 switch (option) {
78 case BookmarkOption::ShowAddBookmark:
79 return true;
80 case BookmarkOption::ShowEditBookmark:
81 return true;
82 }
83 return false;
84 }
85
86 void DolphinBookmarkHandler::openBookmark(const KBookmark &bookmark, Qt::MouseButtons, Qt::KeyboardModifiers)
87 {
88 m_mainWindow->changeUrl(bookmark.url());
89 }
90
91 void DolphinBookmarkHandler::openFolderinTabs(const KBookmarkGroup &bookmarkGroup)
92 {
93 m_mainWindow->openDirectories(bookmarkGroup.groupUrlList(), false);
94 }
95
96 void DolphinBookmarkHandler::openInNewTab(const KBookmark &bookmark)
97 {
98 m_mainWindow->openNewTab(bookmark.url());
99 }
100
101 void DolphinBookmarkHandler::openInNewWindow(const KBookmark &bookmark)
102 {
103 Dolphin::openNewWindow({bookmark.url()}, m_mainWindow);
104 }
105
106 QString DolphinBookmarkHandler::title(DolphinViewContainer *viewContainer)
107 {
108 return viewContainer->caption();
109 }
110
111 QUrl DolphinBookmarkHandler::url(DolphinViewContainer *viewContainer)
112 {
113 return viewContainer->url();
114 }
115
116 QString DolphinBookmarkHandler::icon(DolphinViewContainer *viewContainer)
117 {
118 return KIO::iconNameForUrl(viewContainer->url());
119 }
120
121 #include "moc_dolphinbookmarkhandler.cpp"