1 /*
2 SPDX-FileCopyrightText: 2015-2021 Laurent Montel <montel@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "sieveeditorbookmarks.h"
8 #include "sieveeditormainwindow.h"
9 #include <KActionCollection>
10 #include <KBookmarkManager>
11 #include <KBookmarkMenu>
12 #include <QDir>
13 #include <QMenu>
14 #include <QStandardPaths>
15
SieveEditorBookmarks(SieveEditorMainWindow * mainWindow,KActionCollection * collection,QMenu * menu,QObject * parent)16 SieveEditorBookmarks::SieveEditorBookmarks(SieveEditorMainWindow *mainWindow, KActionCollection *collection, QMenu *menu, QObject *parent)
17 : QObject(parent)
18 , KBookmarkOwner()
19 , mMenu(menu)
20 , mMainWindow(mainWindow)
21 {
22 QString bookmarkFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("sieveeditor/bookmarks.xml"));
23
24 if (bookmarkFile.isEmpty()) {
25 bookmarkFile = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QStringLiteral("/sieveeditor");
26 QDir().mkpath(bookmarkFile);
27 bookmarkFile += QStringLiteral("/bookmarks.xml");
28 }
29
30 KBookmarkManager *manager = KBookmarkManager::managerForFile(bookmarkFile, QStringLiteral("sieveeditor"));
31 manager->setUpdate(true);
32
33 mBookmarkMenu = new KBookmarkMenu(manager, this, mMenu);
34 collection->addActions(mMenu->actions());
35 }
36
~SieveEditorBookmarks()37 SieveEditorBookmarks::~SieveEditorBookmarks()
38 {
39 delete mBookmarkMenu;
40 }
41
menu() const42 QMenu *SieveEditorBookmarks::menu() const
43 {
44 return mMenu;
45 }
46
openBookmark(const KBookmark & bm,Qt::MouseButtons mb,Qt::KeyboardModifiers km)47 void SieveEditorBookmarks::openBookmark(const KBookmark &bm, Qt::MouseButtons mb, Qt::KeyboardModifiers km)
48 {
49 Q_UNUSED(mb)
50 Q_UNUSED(km)
51 Q_EMIT openUrl(bm.url());
52 }
53
currentTitle() const54 QString SieveEditorBookmarks::currentTitle() const
55 {
56 return mMainWindow->currentHelpTitle();
57 }
58
currentUrl() const59 QUrl SieveEditorBookmarks::currentUrl() const
60 {
61 return mMainWindow->currentHelpUrl();
62 }
63