From 1247683d40c3fbb4b7ce50cc5361e2398b45875e Mon Sep 17 00:00:00 2001 From: Mark Brand Date: Mon, 6 Feb 2012 23:41:27 +0100 Subject: QSqlTableModelPrivate: deduplicate field stripping logic Change-Id: Ic969a192644e84d78558da0f19e588033e4af43d Reviewed-by: Yunqiao Yin --- src/sql/models/qsqlrelationaltablemodel.cpp | 4 +--- src/sql/models/qsqltablemodel.cpp | 7 ++++++- src/sql/models/qsqltablemodel_p.h | 1 + 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp index e12976ef24..3a8c12085f 100644 --- a/src/sql/models/qsqlrelationaltablemodel.cpp +++ b/src/sql/models/qsqlrelationaltablemodel.cpp @@ -299,9 +299,7 @@ void QSqlRelationalTableModelPrivate::revertCachedRow(int row) int QSqlRelationalTableModelPrivate::nameToIndex(const QString &name) const { - QString fieldname = name; - if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName)) - fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName); + QString fieldname = strippedFieldName(name); int idx = baseRec.indexOf(fieldname); if (idx == -1) { // If the name is an alias we can find it here. diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp index ff32533440..0d062e250f 100644 --- a/src/sql/models/qsqltablemodel.cpp +++ b/src/sql/models/qsqltablemodel.cpp @@ -67,11 +67,16 @@ QSqlRecord QSqlTableModelPrivate::record(const QVector &values) const } int QSqlTableModelPrivate::nameToIndex(const QString &name) const +{ + return rec.indexOf(strippedFieldName(name)); +} + +QString QSqlTableModelPrivate::strippedFieldName(const QString &name) const { QString fieldname = name; if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName)) fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName); - return rec.indexOf(fieldname); + return fieldname; } void QSqlTableModelPrivate::initRecordAndPrimaryIndex() diff --git a/src/sql/models/qsqltablemodel_p.h b/src/sql/models/qsqltablemodel_p.h index 56fd839a0c..15cbe8ef7a 100644 --- a/src/sql/models/qsqltablemodel_p.h +++ b/src/sql/models/qsqltablemodel_p.h @@ -77,6 +77,7 @@ public: const QSqlRecord &rec, const QSqlRecord &whereValues); virtual void revertCachedRow(int row); virtual int nameToIndex(const QString &name) const; + QString strippedFieldName(const QString &name) const; void initRecordAndPrimaryIndex(); QSqlDatabase db; -- cgit v1.2.3