#pragma once #pragma clang diagnostic ignored "-Winconsistent-missing-override" #include #include #include class Project; class IProjectModel : public QAbstractItemModel { Q_OBJECT Q_PROPERTY(bool dirty READ dirty WRITE setDirty NOTIFY dirtyChanged) public: using QAbstractItemModel::QAbstractItemModel; virtual ~IProjectModel() {} virtual bool dirty() const = 0; virtual void setDirty(bool dirty) = 0; virtual bool open(QString const &path) = 0; virtual bool save() const = 0; virtual bool saveAs(QString const &path) const = 0; virtual void drawView(void *paint) const = 0; public slots: virtual void deselect() = 0; virtual void select(QModelIndex const &index) = 0; signals: void dirtyChanged(bool dirty); void deselected(); void selected(std::uint16_t index); }; class IProjectView : public QWidget { Q_OBJECT public: explicit IProjectView(Project *parent); virtual ~IProjectView() {} protected: void paintEvent(QPaintEvent *event) override; private: IProjectModel const *const m_model; }; // EOF