Tome
A generic data editor for games supporting arbitrary input and output formats.
recordwindow.h
1 #ifndef RECORDWINDOW_H
2 #define RECORDWINDOW_H
3 
4 #include <QDialog>
5 
6 #include "../Model/recordfieldstate.h"
7 #include "../../Fields/Model/fielddefinitionlist.h"
8 #include "../../Components/Model/componentlist.h"
9 #include "../../Projects/Model/recordidtype.h"
10 #include "../../Records/Model/recordfieldvaluemap.h"
11 #include "../../Records/Controller/recordnamevalidator.h"
12 
13 namespace Ui {
14  class RecordWindow;
15 }
16 
20 class RecordWindow : public QDialog
21 {
22  Q_OBJECT
23 
24  public:
29  explicit RecordWindow(QWidget *parent = 0);
30  ~RecordWindow();
31 
36  QString getRecordDisplayName() const;
37 
42  QString getRecordEditorIconFieldId() const;
43 
48  QVariant getRecordId() const;
49 
54  QMap<QString, Tome::RecordFieldState::RecordFieldState> getRecordFields() const;
55 
60  QString getRecordSetName() const;
61 
66  void setDisallowedRecordIds(const QVariantList disallowedRecordIds);
67 
72  void setRecordDisplayName(const QString& displayName);
73 
78  void setRecordId(const QVariant& id);
79 
84  void setRecordIdLocked(const bool recordIdLocked);
85 
90  void setRecordIdType(const Tome::RecordIdType::RecordIdType recordIdType);
91 
96  void setRecordEditorIconFieldId(const QString& editorIconFieldId);
97 
102  void setRecordFields(const Tome::FieldDefinitionList& fieldDefinitions);
103 
111  void setRecordFields(const Tome::FieldDefinitionList& fieldDefinitions,
112  const Tome::ComponentList &componentDefinitions,
113  const Tome::RecordFieldValueMap& ownFieldValues,
114  const Tome::RecordFieldValueMap& inheritedFieldValues);
115 
120  void setRecordComponents(const Tome::ComponentList& components);
121 
126  void setRecordSetName(const QString& recordSetName);
127 
132  void setRecordSetNames(const QStringList& recordSetNames);
133 
134  public slots:
138  void accept();
139 
140  protected:
145  void showEvent(QShowEvent* event);
146 
147  private slots:
148  void on_lineEditDisplayName_textEdited(const QString &arg1);
149  void on_lineEditId_textEdited(const QString &arg1);
150 
151  void onCheckBoxStateChanged(int state);
152  void onComponentCheckBoxStateChanged(int state);
153 
154  private:
155  static const QString PropertyFieldComponent;
156  static const QString PropertyFieldId;
157  static const QString PropertyComponentId;
158 
159  Ui::RecordWindow *ui;
160 
161  QVariantList disallowedRecordIds;
162  Tome::RecordNameValidator nameValidator;
163 
164  // Whether to automatically update the record id to reflect the display name, or not.
165  bool recordIdLocked;
166 
167  QVariant recordId;
168  Tome::RecordIdType::RecordIdType recordIdType;
169 
170  void clearRecordComponents();
171  void clearRecordFields();
172  void setRecordComponent(const QString& componentId, const Tome::RecordFieldState::RecordFieldState state);
173  void setRecordField(const QString& fieldId, const QString& fieldComponent, const Tome::RecordFieldState::RecordFieldState state);
174 
175  bool validate();
176 };
177 
178 #endif // RECORDWINDOW_H
Definition: mainwindow.h:25
Validates record names, ensuring they&#39;re not empty and don&#39;t start or end with spaces.
Definition: recordnamevalidator.h:11
Window for adding a new record or editing an existing one.
Definition: recordwindow.h:20