solution.h
Go to the documentation of this file.
1 #ifndef DNAI_SOLUTION_H
2 #define DNAI_SOLUTION_H
3 
4 #include "interfaces/isolution.h"
6 #include <QAbstractListModel>
7 #include "models.h"
8 #include <QQuickItem>
9 
10 namespace dnai
11 {
12  class Project;
13 
14  class Solution : public QAbstractListModel, public interfaces::ISolution, public interfaces::ASerializable<Solution>
15  {
16  Q_OBJECT
17  Q_PROPERTY(QQuickItem *selectedEntity READ selectedEntity WRITE setSelectedEntity NOTIFY selectedEntityChanged)
18  public:
19  enum ROLES
20  {
21  ITEM = Qt::UserRole + 1,
24  };
25 
26  Solution();
27  Solution(const QString filename);
28  ~Solution();
29  Q_INVOKABLE void save() override;
30  Q_INVOKABLE bool isProjectsSaved();
31  void load(const QString& path) override;
32  virtual QString path() const override;
33  void close() override;
34  const QString& version() const override;
35  void setVersion(const QString& version) override;
36  const QString& name() const override;
37  void setName(const QString& name) override;
38  const QString& description() const override;
39  void setDescription(const QString& desc) override;
40  const QJsonObject& jsonData() const override;
41  const QList<IProject*>& projects() const override;
42  void addProject(IProject*) override;
43  IProject *seletedProject() const override;
44  bool selectProject(IProject*) override;
45  void serialize(QJsonObject& obj) const override;
46  const QString& fileName() const override;
47  void setFileName(const QString& name) override;
48  Q_INVOKABLE int getRoleKey(QString rolename) const;
49  Q_INVOKABLE bool selectProject(dnai::Project*);
50  Q_INVOKABLE dnai::Project *selectedProject() const;
51 
52  QQuickItem *selectedEntity() const;
53  void setSelectedEntity(QQuickItem *entity);
54 
55  signals:
56  void selectedEntityChanged(QQuickItem *entity);
57 
58  protected:
59  void _deserialize(const QJsonObject& obj) override;
60 
61  public:
62  int rowCount(const QModelIndex& parent) const override;
63  QVariant data(const QModelIndex& index, int role) const override;
64 
65  private:
66  IProject* m_selectedProject;
67  QList<IProject*> m_projects;
68  QJsonObject m_data;
69  QString m_description;
70  QString m_name;
71  QString m_version;
72  QFile *m_file;
73  QString m_filename;
74  QQuickItem* m_selectedEntity;
75  virtual QHash<int, QByteArray> roleNames() const override;
76  };
77 }
78 
79 
80 #endif //DNAI_SOLUTION_H
Definition: solution.h:21
int rowCount(const QModelIndex &parent) const override
Definition: solution.cpp:244
Allow inherited class to serialize and deserialize itself.
Definition: iserializable.h:33
QString m_description
Definition: solution.h:69
QList< IProject * > m_projects
Definition: solution.h:67
virtual QHash< int, QByteArray > roleNames() const override
Definition: solution.cpp:273
const QJsonObject & jsonData() const override
Definition: solution.cpp:136
Definition: solution.h:22
void selectedEntityChanged(QQuickItem *entity)
Definition: moc_solution.cpp:225
void load(const QString &path) override
Definition: solution.cpp:56
IProject * seletedProject() const override
Definition: solution.cpp:154
const QString & name() const override
Definition: solution.cpp:112
void _deserialize(const QJsonObject &obj) override
Implement this function in order to use deserialize(const QJsonObject &obj)
Definition: solution.cpp:225
Q_INVOKABLE int getRoleKey(QString rolename) const
Definition: solution.cpp:197
Definition: solution.h:14
void setDescription(const QString &desc) override
Definition: solution.cpp:129
void setName(const QString &name) override
Definition: solution.cpp:117
void addProject(IProject *) override
Definition: solution.cpp:146
Definition: project.h:22
ROLES
Definition: solution.h:19
QVariant data(const QModelIndex &index, int role) const override
Definition: solution.cpp:250
void setSelectedEntity(QQuickItem *entity)
Definition: solution.cpp:217
QFile * m_file
Definition: solution.h:72
Q_INVOKABLE void save() override
Definition: solution.cpp:29
QQuickItem * m_selectedEntity
Definition: solution.h:74
QString m_version
Definition: solution.h:71
Definition: isolution.h:10
const QList< IProject * > & projects() const override
Definition: solution.cpp:141
const QString & version() const override
Definition: solution.cpp:100
const QString & fileName() const override
Definition: solution.cpp:184
void serialize(QJsonObject &obj) const override
Implement this function to serialize into QJsonObject.
Definition: solution.cpp:167
Solution()
Definition: solution.cpp:11
QString m_name
Definition: solution.h:70
Definition: solution.h:23
Definition: api.h:13
~Solution()
Definition: solution.cpp:21
Q_INVOKABLE bool isProjectsSaved()
Definition: solution.cpp:41
QJsonObject m_data
Definition: solution.h:68
QString m_filename
Definition: solution.h:73
const QString & description() const override
Definition: solution.cpp:124
Q_INVOKABLE dnai::Project * selectedProject() const
Definition: solution.cpp:207
IProject * m_selectedProject
Definition: solution.h:66
bool selectProject(IProject *) override
Definition: solution.cpp:159
QQuickItem * selectedEntity() const
void setFileName(const QString &name) override
Definition: solution.cpp:189
void close() override
Definition: solution.cpp:94
virtual QString path() const override
Definition: solution.cpp:51
void setVersion(const QString &version) override
Definition: solution.cpp:105