Changeset 561 for trunk/src/sql/models


Ignore:
Timestamp:
Feb 11, 2010, 11:19:06 PM (15 years ago)
Author:
Dmitry A. Kuminov
Message:

trunk: Merged in qt 4.6.1 sources.

Location:
trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/sql/models/qsqlquerymodel.cpp

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    315315    bool columnsChanged = (newRec != d->rec);
    316316    bool hasQuerySize = query.driver()->hasFeature(QSqlDriver::QuerySize);
     317    bool hasNewData = (newRec != QSqlRecord()) || !query.lastError().isValid();
    317318
    318319    if (d->colOffsets.size() != newRec.count() || columnsChanged)
     
    329330    d->query = query;
    330331    d->rec = newRec;
    331    
     332
    332333    if (mustClearModel)
    333334        endRemoveRows();
    334    
    335     d->atEnd = false;   
    336 
    337     if (columnsChanged)
     335
     336    d->atEnd = false;
     337
     338    if (columnsChanged && hasNewData)
    338339        reset();
    339340
     
    418419{
    419420    Q_D(QSqlQueryModel);
    420     if (orientation != Qt::Horizontal || section < 0)
     421    if (orientation != Qt::Horizontal || section < 0 || columnCount() <= section)
    421422        return false;
    422423
  • trunk/src/sql/models/qsqlquerymodel.h

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
  • trunk/src/sql/models/qsqlquerymodel_p.h

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
  • trunk/src/sql/models/qsqlrelationaldelegate.cpp

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
  • trunk/src/sql/models/qsqlrelationaldelegate.h

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
  • trunk/src/sql/models/qsqlrelationaltablemodel.cpp

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    183183
    184184    QSqlRecord record;
     185    QString indexColumn;
     186    QString displayColumn;
    185187    for (int i=0; i < model->rowCount(); ++i) {
    186188        record = model->record(i);
    187         dictionary[record.field(rel.indexColumn()).value().toString()] =
    188             record.field(rel.displayColumn()).value();
     189
     190        indexColumn = rel.indexColumn();
     191        if (m_parent->database().driver()->isIdentifierEscaped(indexColumn, QSqlDriver::FieldName))
     192            indexColumn = m_parent->database().driver()->stripDelimiters(indexColumn, QSqlDriver::FieldName);
     193
     194        displayColumn = rel.displayColumn();
     195        if (m_parent->database().driver()->isIdentifierEscaped(displayColumn, QSqlDriver::FieldName))
     196            displayColumn = m_parent->database().driver()->stripDelimiters(displayColumn, QSqlDriver::FieldName);
     197
     198        dictionary[record.field(indexColumn).value().toString()] =
     199            record.field(displayColumn).value();
    189200    }
    190201    m_dictInitialized = true;
     
    216227        : QSqlTableModelPrivate()
    217228    {}
    218     QString escapedRelationField(const QString &tableName, const QString &fieldName) const;
     229    QString relationField(const QString &tableName, const QString &fieldName) const;
    219230
    220231    int nameToIndex(const QString &name) const;
     
    256267int QSqlRelationalTableModelPrivate::nameToIndex(const QString &name) const
    257268{
    258     return baseRec.indexOf(name);
     269    QString fieldname = name;
     270    if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName))
     271        fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName);
     272    return baseRec.indexOf(fieldname);
    259273}
    260274
     
    482496}
    483497
    484 QString QSqlRelationalTableModelPrivate::escapedRelationField(const QString &tableName,
     498QString QSqlRelationalTableModelPrivate::relationField(const QString &tableName,
    485499                        const QString &fieldName) const
    486500{
    487     QString esc;
    488     esc.reserve(tableName.size() + fieldName.size() + 1);
    489     esc.append(tableName).append(QLatin1Char('.')).append(fieldName);
    490 
    491     return db.driver()->escapeIdentifier(esc, QSqlDriver::FieldName);
     501    QString ret;
     502    ret.reserve(tableName.size() + fieldName.size() + 1);
     503    ret.append(tableName).append(QLatin1Char('.')).append(fieldName);
     504
     505    return ret;
    492506}
    493507
     
    515529    // Count how many times each field name occurs in the record
    516530    QHash<QString, int> fieldNames;
     531    QStringList fieldList;
    517532    for (int i = 0; i < rec.count(); ++i) {
    518533        QSqlRelation relation = d->relations.value(i, nullRelation).rel;
    519534        QString name;
    520535        if (relation.isValid())
     536        {
    521537            // Count the display column name, not the original foreign key
    522538            name = relation.displayColumn();
     539            if (d->db.driver()->isIdentifierEscaped(name, QSqlDriver::FieldName))
     540                name = d->db.driver()->stripDelimiters(name, QSqlDriver::FieldName);
     541
     542            QSqlRecord rec = database().record(relation.tableName());
     543            for (int i = 0; i < rec.count(); ++i) {
     544                if (name.compare(rec.fieldName(i), Qt::CaseInsensitive) == 0) {
     545                    name = rec.fieldName(i);
     546                    break;
     547                }
     548            }
     549        }
    523550        else
    524551            name = rec.fieldName(i);
    525552        fieldNames.insert(name, fieldNames.value(name, 0) + 1);
     553        fieldList.append(name);
    526554    }
    527555
     
    532560            if (!fList.isEmpty())
    533561                fList.append(QLatin1String(", "));
    534             fList.append(d->escapedRelationField(relTableAlias, relation.displayColumn()));
     562            fList.append(d->relationField(relTableAlias,relation.displayColumn()));
    535563
    536564            // If there are duplicate field names they must be aliased
    537             if (fieldNames.value(relation.displayColumn()) > 1) {
    538                 fList.append(QString::fromLatin1(" AS %1_%2").arg(relation.tableName()).arg(relation.displayColumn()));
     565            if (fieldNames.value(fieldList[i]) > 1) {
     566                QString relTableName = relation.tableName().section(QChar::fromLatin1('.'), -1, -1);
     567                if (d->db.driver()->isIdentifierEscaped(relTableName, QSqlDriver::TableName))
     568                    relTableName = d->db.driver()->stripDelimiters(relTableName, QSqlDriver::TableName);
     569                QString displayColumn = relation.displayColumn();
     570                if (d->db.driver()->isIdentifierEscaped(displayColumn, QSqlDriver::FieldName))
     571                    displayColumn = d->db.driver()->stripDelimiters(displayColumn, QSqlDriver::FieldName);
     572                fList.append(QString::fromLatin1(" AS %1_%2_%3").arg(relTableName).arg(displayColumn).arg(fieldNames.value(fieldList[i])));
     573                fieldNames.insert(fieldList[i], fieldNames.value(fieldList[i])-1);
    539574            }
    540575
    541576            // this needs fixing!! the below if is borken.
    542             if (!tables.contains(relation.tableName()))
    543                 tables.append(d->db.driver()->escapeIdentifier(relation.tableName(),QSqlDriver::TableName)
    544                         .append(QLatin1String(" "))
    545                         .append(d->db.driver()->escapeIdentifier(relTableAlias, QSqlDriver::TableName)));
     577            tables.append(relation.tableName().append(QLatin1Char(' ')).append(relTableAlias));
    546578            if(!where.isEmpty())
    547579                where.append(QLatin1String(" AND "));
    548             where.append(d->escapedRelationField(tableName(), rec.fieldName(i)));
     580            where.append(d->relationField(tableName(), d->db.driver()->escapeIdentifier(rec.fieldName(i), QSqlDriver::FieldName)));
    549581            where.append(QLatin1String(" = "));
    550             where.append(d->escapedRelationField(relTableAlias, relation.indexColumn()));
     582            where.append(d->relationField(relTableAlias, relation.indexColumn()));
    551583        } else {
    552584            if (!fList.isEmpty())
    553585                fList.append(QLatin1String(", "));
    554             fList.append(d->escapedRelationField(tableName(), rec.fieldName(i)));
     586            fList.append(d->relationField(tableName(), d->db.driver()->escapeIdentifier(rec.fieldName(i), QSqlDriver::FieldName)));
    555587        }
    556588    }
     
    561593    if(!tList.isEmpty())
    562594        tList.prepend(QLatin1String(", "));
    563     tList.prepend(d->db.driver()->escapeIdentifier(tableName(),QSqlDriver::TableName));
     595    tList.prepend(tableName());
    564596    query.append(QLatin1String("SELECT "));
    565597    query.append(fList).append(QLatin1String(" FROM ")).append(tList);
     
    691723
    692724    QString s = QLatin1String("ORDER BY ");
    693     s.append(d->escapedRelationField(QLatin1String("relTblAl_") + QString::number(d->sortColumn),
     725    s.append(d->relationField(QLatin1String("relTblAl_") + QString::number(d->sortColumn),
    694726                    rel.displayColumn()));
    695727    s += d->sortOrder == Qt::AscendingOrder ? QLatin1String(" ASC") : QLatin1String(" DESC");
  • trunk/src/sql/models/qsqlrelationaltablemodel.h

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
  • trunk/src/sql/models/qsqltablemodel.cpp

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
     
    9999int QSqlTableModelPrivate::nameToIndex(const QString &name) const
    100100{
    101     return rec.indexOf(name);
     101    QString fieldname = name;
     102    if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName))
     103        fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName);
     104    return rec.indexOf(fieldname);
    102105}
    103106
     
    203206        }
    204207        for (i = 0; i < whereValues.count(); ++i) {
    205             if (whereValues.isGenerated(i))
     208            if (whereValues.isGenerated(i) && !whereValues.isNull(i))
    206209                editQuery.addBindValue(whereValues.value(i));
    207210        }
     
    368371    Q_D(QSqlTableModel);
    369372    clear();
    370     if(d->db.tables().contains(tableName.toUpper()))
    371         d->tableName = tableName.toUpper();
    372     else
    373         d->tableName = tableName;
     373    d->tableName = tableName;
    374374    d->initRecordAndPrimaryIndex();
    375375    d->initColOffsets(d->rec.count());
     
    407407    setQuery(qu);
    408408
    409     if (!qu.isActive()) {
     409    if (!qu.isActive() || lastError().isValid()) {
    410410        // something went wrong - revert to non-select state
    411411        d->initRecordAndPrimaryIndex();
     
    539539        if (isOk)
    540540            select();
     541        emit dataChanged(index, index);
    541542        break; }
    542543    case OnRowChange:
     
    559560            row.op = QSqlTableModelPrivate::Update;
    560561            row.rec = d->rec;
    561                         row.primaryValues = d->primaryValues(indexInQuery(index).row());
     562            row.primaryValues = d->primaryValues(indexInQuery(index).row());
    562563        }
    563564        row.rec.setValue(index.column(), value);
     
    669670    emit beforeDelete(row);
    670671
    671     QSqlRecord rec = d->primaryValues(row);
     672    const QSqlRecord whereValues = d->strategy == OnManualSubmit ? d->cache[row].primaryValues : d->primaryValues(row);
    672673    bool prepStatement = d->db.driver()->hasFeature(QSqlDriver::PreparedQueries);
    673674    QString stmt = d->db.driver()->sqlStatement(QSqlDriver::DeleteStatement,
     
    677678    QString where = d->db.driver()->sqlStatement(QSqlDriver::WhereStatement,
    678679                                                 d->tableName,
    679                                                  rec,
     680                                                 whereValues,
    680681                                                 prepStatement);
    681682
     
    687688    stmt.append(QLatin1Char(' ')).append(where);
    688689
    689     return d->exec(stmt, prepStatement, rec);
     690    return d->exec(stmt, prepStatement, whereValues);
    690691}
    691692
     
    977978        return s;
    978979       
    979     QString table = d->db.driver()->escapeIdentifier(d->tableName, QSqlDriver::TableName);
     980    QString table = d->tableName;
     981    //we can safely escape the field because it would have been obtained from the database
     982    //and have the correct case
    980983    QString field = d->db.driver()->escapeIdentifier(f.name(), QSqlDriver::FieldName);
    981984    s.append(QLatin1String("ORDER BY ")).append(table).append(QLatin1Char('.')).append(field);
     
    10971100            else {
    10981101                d->cache[idx].op = QSqlTableModelPrivate::Delete;
     1102                d->cache[idx].primaryValues = d->primaryValues(indexInQuery(createIndex(idx, 0)).row());
    10991103                emit headerDataChanged(Qt::Vertical, idx, idx);
    11001104            }
     
    13181322            mrow.primaryValues = d->primaryValues(indexInQuery(createIndex(row, 0)).row());
    13191323        }
     1324        QString fieldName;
    13201325        for (int i = 0; i < record.count(); ++i) {
    1321             int idx = mrow.rec.indexOf(record.fieldName(i));
     1326            fieldName = record.fieldName(i);
     1327            if (d->db.driver()->isIdentifierEscaped(fieldName, QSqlDriver::FieldName))
     1328                fieldName = d->db.driver()->stripDelimiters(fieldName, QSqlDriver::FieldName);
     1329            int idx = mrow.rec.indexOf(fieldName);
    13221330            if (idx == -1)
    13231331                isOk = false;
  • trunk/src/sql/models/qsqltablemodel.h

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
  • trunk/src/sql/models/qsqltablemodel_p.h

    r2 r561  
    22**
    33** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
    4 ** Contact: Qt Software Information (qt-info@nokia.com)
     4** All rights reserved.
     5** Contact: Nokia Corporation (qt-info@nokia.com)
    56**
    67** This file is part of the QtSql module of the Qt Toolkit.
     
    2122** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
    2223**
    23 ** In addition, as a special exception, Nokia gives you certain
    24 ** additional rights. These rights are described in the Nokia Qt LGPL
    25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
    26 ** package.
     24** In addition, as a special exception, Nokia gives you certain additional
     25** rights.  These rights are described in the Nokia Qt LGPL Exception
     26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
    2727**
    2828** GNU General Public License Usage
     
    3434** met: http://www.gnu.org/copyleft/gpl.html.
    3535**
    36 ** If you are unsure which license is appropriate for your use, please
    37 ** contact the sales department at qt-sales@nokia.com.
     36** If you have questions regarding the use of this file, please contact
     37** Nokia at qt-info@nokia.com.
    3838** $QT_END_LICENSE$
    3939**
Note: See TracChangeset for help on using the changeset viewer.