Maraiah/tycho/cc/interface.h

56 lines
1.1 KiB
C++

#pragma once
#pragma clang diagnostic ignored "-Winconsistent-missing-override"
#include <QAbstractItemModel>
#include <QPainter>
#include <QWidget>
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