diff options
author | Shrief Gabr <shrief.gabr@qt.io> | 2024-04-17 10:34:17 +0300 |
---|---|---|
committer | Shrief Gabr <shrief.gabr@qt.io> | 2024-04-22 12:48:04 +0000 |
commit | dad555a088062f585e2c15370d8fe8963801358e (patch) | |
tree | 97baa90bd7bd759f4d8ade2492f50d8fb542d411 /src | |
parent | 1d66a5585942a71613031d8a159ff71996181258 (diff) |
QmlDesigner: Fix save indicator behavior on selection change
Task-number: QDS-12499
Change-Id: If91aab8d133a9269d9fc381ea0a130d3953aa69d
Reviewed-by: Ali Kianian <ali.kianian@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.cpp | 13 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.h | 4 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.cpp b/src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.cpp index 1643dfc23e..d2917ec302 100644 --- a/src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.cpp +++ b/src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.cpp @@ -93,6 +93,7 @@ bool CollectionDetailsModel::setData(const QModelIndex &index, const QVariant &v if (prevWarning != m_currentCollection.cellWarningCheck(index.row(), index.column())) roles << DataTypeWarningRole; + setHasUnsavedChanges(true); emit dataChanged(index, index, roles); } @@ -131,6 +132,7 @@ bool CollectionDetailsModel::insertRows(int row, int count, [[maybe_unused]] con beginInsertRows({}, row, row + count - 1); m_currentCollection.insertEmptyRows(row, count); endInsertRows(); + setHasUnsavedChanges(true); return true; } @@ -247,6 +249,7 @@ bool CollectionDetailsModel::addColumn(int column, const QString &name, const QS {}, CollectionDataTypeModel::dataTypeFromString(propertyType)); endInsertColumns(); + setHasUnsavedChanges(true); return m_currentCollection.containsPropertyName(name); } @@ -302,6 +305,7 @@ bool CollectionDetailsModel::setPropertyType(int column, const QString &newValue {Qt::DisplayRole, Qt::EditRole, DataTypeRole, DataTypeWarningRole, ColumnDataTypeRole}); } + setHasUnsavedChanges(true); return changed; } @@ -434,6 +438,7 @@ bool CollectionDetailsModel::saveDataStoreCollections() if (reference != currentReference) closeCollectionIfSaved(reference); } + setHasUnsavedChanges(false); return true; } } @@ -611,4 +616,12 @@ QString CollectionDetailsModel::warningToString(DataTypeWarning::Warning warning return DataTypeWarning::getDataTypeWarningString(warning); } +void CollectionDetailsModel::setHasUnsavedChanges(bool val) +{ + if (m_hasUnsavedChanges == val) + return; + m_hasUnsavedChanges = val; + emit hasUnsavedChangesChanged(); +} + } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.h b/src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.h index 24a040cce6..8844ff4a3e 100644 --- a/src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.h +++ b/src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.h @@ -20,6 +20,7 @@ class CollectionDetailsModel : public QAbstractTableModel Q_PROPERTY(int selectedColumn READ selectedColumn WRITE selectColumn NOTIFY selectedColumnChanged) Q_PROPERTY(int selectedRow READ selectedRow WRITE selectRow NOTIFY selectedRowChanged) Q_PROPERTY(bool isEmpty MEMBER m_isEmpty NOTIFY isEmptyChanged) + Q_PROPERTY(bool hasUnsavedChanges MEMBER m_hasUnsavedChanges WRITE setHasUnsavedChanges NOTIFY hasUnsavedChangesChanged) public: enum DataRoles { SelectedRole = Qt::UserRole + 1, DataTypeRole, ColumnDataTypeRole, DataTypeWarningRole }; @@ -70,12 +71,14 @@ public: const CollectionDetails upToDateConstCollection(const CollectionReference &reference) const; bool collectionHasColumn(const CollectionReference &reference, const QString &columnName) const; QString getFirstColumnName(const CollectionReference &reference) const; + void setHasUnsavedChanges(bool val); signals: void collectionNameChanged(const QString &collectionName); void selectedColumnChanged(int); void selectedRowChanged(int); void isEmptyChanged(bool); + void hasUnsavedChangesChanged(); void warning(const QString &title, const QString &body); private slots: @@ -93,6 +96,7 @@ private: QHash<CollectionReference, CollectionDetails> m_openedCollections; CollectionDetails m_currentCollection; bool m_isEmpty = true; + bool m_hasUnsavedChanges = false; int m_selectedColumn = -1; int m_selectedRow = -1; |