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:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/src/gui/itemviews/qstandarditemmodel.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 QtGui 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**
     
    330330QStandardItemModelPrivate::~QStandardItemModelPrivate()
    331331{
    332     delete root;
    333332    delete itemPrototype;
    334333    qDeleteAll(columnHeaderItems);
     
    555554{
    556555    Q_Q(QStandardItemModel);
    557     if (parent == root)
     556    if (parent == root.data())
    558557        rowHeaderItems.insert(row, count, 0);
    559558    q->endInsertRows();
     
    567566{
    568567    Q_Q(QStandardItemModel);
    569     if (parent == root)
     568    if (parent == root.data())
    570569        columnHeaderItems.insert(column, count, 0);
    571570    q->endInsertColumns();
     
    579578{
    580579    Q_Q(QStandardItemModel);
    581     if (parent == root) {
     580    if (parent == root.data()) {
    582581        for (int i = row; i < row + count; ++i) {
    583582            QStandardItem *oldItem = rowHeaderItems.at(i);
     
    598597{
    599598    Q_Q(QStandardItemModel);
    600     if (parent == root) {
     599    if (parent == root.data()) {
    601600        for (int i = column; i < column + count; ++i) {
    602601            QStandardItem *oldItem = columnHeaderItems.at(i);
     
    779778QStandardItem::~QStandardItem()
    780779{
    781     Q_D(QStandardItem);
    782     delete d;
    783780}
    784781
     
    791788{
    792789    Q_D(const QStandardItem);
    793     if (!d->model || (d->model->d_func()->root != d->parent))
     790    if (!d->model || (d->model->d_func()->root.data() != d->parent))
    794791        return d->parent;
    795792    return 0;
     
    900897        return (Qt::ItemIsSelectable|Qt::ItemIsEnabled|Qt::ItemIsEditable
    901898                |Qt::ItemIsDragEnabled|Qt::ItemIsDropEnabled);
    902     return ((Qt::ItemFlags)(v.toInt()));
     899    return Qt::ItemFlags(v.toInt());
    903900}
    904901
     
    17431740    if ((row < 0) || (row >= rowCount()))
    17441741        return QList<QStandardItem*>();
     1742    if (d->model)
     1743        d->model->d_func()->rowsAboutToBeRemoved(this, row, row);
    17451744    QList<QStandardItem*> items;
    1746     int index = d->childIndex(row, 0);
    1747     for (int column = 0; column < d->columnCount(); ++column) {
    1748         QStandardItem *ch = d->children.at(index);
    1749         if (ch) {
    1750             ch->d_func()->setParentAndModel(0, 0);
    1751             d->children.replace(index, 0);
     1745    int index = d->childIndex(row, 0);  // Will return -1 if there are no columns
     1746    if (index != -1) {
     1747        int col_count = d->columnCount();
     1748        for (int column = 0; column < col_count; ++column) {
     1749            QStandardItem *ch = d->children.at(index + column);
     1750            if (ch)
     1751                ch->d_func()->setParentAndModel(0, 0);
     1752            items.append(ch);
    17521753        }
    1753         items.append(ch);
    1754         ++index;
    1755     }
    1756     removeRow(row);
     1754        d->children.remove(index, col_count);
     1755    }
     1756    d->rows--;
     1757    if (d->model)
     1758        d->model->d_func()->rowsRemoved(this, row, 1);
    17571759    return items;
    17581760}
     
    17701772    if ((column < 0) || (column >= columnCount()))
    17711773        return QList<QStandardItem*>();
     1774    if (d->model)
     1775        d->model->d_func()->columnsAboutToBeRemoved(this, column, column);
    17721776    QList<QStandardItem*> items;
    1773     int index = d->childIndex(0, column);
    1774     for (int row = 0; row < d->rowCount(); ++row) {
     1777
     1778    for (int row = d->rowCount() - 1; row >= 0; --row) {
     1779        int index = d->childIndex(row, column);
    17751780        QStandardItem *ch = d->children.at(index);
    1776         if (ch) {
     1781        if (ch)
    17771782            ch->d_func()->setParentAndModel(0, 0);
    1778             d->children.replace(index, 0);
    1779         }
    1780         items.append(ch);
    1781         index += d->columnCount();
    1782     }
    1783     removeColumn(column);
     1783        d->children.remove(index);
     1784        items.prepend(ch);
     1785    }
     1786    d->columns--;
     1787    if (d->model)
     1788        d->model->d_func()->columnsRemoved(this, column, 1);
    17841789    return items;
    17851790}
     
    18021807    const QVariant l = data(role), r = other.data(role);
    18031808    // this code is copied from QSortFilterProxyModel::lessThan()
    1804     switch (l.type()) {
     1809    switch (l.userType()) {
    18051810    case QVariant::Invalid:
    18061811        return (r.type() == QVariant::Invalid);
     
    18131818    case QVariant::ULongLong:
    18141819        return l.toULongLong() < r.toULongLong();
     1820    case QMetaType::Float:
     1821        return l.toFloat() < r.toFloat();
    18151822    case QVariant::Double:
    18161823        return l.toDouble() < r.toDouble();
     
    18911898    qint32 flags;
    18921899    in >> flags;
    1893     setFlags((Qt::ItemFlags)flags);
     1900    setFlags(Qt::ItemFlags(flags));
    18941901}
    18951902
     
    19391946}
    19401947
    1941 #endif // !QT_NO_DATASTREAM
     1948#endif // QT_NO_DATASTREAM
    19421949
    19431950/*!
     
    20802087{
    20812088    Q_D(QStandardItemModel);
    2082     delete d->root;
    2083     d->root = new QStandardItem;
     2089    d->root.reset(new QStandardItem);
    20842090    d->root->d_func()->setModel(this);
    20852091    qDeleteAll(d->columnHeaderItems);
     
    22282234{
    22292235    Q_D(const QStandardItemModel);
    2230     return d->root;
     2236    return d->root.data();
    22312237}
    22322238
     
    27302736{
    27312737    Q_D(QStandardItemModel);
    2732     QStandardItem *item = parent.isValid() ? itemFromIndex(parent) : d->root;
     2738    QStandardItem *item = parent.isValid() ? itemFromIndex(parent) : d->root.data();
    27332739    if (item == 0)
    27342740        return false;
     
    27422748{
    27432749    Q_D(QStandardItemModel);
    2744     QStandardItem *item = parent.isValid() ? itemFromIndex(parent) : d->root;
     2750    QStandardItem *item = parent.isValid() ? itemFromIndex(parent) : d->root.data();
    27452751    if (item == 0)
    27462752        return false;
     
    29082914    itemsSet.reserve(indexes.count());
    29092915    stack.reserve(indexes.count());
    2910     foreach (const QModelIndex &index, indexes) {
    2911         QStandardItem *item = itemFromIndex(index);
     2916    for (int i = 0; i < indexes.count(); ++i) {
     2917        QStandardItem *item = itemFromIndex(indexes.at(i));
    29122918        itemsSet << item;
    29132919        stack.push(item);
     
    29662972    stream out an item and his children
    29672973 */
    2968 static void decodeDataRecursive(QDataStream &stream, QStandardItem *item)
     2974void QStandardItemModelPrivate::decodeDataRecursive(QDataStream &stream, QStandardItem *item)
    29692975{
    29702976    int colCount, childCount;
     
    29772983    while(childPos > 0) {
    29782984        childPos--;
    2979         QStandardItem *child = new QStandardItem;
     2985        QStandardItem *child = createItem();
    29802986        decodeDataRecursive(stream, child);
    29812987        item->setChild( childPos / colCount, childPos % colCount, child);
     
    29902996                                      int row, int column, const QModelIndex &parent)
    29912997{
     2998    Q_D(QStandardItemModel);
    29922999    // check if the action is supported
    29933000    if (!data || !(action == Qt::CopyAction || action == Qt::MoveAction))
     
    30213028    while (!stream.atEnd()) {
    30223029        int r, c;
    3023         QStandardItem *item = new QStandardItem;
     3030        QStandardItem *item = d->createItem();
    30243031        stream >> r >> c;
    3025         decodeDataRecursive(stream, item);
     3032        d->decodeDataRecursive(stream, item);
    30263033
    30273034        rows.append(r);
Note: See TracChangeset for help on using the changeset viewer.