File indexing completed on 2024-05-12 05:39:50
0001 #ifndef FILTEREDCHARACTERMODEL_H 0002 #define FILTEREDCHARACTERMODEL_H 0003 0004 #include "core_global.h" 0005 #include "model/nonplayablecharactermodel.h" 0006 #include <QSortFilterProxyModel> 0007 0008 namespace campaign 0009 { 0010 class CORE_EXPORT FilteredCharacterModel : public QSortFilterProxyModel 0011 { 0012 Q_OBJECT 0013 // clang-format off 0014 Q_PROPERTY(QString search READ search WRITE setSearch NOTIFY searchChanged) 0015 Q_PROPERTY(bool advanced READ advanced WRITE setAdvanced NOTIFY advancedChanged) 0016 Q_PROPERTY(QString exclude READ exclude WRITE setExclude NOTIFY excludeChanged) 0017 Q_PROPERTY(QString tags READ tags WRITE setTags NOTIFY tagsChanged) 0018 Q_PROPERTY(QString excludeTags READ excludeTags WRITE setExcludeTags NOTIFY excludeTagsChanged) 0019 Q_PROPERTY(Definition avatarDefinition READ avatarDefinition WRITE setAvatarDefinition NOTIFY avatarDefinitionChanged) 0020 Q_PROPERTY(Definition initiativeScoreDef READ initiativeScoreDef WRITE setInitiativeScoreDef NOTIFY initiativeScoreDefChanged) 0021 Q_PROPERTY(Definition actionDef READ actionDef WRITE setActionDef NOTIFY actionDefChanged) 0022 Q_PROPERTY(Definition shapeDef READ shapeDef WRITE setShapeDef NOTIFY shapeDefChanged) 0023 Q_PROPERTY(Definition propertiesDef READ propertiesDef WRITE setPropertiesDef NOTIFY propertiesDefChanged) 0024 Q_PROPERTY(Definition initiativeCmdDef READ initiativeCmdDef WRITE setInitiativeCmdDef NOTIFY initiativeCmdDefChanged) 0025 Q_PROPERTY(Definition gmdetailsDef READ gmdetailsDef WRITE setGmdetailsDef NOTIFY gmdetailsDefChanged) 0026 Q_PROPERTY(QString gmdetails READ gmdetails WRITE setGmdetails NOTIFY gmdetailsChanged) 0027 Q_PROPERTY(FilteredCharacterModel::HealthState hlState READ hlState WRITE setHlState NOTIFY hlStateChanged) 0028 Q_PROPERTY(QString characterStateId READ characterStateId WRITE setCharacterStateId NOTIFY characterStateIdChanged) 0029 // clang-format on 0030 public: 0031 enum Definition 0032 { 0033 All, 0034 With, 0035 Without, 0036 }; 0037 Q_ENUM(Definition) 0038 enum HealthState 0039 { 0040 HS_All, 0041 HS_Full, 0042 HS_Injured, 0043 HS_Dead, 0044 }; 0045 Q_ENUM(HealthState) 0046 0047 FilteredCharacterModel(); 0048 QString search() const; 0049 void setSearch(const QString& search); 0050 0051 FilteredCharacterModel::Definition initiativeCmdDef() const; 0052 void setInitiativeCmdDef(FilteredCharacterModel::Definition newInitiativeCmdDef); 0053 0054 FilteredCharacterModel::Definition propertiesDef() const; 0055 void setPropertiesDef(FilteredCharacterModel::Definition newPropertiesDef); 0056 0057 FilteredCharacterModel::Definition shapeDef() const; 0058 void setShapeDef(FilteredCharacterModel::Definition newShapeDef); 0059 0060 FilteredCharacterModel::Definition actionDef() const; 0061 void setActionDef(FilteredCharacterModel::Definition newActionDef); 0062 0063 FilteredCharacterModel::Definition initiativeScoreDef() const; 0064 void setInitiativeScoreDef(FilteredCharacterModel::Definition newInitiativeScoreDef); 0065 0066 FilteredCharacterModel::Definition avatarDefinition() const; 0067 void setAvatarDefinition(campaign::FilteredCharacterModel::Definition newAvatarDefinition); 0068 0069 bool advanced() const; 0070 void setAdvanced(bool newAdvanced); 0071 0072 const QString& exclude() const; 0073 void setExclude(const QString& newExclude); 0074 0075 const QString& tags() const; 0076 void setTags(const QString& newTags); 0077 0078 const QString& excludeTags() const; 0079 void setExcludeTags(const QString& newExcludeTags); 0080 0081 FilteredCharacterModel::Definition gmdetailsDef() const; 0082 void setGmdetailsDef(FilteredCharacterModel::Definition newGmdetailsDef); 0083 0084 const QString& gmdetails() const; 0085 void setGmdetails(const QString& newGmdetails); 0086 0087 FilteredCharacterModel::HealthState hlState() const; 0088 void setHlState(FilteredCharacterModel::HealthState newHlState); 0089 0090 QString characterStateId() const; 0091 void setCharacterStateId(const QString& newCharacterStateId); 0092 0093 protected: 0094 bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override; 0095 bool lessThan(const QModelIndex& source_left, const QModelIndex& source_right) const override; 0096 0097 signals: 0098 void searchChanged(); 0099 void initiativeCmdDefChanged(); 0100 void propertiesDefChanged(); 0101 void shapeDefChanged(); 0102 void actionDefChanged(); 0103 void initiativeScoreDefChanged(); 0104 void avatarDefinitionChanged(); 0105 void advancedChanged(); 0106 void excludeChanged(); 0107 void tagsChanged(); 0108 void excludeTagsChanged(); 0109 void gmdetailsDefChanged(); 0110 void gmdetailsChanged(); 0111 void hlStateChanged(); 0112 0113 void characterStateIdChanged(); 0114 0115 private: 0116 QString m_search; 0117 int m_role= -1; 0118 Definition m_initiativeCmdDef{All}; 0119 Definition m_propertiesDef{All}; 0120 Definition m_shapeDef{All}; 0121 Definition m_actionDef{All}; 0122 Definition m_initiativeScoreDef{All}; 0123 Definition m_avatarDefinition{All}; 0124 Definition m_gmdetailsDef{All}; 0125 bool m_advanced{}; 0126 QString m_exclude; 0127 QString m_tags; 0128 QString m_excludeTags; 0129 QString m_gmdetails; 0130 FilteredCharacterModel::HealthState m_hlState{HS_All}; 0131 QString m_characterStateId; 0132 }; 0133 } // namespace campaign 0134 #endif // FILTEREDCHARACTERMODEL_H