File indexing completed on 2024-06-16 05:11:59
0001 #ifndef CHARACTER_CONTROLLER_H 0002 #define CHARACTER_CONTROLLER_H 0003 0004 #include <QObject> 0005 #include <QUndoStack> 0006 #include <memory> 0007 0008 #include "charactersheet/charactersheetmodel.h" 0009 #include "data/characterlist.h" 0010 0011 class Section; 0012 class QAction; 0013 class QTreeView; 0014 0015 class CharacterController : public QObject 0016 { 0017 Q_OBJECT 0018 Q_PROPERTY(CharacterSheetModel* model READ model CONSTANT) 0019 Q_PROPERTY(CharacterList* characters READ characters CONSTANT) 0020 Q_PROPERTY(int characterCount READ characterCount NOTIFY characterCountChanged) 0021 public: 0022 CharacterController(QObject* parent= nullptr); 0023 virtual ~CharacterController(); 0024 void setRootSection(Section* section); 0025 void save(QJsonObject& obj); 0026 void load(const QJsonObject& obj, bool); 0027 CharacterSheetModel* model() const; 0028 CharacterList* characters() const; 0029 int characterCount() const; 0030 void checkCharacter(Section* sec); 0031 CharacterSheet* characterSheetFromIndex(int index) const; 0032 CharacterSheet* characterSheetFromUuid(const QString& uuid) const; 0033 0034 void clear(); 0035 0036 public slots: 0037 void addCharacter(); 0038 void removeCharacter(int index); 0039 void insertCharacter(int pos, CharacterSheet* sheet); 0040 0041 void sendAddCharacterCommand(); 0042 void sendRemoveCharacterCommand(const QModelIndex& index); 0043 void applyOnSelection(const QModelIndex& index, const QModelIndexList& list); 0044 void applyOnAllCharacter(const QModelIndex& index); 0045 0046 signals: 0047 void characterCountChanged(int csCount); 0048 void dataChanged(); 0049 void performCommand(QUndoCommand* cmd); 0050 0051 private: 0052 std::unique_ptr<CharacterSheetModel> m_characterModel; 0053 std::unique_ptr<CharacterList> m_characters; 0054 }; 0055 0056 #endif