Maraiah/tycho/cc/interface.h

56 lines
1.1 KiB
C
Raw Normal View History

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