FOSSredder 0.5.0
Loading...
Searching...
No Matches
PropertyViewModel.h
Go to the documentation of this file.
1
5
6#pragma once
7
8#include <QObject>
9#include <QString>
10#include <QStringList>
11#include <QVariantList>
12#include <QVariantMap>
13
14namespace ui {
15
19class WorkspaceStore;
20
25class PropertyViewModel : public QObject {
26 Q_OBJECT
27 Q_PROPERTY(QString currentId READ currentId NOTIFY changed)
28 Q_PROPERTY(QString name READ name WRITE setName NOTIFY changed)
29 Q_PROPERTY(QVariantList aliases READ aliases WRITE setAliases NOTIFY changed)
30 Q_PROPERTY(QString aliasInputText READ aliasInputText WRITE setAliasInputText
31 NOTIFY changed)
32 Q_PROPERTY(int aliasIndex READ aliasIndex WRITE setAliasIndex NOTIFY changed)
33 Q_PROPERTY(QVariantList selectedContractIds READ selectedContractIds WRITE
35 Q_PROPERTY(QVariantList propertyRows READ propertyRows NOTIFY changed)
36 Q_PROPERTY(QVariantList contractRows READ contractRows NOTIFY changed)
37 Q_PROPERTY(bool isEdit READ isEdit NOTIFY changed)
38 Q_PROPERTY(bool hasChanges READ hasChanges NOTIFY changed)
39 Q_PROPERTY(bool canSubmit READ canSubmit NOTIFY changed)
40
41public:
46 explicit PropertyViewModel(WorkspaceStore* store, WorkspaceCommands* commands,
47 WorkspaceSelection* selection,
48 WorkspaceSelectors* selectors,
49 QObject* parent = nullptr);
50
55 QString currentId() const;
60 QString name() const {
61 return name_;
62 }
63
67 void setName(const QString& value);
72 QVariantList aliases() const {
73 return aliases_;
74 }
75
79 void setAliases(const QVariantList& value);
84 QString aliasInputText() const {
85 return aliasInputText_;
86 }
87
91 void setAliasInputText(const QString& value);
96 int aliasIndex() const {
97 return aliasIndex_;
98 }
99
103 void setAliasIndex(int value);
108 QVariantList selectedContractIds() const {
109 return selectedContractIds_;
110 }
111
115 void setSelectedContractIds(const QVariantList& value);
120 bool isEdit() const;
125 bool hasChanges() const;
130 bool canSubmit() const;
131
136 QVariantList propertyRows() const;
137
142 QVariantList contractRows() const;
143
148 Q_INVOKABLE void selectProperty(const QString& id);
154 Q_INVOKABLE bool canAddAlias(const QString& value) const;
159 Q_INVOKABLE void addAlias(const QString& value);
163 Q_INVOKABLE void requestRemoveSelectedAlias();
167 Q_INVOKABLE void enterCreateMode();
171 Q_INVOKABLE void previous();
175 Q_INVOKABLE void next();
180 Q_INVOKABLE QString submit();
184 Q_INVOKABLE void deleteCurrent();
188 Q_INVOKABLE void clear();
194 Q_INVOKABLE void setContractSelected(const QString& contractId,
195 bool selected);
196
197signals:
199 void changed();
200
201private:
206 void setCurrentId(const QString& id);
207
211 void bindSignals();
212
217 void reloadFromSelection(bool forceReload);
221 void clearFormState();
226 bool hasValidAliasSelection() const;
230 void captureSavedState();
235 void applyFormState(const QVariantMap& state);
242 void reloadFormState(bool forceReload, const QVariantMap& state);
243
244 WorkspaceStore* store_ = nullptr;
245 WorkspaceCommands* commands_ = nullptr;
246 WorkspaceSelection* selection_ = nullptr;
247 WorkspaceSelectors* selectors_ = nullptr;
248 QString currentOwnerId_;
249 QString name_;
250 QVariantList aliases_;
251 QString aliasInputText_;
252 int aliasIndex_ = -1;
253 QString savedName_;
254 QVariantList savedAliases_;
255 QVariantList selectedContractIds_;
256 QVariantList savedSelectedContractIds_;
257};
258
259} // namespace ui
Q_INVOKABLE void addAlias(const QString &value)
Adds an alias to the property form.
Q_INVOKABLE void previous()
Selects the previous property row.
Q_INVOKABLE void selectProperty(const QString &id)
Selects a property for editing.
Q_INVOKABLE bool canAddAlias(const QString &value) const
Checks whether an alias value can be added to the form.
Q_INVOKABLE void clear()
Clears the editable property form.
Q_INVOKABLE void next()
Selects the next property row.
void changed()
Emitted when property view model state changed.
QVariantList selectedContractIds
int aliasIndex() const
Returns the selected alias index.
QString aliasInputText() const
Returns the current alias input text.
Q_INVOKABLE QString submit()
Creates or updates the property through workspace commands.
void setAliasInputText(const QString &value)
Updates the current alias input text.
Q_INVOKABLE void setContractSelected(const QString &contractId, bool selected)
Adds or removes a contract id from the property form selection.
QVariantList selectedContractIds() const
Returns selected contract ids in the property form.
PropertyViewModel(WorkspaceStore *store, WorkspaceCommands *commands, WorkspaceSelection *selection, WorkspaceSelectors *selectors, QObject *parent=nullptr)
Creates the property view model bound to workspace roles.
Q_INVOKABLE void requestRemoveSelectedAlias()
Removes the currently selected alias when possible.
void setName(const QString &value)
Updates the editable property name.
QVariantList aliases() const
Returns editable property aliases.
void setAliases(const QVariantList &value)
Replaces editable property aliases.
Q_INVOKABLE void enterCreateMode()
Clears selection and opens an empty create form.
Q_INVOKABLE void deleteCurrent()
Deletes the selected property through workspace commands.
void setAliasIndex(int value)
Updates the selected alias index.
void setSelectedContractIds(const QVariantList &value)
Replaces selected contract ids in the property form.
Maps UI intent to core workspace writer commands.
Tracks the currently selected workspace entities.
Projects workspace store data into QML-facing read models.
Owns the current UI-side workspace snapshot and revision lifecycle.