]> cloud.milkyroute.net Git - dolphin.git/blob - src/dolphinbookmarkhandler.cpp
6335aec4fecb318357719117b36b2ff30755dedf
[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,
18 KActionCollection* collection,
19 QMenu* menu,
20 QObject* parent) :
21 QObject(parent),
22 m_mainWindow(mainWindow)
23 {
24 QString bookmarksFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
25 QStringLiteral("kfile/bookmarks.xml"));
26 if (bookmarksFile.isEmpty()) {
27 QString genericDataLocation = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
28 if (genericDataLocation.isEmpty()) {
29 qWarning() << "GenericDataLocation is empty! Bookmarks will not be saved correctly.";
30 }
31 bookmarksFile = QStringLiteral("%1/dolphin").arg(genericDataLocation);
32 QDir().mkpath(bookmarksFile);
33 bookmarksFile += QLatin1String("/bookmarks.xml");
34 }
35 m_bookmarkManager = KBookmarkManager::managerForFile(bookmarksFile, QStringLiteral("dolphin"));
36 m_bookmarkManager->setUpdate(true);
37 m_bookmarkMenu.reset(new KBookmarkMenu(m_bookmarkManager, this, menu));
38
39 collection->addAction(QStringLiteral("add_bookmark"), m_bookmarkMenu->addBookmarkAction());
40 collection->addAction(QStringLiteral("edit_bookmarks"), m_bookmarkMenu->editBookmarksAction());
41 collection->addAction(QStringLiteral("add_bookmarks_list"), m_bookmarkMenu->bookmarkTabsAsFolderAction());
42 }
43
44 DolphinBookmarkHandler::~DolphinBookmarkHandler()
45 {
46 }
47
48 QString DolphinBookmarkHandler::currentTitle() const
49 {
50 return title(m_mainWindow->activeViewContainer());
51 }
52
53 QUrl DolphinBookmarkHandler::currentUrl() const
54 {
55 return url(m_mainWindow->activeViewContainer());
56 }
57
58 QString DolphinBookmarkHandler::currentIcon() const
59 {
60 return icon(m_mainWindow->activeViewContainer());
61 }
62
63 bool DolphinBookmarkHandler::supportsTabs() const
64 {
65 return true;
66 }
67
68 QList<KBookmarkOwner::FutureBookmark> DolphinBookmarkHandler::currentBookmarkList() const
69 {
70 const auto viewContainers = m_mainWindow->viewContainers();
71 QList<FutureBookmark> bookmarks;
72 bookmarks.reserve(viewContainers.size());
73 for (const auto viewContainer : viewContainers) {
74 bookmarks << FutureBookmark(title(viewContainer), url(viewContainer), icon(viewContainer));
75 }
76 return bookmarks;
77 }
78
79 bool DolphinBookmarkHandler::enableOption(KBookmarkOwner::BookmarkOption option) const
80 {
81 switch (option) {
82 case BookmarkOption::ShowAddBookmark: return true;
83 case BookmarkOption::ShowEditBookmark: return true;
84 }
85 return false;
86 }
87
88 void DolphinBookmarkHandler::openBookmark(const KBookmark& bookmark, Qt::MouseButtons, Qt::KeyboardModifiers)
89 {
90 m_mainWindow->changeUrl(bookmark.url());
91 }
92
93 void DolphinBookmarkHandler::openFolderinTabs(const KBookmarkGroup& bookmarkGroup)
94 {
95 m_mainWindow->openDirectories(bookmarkGroup.groupUrlList(), false);
96 }
97
98 void DolphinBookmarkHandler::openInNewTab(const KBookmark& bookmark)
99 {
100 m_mainWindow->openNewTab(bookmark.url());
101 }
102
103 void DolphinBookmarkHandler::openInNewWindow(const KBookmark& bookmark)
104 {
105 Dolphin::openNewWindow({bookmark.url()}, m_mainWindow);
106 }
107
108 QString DolphinBookmarkHandler::title(DolphinViewContainer* viewContainer)
109 {
110 return viewContainer->caption();
111 }
112
113 QUrl DolphinBookmarkHandler::url(DolphinViewContainer* viewContainer)
114 {
115 return viewContainer->url();
116 }
117
118 QString DolphinBookmarkHandler::icon(DolphinViewContainer* viewContainer)
119 {
120 return KIO::iconNameForUrl(viewContainer->url());
121 }