/* * This file is part of smolbote. It's copyrighted by the contributors recorded * in the version control history of the file, available from its original * location: https://neueland.iserlohn-fortress.net/gitea/aqua/smolbote * * SPDX-License-Identifier: GPL-3.0 */ #ifndef SMOLBOTE_BOOKMARKITEM_H #define SMOLBOTE_BOOKMARKITEM_H #include #include #include class BookmarkItem { public: enum Type { Root, Folder, Bookmark, }; enum Fields { Title, Href, Tags, Description, FieldCount }; explicit BookmarkItem(const QVector &data, Type type, BookmarkItem *parent = nullptr); ~BookmarkItem(); BookmarkItem *parent() const; bool appendChild(BookmarkItem *childItem); bool insertChild(int position, BookmarkItem *childItem); bool removeChildAt(int index, int count = 1); BookmarkItem *takeChild(int index, BookmarkItem *newParent); BookmarkItem *child(int index) const; int childCount() const; QVariant data(Fields column) const; bool setData(Fields column, const QVariant &data); QIcon icon() const; bool isExpanded() const; void setExpanded(bool expanded); QString tooltip() const; Type type() const; int row() const; private: QVector m_children; BookmarkItem *m_parentItem; Type m_type; QIcon m_icon; bool m_isExpanded = false; // fields QVector m_data; }; #endif // SMOLBOTE_BOOKMARKITEM_H