QSqlTableModelPrivate: deduplicate field stripping logic
authorMark Brand <mabrand@mabrand.nl>
Mon, 6 Feb 2012 22:41:27 +0000 (23:41 +0100)
committerQt by Nokia <qt-info@nokia.com>
Tue, 7 Feb 2012 21:05:51 +0000 (22:05 +0100)
Change-Id: Ic969a192644e84d78558da0f19e588033e4af43d
Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
src/sql/models/qsqlrelationaltablemodel.cpp
src/sql/models/qsqltablemodel.cpp
src/sql/models/qsqltablemodel_p.h

index e12976e..3a8c120 100644 (file)
@@ -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.
index ff32533..0d062e2 100644 (file)
@@ -68,10 +68,15 @@ QSqlRecord QSqlTableModelPrivate::record(const QVector<QVariant> &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()
index 56fd839..15cbe8e 100644 (file)
@@ -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;