#pragma once #include "../../Lib/Utils.hh" #include "../../Lib/Ass/Ass.hh" #include <QAbstractItemModel> #include <QStringList> namespace Vivy { class AssLinesModel final : public QAbstractItemModel { Q_OBJECT VIVY_UNMOVABLE_OBJECT(AssLinesModel) private: class Item final { VIVY_UNMOVABLE_OBJECT(Item) public: Item(Ass::LineWeakPtr linePtr) noexcept; ~Item() noexcept = default; enum class Field : int { Text, // Last, the count TotalFieldCount, }; bool getIsComment() const noexcept; quint64 getLineNumber() const noexcept; QString getLineText() const noexcept; QString getLineStyle() const noexcept; private: Ass::LineWeakPtr line; }; static inline const QStringList headers{ "", "Style", "Text" }; public: explicit AssLinesModel(const QVector<Ass::LinePtr> &) noexcept; ~AssLinesModel() noexcept; QVariant data(const QModelIndex &, int role) const noexcept override; bool setData(const QModelIndex &, const QVariant &v, int r = Qt::EditRole) noexcept override; QVariant headerData(int section, Qt::Orientation, int r) const noexcept override; QModelIndex parent(const QModelIndex &) const noexcept override; QModelIndex index(int, int, const QModelIndex &parent = QModelIndex()) const noexcept override; int rowCount(const QModelIndex &parent = QModelIndex()) const noexcept override; int columnCount(const QModelIndex &parent = QModelIndex()) const noexcept override; Qt::ItemFlags flags(const QModelIndex &) const noexcept override; private: QVector<Item *> childs; const QVector<Ass::LinePtr> &lineRealData; }; }