aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShrief Gabr <shrief.gabr@qt.io>2024-04-17 10:34:17 +0300
committerShrief Gabr <shrief.gabr@qt.io>2024-04-22 12:48:04 +0000
commitdad555a088062f585e2c15370d8fe8963801358e (patch)
tree97baa90bd7bd759f4d8ade2492f50d8fb542d411 /src
parent1d66a5585942a71613031d8a159ff71996181258 (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.cpp13
-rw-r--r--src/plugins/qmldesigner/components/collectioneditor/collectiondetailsmodel.h4
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;