#pragma once #include "PreCompiledHeaders.hh" #include "Lib/Utils.hh" #include "Lib/Ass/Ass.hh" 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, TotalFieldCount // Last, the count }; 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 override; 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; }; }