digiKam
Loading...
Searching...
No Matches
bookmarknode.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2017-05-15
7 * Description : a node container for bookmarks
8 *
9 * SPDX-FileCopyrightText: 2017-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QObject>
20#include <QString>
21#include <QList>
22#include <QDateTime>
23#include <QIODevice>
24#include <QXmlStreamReader>
25#include <QXmlStreamWriter>
26
27namespace Digikam
28{
29
30class BookmarkNode : public QObject
31{
32 Q_OBJECT
33
34public:
35
44
45public:
46
47 explicit BookmarkNode(Type type = Root, BookmarkNode* const parent = nullptr);
48 ~BookmarkNode() override;
49
50 bool operator==(const BookmarkNode& other) const;
51
52 Type type() const;
53 void setType(Type type);
54
55 QList<BookmarkNode*> children() const;
56 BookmarkNode* parent() const;
57
58 void add(BookmarkNode* const child, int offset = -1);
59 void remove(BookmarkNode* const child);
60
61public:
62
63 QString url;
64 QString title;
65 QString desc;
66 QDateTime dateAdded;
68
69private:
70
71 // Disable
72 BookmarkNode(const BookmarkNode&) = delete;
73 BookmarkNode& operator=(const BookmarkNode&) = delete;
74
75private:
76
77 class Private;
78 Private* const d = nullptr;
79};
80
81// -----------------------------------------------------------
82
83class XbelReader : public QXmlStreamReader
84{
85public:
86
87 XbelReader() = default;
88
89 BookmarkNode* read(const QString& fileName);
90 BookmarkNode* read(QIODevice* const device, bool addRootFolder = false);
91
92private:
93
94 void readXBEL(BookmarkNode* const parent);
95 void readTitle(BookmarkNode* const parent);
96 void readDescription(BookmarkNode* const parent);
97 void readSeparator(BookmarkNode* const parent);
98 void readFolder(BookmarkNode* const parent);
99 void readBookmarkNode(BookmarkNode* const parent);
100};
101
102// -----------------------------------------------------------
103
104class XbelWriter : public QXmlStreamWriter
105{
106public:
107
108 XbelWriter();
109
110 bool write(const QString& fileName, const BookmarkNode* const root);
111 bool write(QIODevice* const device, const BookmarkNode* const root);
112
113private:
114
115 void writeItem(const BookmarkNode* const parent);
116};
117
118} // namespace Digikam
Definition bookmarknode.h:31
Type type() const
Definition bookmarknode.cpp:99
void remove(BookmarkNode *const child)
Definition bookmarknode.cpp:138
bool operator==(const BookmarkNode &other) const
Definition bookmarknode.cpp:73
QString title
Definition bookmarknode.h:64
QString desc
Definition bookmarknode.h:65
void add(BookmarkNode *const child, int offset=-1)
Definition bookmarknode.cpp:119
QDateTime dateAdded
Definition bookmarknode.h:66
Type
Definition bookmarknode.h:37
@ Separator
Definition bookmarknode.h:41
@ RootFolder
Definition bookmarknode.h:42
@ Folder
Definition bookmarknode.h:39
@ Root
Definition bookmarknode.h:38
@ Bookmark
Definition bookmarknode.h:40
QList< BookmarkNode * > children() const
Definition bookmarknode.cpp:109
void setType(Type type)
Definition bookmarknode.cpp:104
BookmarkNode * parent() const
Definition bookmarknode.cpp:114
bool expanded
Definition bookmarknode.h:67
QString url
Definition bookmarknode.h:63
~BookmarkNode() override
Definition bookmarknode.cpp:58
Definition bookmarknode.h:84
BookmarkNode * read(const QString &fileName)
Definition bookmarknode.cpp:146
Definition bookmarknode.h:105
bool write(const QString &fileName, const BookmarkNode *const root)
Definition bookmarknode.cpp:315
XbelWriter()
Definition bookmarknode.cpp:310
Definition datefolderview.cpp:34
Type
Definition gpsitemcontainer.h:36