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/qtablewidget.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**
     
    227227        itm->d->id = -1;
    228228        tableItems[i] = 0;
     229        QModelIndex ind = index(itm);
     230        emit dataChanged(ind, ind);
    229231    }
    230232    return itm;
     
    531533}
    532534
    533 bool QTableModel::canConvertToDouble(const QVariant &value)
    534 {
    535     switch (value.type()) {
    536     case QVariant::Bool:
    537     case QVariant::Int:
    538     case QVariant::UInt:
    539     case QVariant::LongLong:
    540     case QVariant::ULongLong:
    541     case QVariant::Double:
    542     case QVariant::Char:
    543         return true;
    544     default:
    545         return false;
    546     }
    547     return false;
    548 }
    549 
    550 
    551535/*
    552536  \internal
     
    588572        vit = sortedInsertionIterator(vit, colItems.end(), order, item);
    589573        int newRow = qMax((int)(vit - colItems.begin()), 0);
     574        if ((newRow < oldRow) && !(*item < *colItems.at(oldRow - 1)) && !(*colItems.at(oldRow - 1) < *item))
     575            newRow = oldRow;
    590576        vit = colItems.insert(vit, item);
    591577        if (newRow != oldRow) {
     
    14111397{
    14121398    const QVariant v1 = data(Qt::DisplayRole), v2 = other.data(Qt::DisplayRole);
    1413     if (QTableModel::canConvertToDouble(v1) && QTableModel::canConvertToDouble(v2))
    1414         return v1.toDouble() < v2.toDouble();
    1415     return v1.toString() < v2.toString();
     1399    return QAbstractItemModelPrivate::variantLessThan(v1, v2);
    14161400}
    14171401
     
    15071491
    15081492    \ingroup model-view
    1509     \mainclass
     1493
    15101494
    15111495    Table widgets provide standard table display facilities for applications.
     
    15891573    QObject::connect(q, SIGNAL(entered(QModelIndex)), q, SLOT(_q_emitItemEntered(QModelIndex)));
    15901574    // model signals
    1591     QObject::connect(model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)),
     1575    QObject::connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
    15921576                     q, SLOT(_q_emitItemChanged(QModelIndex)));
    15931577    // selection signals
     
    15971581                     q, SIGNAL(itemSelectionChanged()));
    15981582    // sorting
    1599     QObject::connect(model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)),
     1583    QObject::connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex)),
    16001584                     q, SLOT(_q_dataChanged(QModelIndex,QModelIndex)));
    1601     QObject::connect(model(), SIGNAL(columnsRemoved(QModelIndex,int,int)), q, SLOT(_q_sort()));
     1585    QObject::connect(model, SIGNAL(columnsRemoved(QModelIndex,int,int)), q, SLOT(_q_sort()));
    16021586}
    16031587
     
    16051589{
    16061590    Q_Q(QTableWidget);
    1607     if (QTableWidgetItem *item = model()->item(index))
     1591    if (QTableWidgetItem *item = tableModel()->item(index))
    16081592        emit q->itemPressed(item);
    16091593    emit q->cellPressed(index.row(), index.column());
     
    16131597{
    16141598    Q_Q(QTableWidget);
    1615     if (QTableWidgetItem *item = model()->item(index))
     1599    if (QTableWidgetItem *item = tableModel()->item(index))
    16161600        emit q->itemClicked(item);
    16171601    emit q->cellClicked(index.row(), index.column());
     
    16211605{
    16221606    Q_Q(QTableWidget);
    1623     if (QTableWidgetItem *item = model()->item(index))
     1607    if (QTableWidgetItem *item = tableModel()->item(index))
    16241608        emit q->itemDoubleClicked(item);
    16251609    emit q->cellDoubleClicked(index.row(), index.column());
     
    16291613{
    16301614    Q_Q(QTableWidget);
    1631     if (QTableWidgetItem *item = model()->item(index))
     1615    if (QTableWidgetItem *item = tableModel()->item(index))
    16321616        emit q->itemActivated(item);
    16331617    emit q->cellActivated(index.row(), index.column());
     
    16371621{
    16381622    Q_Q(QTableWidget);
    1639     if (QTableWidgetItem *item = model()->item(index))
     1623    if (QTableWidgetItem *item = tableModel()->item(index))
    16401624        emit q->itemEntered(item);
    16411625    emit q->cellEntered(index.row(), index.column());
     
    16451629{
    16461630    Q_Q(QTableWidget);
    1647     if (QTableWidgetItem *item = model()->item(index))
     1631    if (QTableWidgetItem *item = tableModel()->item(index))
    16481632        emit q->itemChanged(item);
    16491633    emit q->cellChanged(index.row(), index.column());
     
    16541638{
    16551639    Q_Q(QTableWidget);
    1656     QTableWidgetItem *currentItem = model()->item(current);
    1657     QTableWidgetItem *previousItem = model()->item(previous);
     1640    QTableWidgetItem *currentItem = tableModel()->item(current);
     1641    QTableWidgetItem *previousItem = tableModel()->item(previous);
    16581642    if (currentItem || previousItem)
    16591643        emit q->currentItemChanged(currentItem, previousItem);
     
    16631647void QTableWidgetPrivate::_q_sort()
    16641648{
    1665     Q_Q(QTableWidget);
    16661649    if (sortingEnabled) {
    1667         int column = q->horizontalHeader()->sortIndicatorSection();
    1668         Qt::SortOrder order = q->horizontalHeader()->sortIndicatorOrder();
    1669         model()->sort(column, order);
     1650        int column = horizontalHeader->sortIndicatorSection();
     1651        Qt::SortOrder order = horizontalHeader->sortIndicatorOrder();
     1652        model->sort(column, order);
    16701653    }
    16711654}
     
    16741657                                         const QModelIndex &bottomRight)
    16751658{
    1676     Q_Q(QTableWidget);
    16771659    if (sortingEnabled && topLeft.isValid() && bottomRight.isValid()) {
    1678         int column = q->horizontalHeader()->sortIndicatorSection();
     1660        int column = horizontalHeader->sortIndicatorSection();
    16791661        if (column >= topLeft.column() && column <= bottomRight.column()) {
    1680             Qt::SortOrder order = q->horizontalHeader()->sortIndicatorOrder();
    1681             model()->ensureSorted(column, order, topLeft.row(), bottomRight.row());
     1662            Qt::SortOrder order = horizontalHeader->sortIndicatorOrder();
     1663            tableModel()->ensureSorted(column, order, topLeft.row(), bottomRight.row());
    16821664        }
    16831665    }
     
    17401722    This signal is emitted whenever the selection changes.
    17411723
    1742     \sa selectedItems() isItemSelected()
     1724    \sa selectedItems() QTableWidgetItem::isSelected()
    17431725*/
    17441726
     
    18831865{
    18841866    Q_D(QTableWidget);
    1885     d->model()->setRowCount(rows);
     1867    d->tableModel()->setRowCount(rows);
    18861868}
    18871869
     
    18931875{
    18941876    Q_D(const QTableWidget);
    1895     return d->model()->rowCount();
     1877    return d->model->rowCount();
    18961878}
    18971879
     
    19061888{
    19071889    Q_D(QTableWidget);
    1908     d->model()->setColumnCount(columns);
     1890    d->tableModel()->setColumnCount(columns);
    19091891}
    19101892
     
    19161898{
    19171899    Q_D(const QTableWidget);
    1918     return d->model()->columnCount();
     1900    return d->model->columnCount();
    19191901}
    19201902
     
    19251907{
    19261908    Q_D(const QTableWidget);
    1927     return d->model()->index(item).row();
     1909    return d->tableModel()->index(item).row();
    19281910}
    19291911
     
    19341916{
    19351917    Q_D(const QTableWidget);
    1936     return d->model()->index(item).column();
     1918    return d->tableModel()->index(item).column();
    19371919}
    19381920
     
    19471929{
    19481930    Q_D(const QTableWidget);
    1949     return d->model()->item(row, column);
     1931    return d->tableModel()->item(row, column);
    19501932}
    19511933
     
    19761958        } else {
    19771959            item->view = this;
    1978             d->model()->setItem(row, column, item);
     1960            d->tableModel()->setItem(row, column, item);
    19791961        }
    19801962    } else {
     
    19891971{
    19901972    Q_D(QTableWidget);
    1991     QTableWidgetItem *item = d->model()->takeItem(row, column);
     1973    QTableWidgetItem *item = d->tableModel()->takeItem(row, column);
    19921974    if (item)
    19931975        item->view = 0;
     
    20011983{
    20021984    Q_D(const QTableWidget);
    2003     return d->model()->verticalHeaderItem(row);
     1985    return d->tableModel()->verticalHeaderItem(row);
    20041986}
    20051987
     
    20121994    if (item) {
    20131995        item->view = this;
    2014         d->model()->setVerticalHeaderItem(row, item);
     1996        d->tableModel()->setVerticalHeaderItem(row, item);
    20151997    } else {
    20161998        delete takeVerticalHeaderItem(row);
     
    20252007{
    20262008    Q_D(QTableWidget);
    2027     QTableWidgetItem *itm = d->model()->takeVerticalHeaderItem(row);
     2009    QTableWidgetItem *itm = d->tableModel()->takeVerticalHeaderItem(row);
    20282010    if (itm)
    20292011        itm->view = 0;
     
    20382020{
    20392021    Q_D(const QTableWidget);
    2040     return d->model()->horizontalHeaderItem(column);
     2022    return d->tableModel()->horizontalHeaderItem(column);
    20412023}
    20422024
     
    20492031    if (item) {
    20502032        item->view = this;
    2051         d->model()->setHorizontalHeaderItem(column, item);
     2033        d->tableModel()->setHorizontalHeaderItem(column, item);
    20522034    } else {
    20532035        delete takeHorizontalHeaderItem(column);
     
    20622044{
    20632045    Q_D(QTableWidget);
    2064     QTableWidgetItem *itm = d->model()->takeHorizontalHeaderItem(column);
     2046    QTableWidgetItem *itm = d->tableModel()->takeHorizontalHeaderItem(column);
    20652047    if (itm)
    20662048        itm->view = 0;
     
    20742056{
    20752057    Q_D(QTableWidget);
    2076     QTableModel *model = d->model();
     2058    QTableModel *model = d->tableModel();
    20772059    QTableWidgetItem *item = 0;
    20782060    for (int i = 0; i < model->rowCount() && i < labels.count(); ++i) {
     
    20922074{
    20932075    Q_D(QTableWidget);
    2094     QTableModel *model = d->model();
     2076    QTableModel *model = d->tableModel();
    20952077    QTableWidgetItem *item = 0;
    20962078    for (int i = 0; i < model->columnCount() && i < labels.count(); ++i) {
     
    21322114{
    21332115    Q_D(const QTableWidget);
    2134     return d->model()->item(currentIndex());
     2116    return d->tableModel()->item(currentIndex());
    21352117}
    21362118
     
    21382120    Sets the current item to \a item.
    21392121
    2140     Depending on the current \l{QAbstractItemView::SelectionMode}{selection mode},
    2141     the item may also be selected.
     2122    Unless the selection mode is \l{QAbstractItemView::}{NoSelection},
     2123    the item is also be selected.
    21422124
    21432125    \sa currentItem(), setCurrentCell()
     
    21462128{
    21472129    Q_D(QTableWidget);
    2148     setCurrentIndex(d->model()->index(item));
     2130    setCurrentIndex(d->tableModel()->index(item));
    21492131}
    21502132
     
    21592141{
    21602142    Q_D(QTableWidget);
    2161     d->selectionModel->setCurrentIndex(d->model()->index(item), command);
     2143    d->selectionModel->setCurrentIndex(d->tableModel()->index(item), command);
    21622144}
    21632145
     
    21982180{
    21992181    Q_D(QTableWidget);
    2200     d->model()->sort(column, order);
     2182    d->model->sort(column, order);
    22012183    horizontalHeader()->setSortIndicator(column, order);
    22022184}
     
    22272209    if (!item)
    22282210        return;
    2229     edit(d->model()->index(item));
     2211    edit(d->tableModel()->index(item));
    22302212}
    22312213
     
    22402222    if (!item)
    22412223        return;
    2242     QModelIndex index = d->model()->index(item);
     2224    QModelIndex index = d->tableModel()->index(item);
    22432225    QAbstractItemView::openPersistentEditor(index);
    22442226}
     
    22542236    if (!item)
    22552237        return;
    2256     QModelIndex index = d->model()->index(item);
     2238    QModelIndex index = d->tableModel()->index(item);
    22572239    QAbstractItemView::closePersistentEditor(index);
    22582240}
     
    23042286{
    23052287    Q_D(const QTableWidget);
    2306     QModelIndex index = d->model()->index(item);
     2288    QModelIndex index = d->tableModel()->index(item);
    23072289    return selectionModel()->isSelected(index);
    23082290}
     
    23182300{
    23192301    Q_D(QTableWidget);
    2320     QModelIndex index = d->model()->index(item);
     2302    QModelIndex index = d->tableModel()->index(item);
    23212303    selectionModel()->select(index, select ? QItemSelectionModel::Select : QItemSelectionModel::Deselect);
    23222304}
     
    23752357        if (isIndexHidden(index))
    23762358            continue;
    2377         QTableWidgetItem *item = d->model()->item(index);
     2359        QTableWidgetItem *item = d->tableModel()->item(index);
    23782360        if (item)
    23792361            items.append(item);
     
    23912373    QModelIndexList indexes;
    23922374    for (int column = 0; column < columnCount(); ++column)
    2393         indexes += d->model()->match(model()->index(0, column, QModelIndex()),
     2375        indexes += d->model->match(model()->index(0, column, QModelIndex()),
    23942376                                     Qt::DisplayRole, text, -1, flags);
    23952377    QList<QTableWidgetItem*> items;
    23962378    for (int i = 0; i < indexes.size(); ++i)
    2397         items.append(d->model()->item(indexes.at(i)));
     2379        items.append(d->tableModel()->item(indexes.at(i)));
    23982380    return items;
    23992381}
     
    24292411{
    24302412    Q_D(const QTableWidget);
    2431     return d->model()->item(indexAt(p));
     2413    return d->tableModel()->item(indexAt(p));
    24322414}
    24332415
     
    24402422    if (!item)
    24412423        return QRect();
    2442     QModelIndex index = d->model()->index(const_cast<QTableWidgetItem*>(item));
     2424    QModelIndex index = d->tableModel()->index(const_cast<QTableWidgetItem*>(item));
    24432425    Q_ASSERT(index.isValid());
    24442426    return visualRect(index);
     
    24562438    if (!item)
    24572439        return;
    2458     QModelIndex index = d->model()->index(const_cast<QTableWidgetItem*>(item));
     2440    QModelIndex index = d->tableModel()->index(const_cast<QTableWidgetItem*>(item));
    24592441    Q_ASSERT(index.isValid());
    24602442    QTableView::scrollTo(index, hint);
     
    24692451{
    24702452    Q_D(const QTableWidget);
    2471     return d->model()->itemPrototype();
     2453    return d->tableModel()->itemPrototype();
    24722454}
    24732455
     
    24772459    The table widget will use the item prototype clone function when it needs
    24782460    to create a new table item.  For example when the user is editing
    2479     editing in an empty cell.  This is useful when you have a QTableWidgetItem
     2461    in an empty cell.  This is useful when you have a QTableWidgetItem
    24802462    subclass and want to make sure that QTableWidget creates instances of
    24812463    your subclass.
     
    24882470{
    24892471    Q_D(QTableWidget);
    2490     d->model()->setItemPrototype(item);
     2472    d->tableModel()->setItemPrototype(item);
    24912473}
    24922474
     
    24972479{
    24982480    Q_D(QTableWidget);
    2499     d->model()->insertRows(row);
     2481    d->tableModel()->insertRows(row);
    25002482}
    25012483
     
    25062488{
    25072489    Q_D(QTableWidget);
    2508     d->model()->insertColumns(column);
     2490    d->tableModel()->insertColumns(column);
    25092491}
    25102492
     
    25152497{
    25162498    Q_D(QTableWidget);
    2517     d->model()->removeRows(row);
     2499    d->tableModel()->removeRows(row);
    25182500}
    25192501
     
    25242506{
    25252507    Q_D(QTableWidget);
    2526     d->model()->removeColumns(column);
     2508    d->tableModel()->removeColumns(column);
    25272509}
    25282510
     
    25372519    Q_D(QTableWidget);
    25382520    selectionModel()->clear();
    2539     d->model()->clear();
     2521    d->tableModel()->clear();
    25402522}
    25412523
     
    25512533    Q_D(QTableWidget);
    25522534    selectionModel()->clear();
    2553     d->model()->clearContents();
     2535    d->tableModel()->clearContents();
    25542536}
    25552537
     
    25622544QStringList QTableWidget::mimeTypes() const
    25632545{
    2564     return d_func()->model()->QAbstractTableModel::mimeTypes();
     2546    return d_func()->tableModel()->QAbstractTableModel::mimeTypes();
    25652547}
    25662548
     
    25752557QMimeData *QTableWidget::mimeData(const QList<QTableWidgetItem*>) const
    25762558{
    2577     return d_func()->model()->internalMimeData();
     2559    return d_func()->tableModel()->internalMimeData();
    25782560}
    25792561
     
    25972579    }
    25982580#endif
    2599     return d_func()->model()->QAbstractTableModel::dropMimeData(data, action , row, column, idx);
     2581    return d_func()->tableModel()->QAbstractTableModel::dropMimeData(data, action , row, column, idx);
    26002582}
    26012583
     
    26072589Qt::DropActions QTableWidget::supportedDropActions() const
    26082590{
    2609     return d_func()->model()->QAbstractTableModel::supportedDropActions() | Qt::MoveAction;
     2591    return d_func()->tableModel()->QAbstractTableModel::supportedDropActions() | Qt::MoveAction;
    26102592}
    26112593
     
    26312613{
    26322614    Q_D(const QTableWidget);
    2633     return d->model()->index(item);
     2615    return d->tableModel()->index(item);
    26342616}
    26352617
     
    26412623{
    26422624    Q_D(const QTableWidget);
    2643     return d->model()->item(index);
     2625    return d->tableModel()->item(index);
    26442626}
    26452627
Note: See TracChangeset for help on using the changeset viewer.