#ifndef READING_LIST_ITEM_H #define READING_LIST_ITEM_H #include #include #include "yacreader_global_gui.h" #include "reading_list_model.h" //TODO add propper constructors, using QList is not safe class ListItem { public: ListItem(const QList &data); int columnCount(); virtual QIcon getIcon() const = 0; QVariant data(int column) const; virtual qulonglong getId() const; QList itemData; virtual ~ListItem() {} }; //------------------------------------------------------ class SpecialListItem : public ListItem { public: SpecialListItem(const QList &data); QIcon getIcon() const override; ReadingListModel::TypeSpecialList getType() const; private: enum DataIndexes { Name, Id }; }; //------------------------------------------------------ class LabelItem : public ListItem { public: LabelItem(const QList &data); QIcon getIcon() const override; YACReader::LabelColors colorid() const; QString name() const; void setName(const QString &name); qulonglong getId() const override; private: enum DataIndexes { Name, Color, Id, Ordering }; }; //------------------------------------------------------ class ReadingListItem : public ListItem { public: ReadingListItem(const QList &data, ReadingListItem *parent = nullptr); QIcon getIcon() const override; ReadingListItem *parent; int childCount() const; int row() const; ReadingListItem *child(int row); void appendChild(ReadingListItem *item); void appendChild(ReadingListItem *item, int pos); void removeChild(ReadingListItem *item); qulonglong getId() const override; QString name() const; void setName(const QString &name); int getOrdering() const; void setOrdering(const int ordering); QList children(); private: QList childItems; enum DataIndexes { Name, Id, Finished, Completed, Ordering }; }; //------------------------------------------------------ class ReadingListSeparatorItem : public ListItem { public: ReadingListSeparatorItem(); QIcon getIcon() const override; }; #endif // READING_LIST_ITEM_H