From 35f07e0ad9ddcf9660f36d4b30d5627170951f71 Mon Sep 17 00:00:00 2001 From: Marius Bugge Monsen Date: Tue, 29 Sep 2009 15:56:09 +0200 Subject: Change to use string based role names. --- src/experimental/qkineticlistcontroller.cpp | 4 +- src/qdataroles_p.h | 16 +++++--- src/qgraphicsheader.cpp | 22 +++++------ src/qgraphicsheader.h | 2 +- src/qgraphicsheader_p.h | 4 +- src/qgraphicslistview.cpp | 58 ++++++++++++++-------------- src/qgraphicslistview.h | 27 +++++++++---- src/qgraphicslistview_p.h | 6 +-- src/qgraphicstableview.cpp | 52 ++++++++++++------------- src/qgraphicstableview.h | 10 ++--- src/qgraphicstableview_p.h | 6 +-- src/qgraphicstreeview.cpp | 40 +++++++++---------- src/qgraphicstreeview.h | 24 ++++++++---- src/qgraphicstreeview_p.h | 6 +-- src/qlistdefaultmodel.cpp | 22 +++++------ src/qlistdefaultmodel.h | 60 ++++++++++++++--------------- src/qlistfromtreeadaptor.cpp | 11 +++--- src/qlistfromtreeadaptor.h | 6 +-- src/qlistfromtreeadaptor_p.h | 2 +- src/qlistmodeladaptor.cpp | 20 ++++++---- src/qlistmodeladaptor.h | 4 +- src/qlistmodelinterface.cpp | 12 +----- src/qlistmodelinterface.h | 7 ++-- src/qtablecontroller.cpp | 8 ++-- src/qtabledefaultmodel.cpp | 28 +++++++------- src/qtabledefaultmodel.h | 60 ++++++++++++++--------------- src/qtablemodeladaptor.cpp | 23 ++++++----- src/qtablemodeladaptor.h | 4 +- src/qtablemodelinterface.cpp | 10 +---- src/qtablemodelinterface.h | 7 ++-- src/qtreecontroller.cpp | 8 ++-- src/qtreedefaultmodel.cpp | 26 ++++++------- src/qtreedefaultmodel.h | 56 +++++++++++++-------------- src/qtreemodeladaptor.cpp | 23 ++++++----- src/qtreemodeladaptor.h | 4 +- src/qtreemodelbase.h | 16 ++++---- src/qtreemodelinterface.h | 12 +++--- 37 files changed, 365 insertions(+), 341 deletions(-) (limited to 'src') diff --git a/src/experimental/qkineticlistcontroller.cpp b/src/experimental/qkineticlistcontroller.cpp index 5fca8b5..312c991 100644 --- a/src/experimental/qkineticlistcontroller.cpp +++ b/src/experimental/qkineticlistcontroller.cpp @@ -49,7 +49,9 @@ bool QtKineticListControllerPrivate::updateOffset() qreal offset = view->offset(); qreal max = view->maximumOffset(); bool cont = kineticUpdateOffset(&offset, max); - view->setOffset(overshoot ? offset : qBound(0, offset, max)); + qreal value = overshoot ? offset : qBound(0, offset, max); + view->setOffset(value); + qDebug() << "value" << value; return cont; } diff --git a/src/qdataroles_p.h b/src/qdataroles_p.h index 6eb8f5a..7c37584 100644 --- a/src/qdataroles_p.h +++ b/src/qdataroles_p.h @@ -75,16 +75,22 @@ public: UserRole = 32 }; - static QHash roles() { - QHash roles; + static QByteArray key(int value) { const QMetaObject &metaObject = QtDataRoles().staticMetaObject;//static_cast(0)->staticQtMetaObject; const int index = metaObject.indexOfEnumerator("ItemDataRole"); if (index == -1) qWarning() << "QtDataRoles: could not find ItemDataRoles enumerator"; const QMetaEnum metaEnum = metaObject.enumerator(index); - for (int i = 0; i < metaEnum.keyCount(); ++i) - roles.insert(metaEnum.value(i), metaEnum.key(i)); - return roles; + return metaEnum.key(value); + } + + static int value(const QByteArray &name) { + const QMetaObject &metaObject = QtDataRoles().staticMetaObject;//static_cast(0)->staticQtMetaObject; + const int index = metaObject.indexOfEnumerator("ItemDataRole"); + if (index == -1) + qWarning() << "QtDataRoles: could not find ItemDataRoles enumerator"; + const QMetaEnum metaEnum = metaObject.enumerator(index); + return metaEnum.keyToValue(name); } }; diff --git a/src/qgraphicsheader.cpp b/src/qgraphicsheader.cpp index 75bb858..2e0fa5c 100644 --- a/src/qgraphicsheader.cpp +++ b/src/qgraphicsheader.cpp @@ -610,18 +610,18 @@ void QtGraphicsHeaderPrivate::setSectionMode(int visualIndex, uint mode) // #### sectionModeSpans.setValue(visualIndex, mode); } -QVariant QtGraphicsHeaderPrivate::data(int logicalIndex, int role) const +QVariant QtGraphicsHeaderPrivate::data(int logicalIndex, const QByteArray &role) const { // ### structure this list so the most used items are added first - static const QList roles = (QList() - //<< Qt::FontRole - //<< Qt::TextAlignmentRole - //<< Qt::ForegroundRole - //<< Qt::CheckStateRole - << Qt::DecorationRole - << Qt::DisplayRole); + static const QList roles = (QList() + //<< "FontRole" + //<< "TextAlignmentRole" + //<< "ForegroundRole" + //<< "CheckStateRole" + << "DecorationRole" + << "DisplayRole"); if (!dataProvider) - return (role == Qt::DisplayRole ? logicalIndex : QVariant()); + return (role == "DisplayRole" ? logicalIndex : QVariant()); if (logicalIndex != cachedDataIndex) { cachedDataHash = dataProvider->data(logicalIndex, roles); cachedDataIndex = logicalIndex; @@ -1494,8 +1494,8 @@ void QtGraphicsHeader::initStyleOption(QStyleOptionHeader *option, int logicalIn // section data - option->icon = qvariant_cast(d->data(logicalIndex, Qt::DecorationRole)); - option->text = qvariant_cast(d->data(logicalIndex, Qt::DisplayRole)); + option->icon = qvariant_cast(d->data(logicalIndex, "DecorationRole")); + option->text = qvariant_cast(d->data(logicalIndex, "DisplayRole")); } /*! diff --git a/src/qgraphicsheader.h b/src/qgraphicsheader.h index 777f06e..e47b31d 100644 --- a/src/qgraphicsheader.h +++ b/src/qgraphicsheader.h @@ -47,7 +47,7 @@ class Q_ITEMVIEWSNG_EXPORT QtGraphicsHeaderDataProvider { public: virtual ~QtGraphicsHeaderDataProvider(); - virtual QHash data(int logicalIndex, const QList &roles) const = 0; + virtual QHash data(int logicalIndex, const QList &roles) const = 0; }; class Q_ITEMVIEWSNG_EXPORT QtGraphicsHeader : public QGraphicsWidget diff --git a/src/qgraphicsheader_p.h b/src/qgraphicsheader_p.h index 52c6200..64e476b 100644 --- a/src/qgraphicsheader_p.h +++ b/src/qgraphicsheader_p.h @@ -158,10 +158,10 @@ public: //void resizeSectionsStretch(); //void resizeSections(); - QVariant data(int logicalIndex, int role) const; + QVariant data(int logicalIndex, const QByteArray &role) const; QtGraphicsHeaderDataProvider *dataProvider; - mutable QHash cachedDataHash; + mutable QHash cachedDataHash; mutable int cachedDataIndex; Qt::Orientation orientation; diff --git a/src/qgraphicslistview.cpp b/src/qgraphicslistview.cpp index 5f10627..480f47f 100644 --- a/src/qgraphicslistview.cpp +++ b/src/qgraphicslistview.cpp @@ -70,7 +70,7 @@ QtGraphicsListViewItem::QtGraphicsListViewItem(int index, QtGraphicsListView *vi : QGraphicsWidget(view, 0), d_ptr(new QtGraphicsListViewItemPrivate) { Q_D(QtGraphicsListViewItem); - setCacheMode(QGraphicsObject::ItemCoordinateCache); + //setCacheMode(QGraphicsObject::ItemCoordinateCache); setSizePolicy(QSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred)); d->q_ptr = this; d->view = view; @@ -104,7 +104,7 @@ void QtGraphicsListViewItem::setIndex(int index) Q_D(QtGraphicsListViewItem); if (d->index != index) { d->index = index; - itemChanged(QList()); + itemChanged(QList()); } } @@ -131,7 +131,7 @@ QSizeF QtGraphicsListViewItem::sizeHint(Qt::SizeHint which, const QSizeF &constr case Qt::MinimumSize: return QSizeF(0, 0); case Qt::PreferredSize: { - const QVariant value = d->view->d_func()->cachedData(d->index, Qt::SizeHintRole); + const QVariant value = d->view->d_func()->cachedData(d->index, "SizeHintRole"); if (value.isValid()) return qvariant_cast(value); else @@ -171,7 +171,7 @@ void QtGraphicsListViewItem::paint(QPainter *painter, const QStyleOptionGraphics \sa QtListModelInterface::itemsChanged() */ -void QtGraphicsListViewItem::itemChanged(const QList &roles) +void QtGraphicsListViewItem::itemChanged(const QList &roles) { Q_UNUSED(roles); update(); @@ -181,12 +181,12 @@ void QtGraphicsListViewItem::itemChanged(const QList &roles) Returns the data for the given \a roles, for the list model item this view item represents. */ -QHash QtGraphicsListViewItem::data(const QList &roles) const +QHash QtGraphicsListViewItem::data(const QList &roles) const { Q_D(const QtGraphicsListViewItem); if (d->view && d->view->model()) return d->view->model()->data(d->index, roles); - return QHash(); + return QHash(); } /*! @@ -218,36 +218,36 @@ void QtGraphicsListViewItem::initStyleOption(QStyleOptionViewItemV4 *option) con QVariant value; // FontRole - value = d->view->d_func()->cachedData(d->index, Qt::FontRole); + value = d->view->d_func()->cachedData(d->index, "FontRole"); if (value.isValid() && !value.isNull()) { option->font = qvariant_cast(value).resolve(option->font); option->fontMetrics = QFontMetrics(option->font); } // TextAlignmentRole - value = d->view->d_func()->cachedData(d->index, Qt::TextAlignmentRole); + value = d->view->d_func()->cachedData(d->index, "TextAlignmentRole"); if (value.isValid() && !value.isNull()) option->displayAlignment = (Qt::Alignment)value.toInt(); // ForegroundRole - value = d->view->d_func()->cachedData(d->index, Qt::ForegroundRole); + value = d->view->d_func()->cachedData(d->index, "ForegroundRole"); if (qVariantCanConvert(value)) option->palette.setBrush(QPalette::Text, qvariant_cast(value)); // BackgroundRole - value = d->view->d_func()->cachedData(d->index, Qt::BackgroundRole); + value = d->view->d_func()->cachedData(d->index, "BackgroundRole"); if (qVariantCanConvert(value)) option->palette.setBrush(QPalette::Background, qvariant_cast(value)); // CheckStateRole - value = d->view->d_func()->cachedData(d->index, Qt::CheckStateRole); + value = d->view->d_func()->cachedData(d->index, "CheckStateRole"); if (value.isValid()) { option->features |= QStyleOptionViewItemV2::HasCheckIndicator; option->checkState = static_cast(value.toInt()); } // DecorationRole - value = d->view->d_func()->cachedData(d->index, Qt::DecorationRole); + value = d->view->d_func()->cachedData(d->index, "DecorationRole"); if (value.isValid()) { option->features |= QStyleOptionViewItemV2::HasDecoration; switch (value.type()) { @@ -264,7 +264,7 @@ void QtGraphicsListViewItem::initStyleOption(QStyleOptionViewItemV4 *option) con } // DisplayRole - value = d->view->d_func()->cachedData(d->index, Qt::DisplayRole); + value = d->view->d_func()->cachedData(d->index, "DisplayRole"); if (value.isValid()) { option->features |= QStyleOptionViewItemV2::HasDisplay; switch (value.type()) { @@ -339,7 +339,7 @@ QtGraphicsListViewItemCreatorBase::~QtGraphicsListViewItemCreatorBase() /*! Updates the given \a item, with the given \a index, using the given \a roles. */ -void QtGraphicsListViewItemCreatorBase::update(int index, QGraphicsObject *item, const QList &roles) +void QtGraphicsListViewItemCreatorBase::update(int index, QGraphicsObject *item, const QList &roles) { Q_UNUSED(index); Q_UNUSED(roles); @@ -415,7 +415,7 @@ void QtGraphicsListViewPrivate::_q_selectionsDestroyed() /*! \internal */ -void QtGraphicsListViewPrivate::_q_itemsChanged(int index, int count, const QList &roles) +void QtGraphicsListViewPrivate::_q_itemsChanged(int index, int count, const QList &roles) { //Q_Q(QtGraphicsListView); checkCache(index, count); @@ -523,17 +523,17 @@ void QtGraphicsListViewPrivate::checkCache(int index, int count) /*! \internal */ -QVariant QtGraphicsListViewPrivate::cachedData(int index, int role) const +QVariant QtGraphicsListViewPrivate::cachedData(int index, const QByteArray &role) const { // ### structure this list so the most used items are added first - static const QList roles = (QList() - << Qt::FontRole - << Qt::TextAlignmentRole - << Qt::ForegroundRole - << Qt::CheckStateRole - << Qt::DecorationRole - << Qt::DisplayRole - << Qt::SizeHintRole); + static const QList roles = (QList() + << "FontRole" + << "TextAlignmentRole" + << "ForegroundRole" + << "CheckStateRole" + << "DecorationRole" + << "DisplayRole" + << "SizeHintRole"); if (index != cachedDataIndex && model) { cachedDataHash = model->data(index, roles); cachedDataIndex = index; @@ -672,14 +672,14 @@ void QtGraphicsListView::setModel(QtListModelInterface *model) return; if (d->model) { disconnect(d->model, SIGNAL(destroyed()), this, SLOT(_q_modelDestroyed())); - disconnect(d->model, SIGNAL(itemsChanged(int,int,const QList&)), this, SLOT(_q_itemsChanged(int,int,const QList&))); + disconnect(d->model, SIGNAL(itemsChanged(int,int,const QList&)), this, SLOT(_q_itemsChanged(int,int,const QList&))); disconnect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(_q_itemsInserted(int,int))); disconnect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(_q_itemsRemoved(int,int))); } d->model = model; if (d->model) { connect(d->model, SIGNAL(destroyed()), this, SLOT(_q_modelDestroyed())); - connect(d->model, SIGNAL(itemsChanged(int,int,const QList&)), this, SLOT(_q_itemsChanged(int,int,const QList&))); + connect(d->model, SIGNAL(itemsChanged(int,int,const QList&)), this, SLOT(_q_itemsChanged(int,int,const QList&))); connect(d->model, SIGNAL(itemsInserted(int,int)), this, SLOT(_q_itemsInserted(int,int))); connect(d->model, SIGNAL(itemsRemoved(int,int)), this, SLOT(_q_itemsRemoved(int,int))); } @@ -917,7 +917,8 @@ void QtGraphicsListView::doLayout() // the visible area starts at coordinate == 0 if (coordinate < 0) { // the cached offset was above or to the left of the visible area while (index < count) { - const QSizeF hint = d->itemSize(index); + /*const*/ QSizeF hint = d->itemSize(index); + hint.setHeight(30); // ### const qreal size = vertical ? hint.height() : hint.width(); if (coordinate + size > areaStart) break; @@ -926,7 +927,8 @@ void QtGraphicsListView::doLayout() } } else if (coordinate > 0) { // the cached offset was below or to the right while (index >= 0 && coordinate > 0) { - const QSizeF hint = d->itemSize(index); + /*const*/ QSizeF hint = d->itemSize(index); + hint.setHeight(30); // ### const qreal size = vertical ? hint.height() : hint.width(); coordinate -= size; --index; diff --git a/src/qgraphicslistview.h b/src/qgraphicslistview.h index bf3aa17..1fa2602 100644 --- a/src/qgraphicslistview.h +++ b/src/qgraphicslistview.h @@ -60,10 +60,10 @@ public: virtual QSizeF sizeHint(Qt::SizeHint which = Qt::PreferredSize, const QSizeF &constraint = QSizeF()) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); - virtual void itemChanged(const QList &roles = QList()); + virtual void itemChanged(const QList &roles = QList()); virtual void initStyleOption(QStyleOptionViewItemV4 *option) const; - QHash data(const QList &roles = QList()) const; + QHash data(const QList &roles = QList()) const; QtGraphicsListView *view() const; protected: @@ -80,7 +80,7 @@ public: virtual ~QtGraphicsListViewItemCreatorBase(); virtual QGraphicsObject *create(int index, QtGraphicsListView *view) = 0; virtual QGraphicsObject *reassign(int index, QGraphicsObject *item, QtGraphicsListView *view) = 0; - virtual void update(int index, QGraphicsObject *item, const QList &roles); + virtual void update(int index, QGraphicsObject *item, const QList &roles); virtual void recycle(QGraphicsObject *item); }; @@ -88,10 +88,21 @@ template class QtGraphicsListViewItemCreator : public QtGraphicsListViewItemCreatorBase { public: - ~QtGraphicsListViewItemCreator(); - QGraphicsObject *create(int index, QtGraphicsListView *view); - QGraphicsObject *reassign(int index, QGraphicsObject *item, QtGraphicsListView *view); - void update(int index, QGraphicsObject *item, const QList &roles); + inline QGraphicsObject *create(int index, QtGraphicsListView *view) + { + return new T(index, view); + } + inline QGraphicsObject *reassign(int index, QGraphicsObject *item, QtGraphicsListView *view) + { + Q_UNUSED(view); + static_cast(item)->setIndex(index); + return item; + } + inline void update(int index, QGraphicsObject *item, const QList &roles) + { + Q_UNUSED(index); + static_cast(item)->itemChanged(roles); + } }; template @@ -195,7 +206,7 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_controllerDestroyed()) Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed()) Q_PRIVATE_SLOT(d_func(), void _q_selectionsDestroyed()) - Q_PRIVATE_SLOT(d_func(), void _q_itemsChanged(int index, int count, const QList &roles)) + Q_PRIVATE_SLOT(d_func(), void _q_itemsChanged(int index, int count, const QList &roles)) Q_PRIVATE_SLOT(d_func(), void _q_itemsInserted(int index, int count)) Q_PRIVATE_SLOT(d_func(), void _q_itemsRemoved(int index, int count)) Q_PRIVATE_SLOT(d_func(), void _q_selectionsChanged(const QtListSelectionChange &change)) diff --git a/src/qgraphicslistview_p.h b/src/qgraphicslistview_p.h index 2c94f32..fe87578 100644 --- a/src/qgraphicslistview_p.h +++ b/src/qgraphicslistview_p.h @@ -67,7 +67,7 @@ public: void _q_modelDestroyed(); void _q_selectionsDestroyed(); - void _q_itemsChanged(int index, int count, const QList &roles); + void _q_itemsChanged(int index, int count, const QList &roles); void _q_itemsInserted(int index, int count); void _q_itemsRemoved(int index, int count); void _q_reset(); @@ -77,7 +77,7 @@ public: void checkCache(int index, int count); - QVariant cachedData(int index, int role) const; + QVariant cachedData(int index, const QByteArray &role) const; bool isSelected(int index) const; int currentItem() const; @@ -102,7 +102,7 @@ public: mutable qreal cachedCoordinateOffset; #endif - mutable QHash cachedDataHash; + mutable QHash cachedDataHash; mutable int cachedDataIndex; QList > items; diff --git a/src/qgraphicstableview.cpp b/src/qgraphicstableview.cpp index 3e1b15a..2d45081 100644 --- a/src/qgraphicstableview.cpp +++ b/src/qgraphicstableview.cpp @@ -66,7 +66,7 @@ void QtGraphicsTableViewItem::setCell(int row, int column) if (d->row != row || d->column != column) { d->row = row; d->column = column; - itemChanged(QList()); + itemChanged(QList()); } } @@ -97,7 +97,7 @@ QSizeF QtGraphicsTableViewItem::sizeHint(int row, int column, const QStyleOption case Qt::MinimumSize: return QSizeF(1, 1); case Qt::PreferredSize: { - const QVariant value = d->view->d_func()->cachedData(row, column, Qt::SizeHintRole); + const QVariant value = d->view->d_func()->cachedData(row, column, "SizeHintRole"); if (value.isValid()) return qvariant_cast(value); return d->view->style()->sizeFromContents(QStyle::CT_ItemViewItem, option, QSize(), option->widget); @@ -110,7 +110,7 @@ QSizeF QtGraphicsTableViewItem::sizeHint(int row, int column, const QStyleOption return QGraphicsWidget::sizeHint(which, constraint); } -void QtGraphicsTableViewItem::itemChanged(const QList &roles) +void QtGraphicsTableViewItem::itemChanged(const QList &roles) { Q_UNUSED(roles); // ### if the size changed, we need to let the layout know @@ -118,12 +118,12 @@ void QtGraphicsTableViewItem::itemChanged(const QList &roles) //update(); } -QHash QtGraphicsTableViewItem::data(const QList &roles) const +QHash QtGraphicsTableViewItem::data(const QList &roles) const { Q_D(const QtGraphicsTableViewItem); if (d->view && d->view->model()) return d->view->model()->data(d->row, d->column, roles); - return QHash(); + return QHash(); } QtGraphicsTableView *QtGraphicsTableViewItem::view() const @@ -189,7 +189,7 @@ void QtGraphicsTableViewItem::initStyleOption(QStyleOptionViewItemV4 *option) co QVariant value; // FontRole - value = d->view->d_func()->cachedData(d->row, d->column, Qt::FontRole); + value = d->view->d_func()->cachedData(d->row, d->column, "FontRole"); if (value.isValid()) { option->font = qvariant_cast(value).resolve(option->font); option->fontMetrics = QFontMetrics(option->font); @@ -198,21 +198,21 @@ void QtGraphicsTableViewItem::initStyleOption(QStyleOptionViewItemV4 *option) co } // TextAlignmentRole - value = d->view->d_func()->cachedData(d->row, d->column, Qt::TextAlignmentRole); + value = d->view->d_func()->cachedData(d->row, d->column, "TextAlignmentRole"); if (value.isValid()) option->displayAlignment = static_cast(value.toInt()); else option->displayAlignment = Qt::AlignLeft|Qt::AlignVCenter; // ForegroundRole - value = d->view->d_func()->cachedData(d->row, d->column, Qt::ForegroundRole); + value = d->view->d_func()->cachedData(d->row, d->column, "ForegroundRole"); if (qVariantCanConvert(value)) option->palette.setBrush(QPalette::Text, qvariant_cast(value)); else option->palette = QPalette(); // CheckStateRole - value = d->view->d_func()->cachedData(d->row, d->column, Qt::CheckStateRole); + value = d->view->d_func()->cachedData(d->row, d->column, "CheckStateRole"); if (value.isValid()) { option->features |= QStyleOptionViewItemV2::HasCheckIndicator; option->checkState = static_cast(value.toInt()); @@ -221,7 +221,7 @@ void QtGraphicsTableViewItem::initStyleOption(QStyleOptionViewItemV4 *option) co } // DecorationRole - value = d->view->d_func()->cachedData(d->row, d->column, Qt::DecorationRole); + value = d->view->d_func()->cachedData(d->row, d->column, "DecorationRole"); if (value.isValid()) { option->features |= QStyleOptionViewItemV2::HasDecoration; switch (value.type()) { @@ -240,7 +240,7 @@ void QtGraphicsTableViewItem::initStyleOption(QStyleOptionViewItemV4 *option) co } // DisplayRole - value = d->view->d_func()->cachedData(d->row, d->column, Qt::DisplayRole); + value = d->view->d_func()->cachedData(d->row, d->column, "DisplayRole"); if (value.isValid()) { option->features |= QStyleOptionViewItemV2::HasDisplay; switch (value.type()) { @@ -306,7 +306,7 @@ QtGraphicsTableViewItemCreatorBase::~QtGraphicsTableViewItemCreatorBase() { } -void QtGraphicsTableViewItemCreatorBase::update(int row, int column, QGraphicsObject *item, const QList &roles) +void QtGraphicsTableViewItemCreatorBase::update(int row, int column, QGraphicsObject *item, const QList &roles) { Q_UNUSED(row); Q_UNUSED(column); @@ -376,7 +376,7 @@ void QtGraphicsTableViewPrivate::_q_horizontalHeaderDestroyed() horizontalHeader = 0; } -void QtGraphicsTableViewPrivate::_q_cellsChanged(int firstRow, int firstColumn, int rowCount, int columnCount, const QList &roles) +void QtGraphicsTableViewPrivate::_q_cellsChanged(int firstRow, int firstColumn, int rowCount, int columnCount, const QList &roles) { Q_UNUSED(roles); // ### check if the headers need resizing @@ -503,17 +503,17 @@ void QtGraphicsTableViewPrivate::checkCache(int firstRow, int firstColumn, int r cachedDataHash.clear(); } -QVariant QtGraphicsTableViewPrivate::cachedData(int row, int column, int role) const +QVariant QtGraphicsTableViewPrivate::cachedData(int row, int column, const QByteArray &role) const { // ### structure this list so the most used items are added first - static const QList roles = (QList() - << Qt::FontRole - << Qt::TextAlignmentRole - << Qt::ForegroundRole - << Qt::CheckStateRole - << Qt::DecorationRole - << Qt::DisplayRole - << Qt::EditRole); + static const QList roles = (QList() + << "FontRole" + << "TextAlignmentRole" + << "ForegroundRole" + << "CheckStateRole" + << "DecorationRole" + << "DisplayRole" + << "EditRole"); if (!model) return QVariant(); if (row != cachedDataRow || column != cachedDataColumn) { @@ -601,8 +601,8 @@ void QtGraphicsTableView::setModel(QtTableModelInterface *model) if (d->model) { QObject::disconnect(d->model, SIGNAL(destroyed()), this, SLOT(_q_modelDestroyed())); - QObject::disconnect(d->model, SIGNAL(cellsChanged(int,int,int,int,const QList&)), - this, SLOT(_q_cellsChanged(int,int,int,int,const QList&))); + QObject::disconnect(d->model, SIGNAL(cellsChanged(int,int,int,int,const QList&)), + this, SLOT(_q_cellsChanged(int,int,int,int,const QList&))); QObject::disconnect(d->model, SIGNAL(rowsInserted(int,int)), this, SLOT(_q_rowsInserted(int,int))); QObject::disconnect(d->model, SIGNAL(rowsRemoved(int,int)), @@ -620,8 +620,8 @@ void QtGraphicsTableView::setModel(QtTableModelInterface *model) if (d->model) { QObject::connect(d->model, SIGNAL(destroyed()), this, SLOT(_q_modelDestroyed())); - QObject::connect(d->model, SIGNAL(cellsChanged(int,int,int,int,const QList&)), - this, SLOT(_q_cellsChanged(int,int,int,int,const QList&))); + QObject::connect(d->model, SIGNAL(cellsChanged(int,int,int,int,const QList&)), + this, SLOT(_q_cellsChanged(int,int,int,int,const QList&))); QObject::connect(d->model, SIGNAL(rowsInserted(int,int)), this, SLOT(_q_rowsInserted(int,int))); QObject::connect(d->model, SIGNAL(rowsRemoved(int,int)), diff --git a/src/qgraphicstableview.h b/src/qgraphicstableview.h index 870da4e..bf74a40 100644 --- a/src/qgraphicstableview.h +++ b/src/qgraphicstableview.h @@ -65,10 +65,10 @@ public: virtual QSizeF sizeHint(int row, int column, const QStyleOptionViewItemV4 *option, Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const; virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); - virtual void itemChanged(const QList &roles = QList()); + virtual void itemChanged(const QList &roles = QList()); virtual void initStyleOption(QStyleOptionViewItemV4 *option) const; - QHash data(const QList &roles = QList()) const; + QHash data(const QList &roles = QList()) const; QtGraphicsTableView *view() const; void copyStyleOptionState(const QStyleOptionGraphicsItem *source, QStyleOptionViewItemV4 *dest); @@ -87,7 +87,7 @@ public: virtual ~QtGraphicsTableViewItemCreatorBase(); virtual QGraphicsObject *create(int row, int column, QtGraphicsTableView *view) = 0; virtual QGraphicsObject *reassign(int row, int column, QGraphicsObject *item, QtGraphicsTableView *view) = 0; - virtual void update(int row, int column, QGraphicsObject *item, const QList &roles); + virtual void update(int row, int column, QGraphicsObject *item, const QList &roles); virtual void recycle(QGraphicsObject *item); }; @@ -102,7 +102,7 @@ public: static_cast(item)->setCell(row, column); return item; } - inline void update(int row, int column, QGraphicsObject *item, const QList &roles) + inline void update(int row, int column, QGraphicsObject *item, const QList &roles) { Q_UNUSED(row); Q_UNUSED(column); @@ -238,7 +238,7 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_selectionsDestroyed()) Q_PRIVATE_SLOT(d_func(), void _q_verticalHeaderDestroyed()) Q_PRIVATE_SLOT(d_func(), void _q_horizontalHeaderDestroyed()) - Q_PRIVATE_SLOT(d_func(), void _q_cellsChanged(int firstRow, int firstColumn, int rowCount, int columnCount, const QList &roles)) + Q_PRIVATE_SLOT(d_func(), void _q_cellsChanged(int firstRow, int firstColumn, int rowCount, int columnCount, const QList &roles)) Q_PRIVATE_SLOT(d_func(), void _q_selectionsChanged(const QList &change)) Q_PRIVATE_SLOT(d_func(), void _q_currentChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)) Q_PRIVATE_SLOT(d_func(), void _q_rowsInserted(int row, int count)) diff --git a/src/qgraphicstableview_p.h b/src/qgraphicstableview_p.h index 55bbeed..2c79c6e 100644 --- a/src/qgraphicstableview_p.h +++ b/src/qgraphicstableview_p.h @@ -75,7 +75,7 @@ public: void _q_verticalHeaderDestroyed(); void _q_horizontalHeaderDestroyed(); - void _q_cellsChanged(int firstRow, int firstColumn, int rowCount, int columnCount, const QList &roles); + void _q_cellsChanged(int firstRow, int firstColumn, int rowCount, int columnCount, const QList &roles); void _q_selectionsChanged(const QList &changed); void _q_currentChanged(int currentRow, int currentColumn, int previousRow, int previousColumn); @@ -92,7 +92,7 @@ public: void checkItems(int firstRow, int firstColumn, int rowCount, int columnCount); void checkCache(int firstRow, int firstColumn, int rowCount, int columnCount); - QVariant cachedData(int row, int column, int role) const; + QVariant cachedData(int row, int column, const QByteArray &role) const; QtTableController *controller; QtTableModelInterface *model; @@ -112,7 +112,7 @@ public: bool showGrid; // cached data - mutable QHash cachedDataHash; + mutable QHash cachedDataHash; mutable int cachedDataRow; mutable int cachedDataColumn; diff --git a/src/qgraphicstreeview.cpp b/src/qgraphicstreeview.cpp index 11ba520..a039b22 100644 --- a/src/qgraphicstreeview.cpp +++ b/src/qgraphicstreeview.cpp @@ -121,7 +121,7 @@ QSizeF QtGraphicsTreeViewItem::sizeHint(int column, const QStyleOptionViewItemV4 case Qt::MinimumSize: case Qt::PreferredSize: case Qt::MaximumSize: { - const QVariant value = view()->d_func()->cachedData(d->it, column, Qt::SizeHintRole); + const QVariant value = view()->d_func()->cachedData(d->it, column, "SizeHintRole"); if (value.isValid()) return qvariant_cast(value); else @@ -198,34 +198,34 @@ void QtGraphicsTreeViewItem::initStyleOption(QStyleOptionViewItemV4 *option, int QVariant value; // FontRole - value = d->view->d_func()->cachedData(d->it, column, Qt::FontRole); + value = d->view->d_func()->cachedData(d->it, column, "FontRole"); if (value.isValid()){ option->font = qvariant_cast(value).resolve(option->font); option->fontMetrics = QFontMetrics(option->font); } // TextAlignmentRole - value = d->view->d_func()->cachedData(d->it, column, Qt::TextAlignmentRole); + value = d->view->d_func()->cachedData(d->it, column, "TextAlignmentRole"); if (value.isValid()) option->displayAlignment = (Qt::Alignment)value.toInt(); else option->displayAlignment = 0; // ### default value // ForegroundRole - value = d->view->d_func()->cachedData(d->it, column, Qt::ForegroundRole); + value = d->view->d_func()->cachedData(d->it, column, "ForegroundRole"); if (qVariantCanConvert(value)) option->palette.setBrush(QPalette::Text, qvariant_cast(value)); // ### default value // CheckStateRole - value = d->view->d_func()->cachedData(d->it, column, Qt::CheckStateRole); + value = d->view->d_func()->cachedData(d->it, column, "CheckStateRole"); if (value.isValid()) { option->features |= QStyleOptionViewItemV2::HasCheckIndicator; option->checkState = static_cast(value.toInt()); } // DecorationRole - value = d->view->d_func()->cachedData(d->it, column, Qt::DecorationRole); + value = d->view->d_func()->cachedData(d->it, column, "DecorationRole"); if (value.isValid()) { option->features |= QStyleOptionViewItemV2::HasDecoration; switch (value.type()) { @@ -242,7 +242,7 @@ void QtGraphicsTreeViewItem::initStyleOption(QStyleOptionViewItemV4 *option, int } // DisplayRole - value = d->view->d_func()->cachedData(d->it, column, Qt::DisplayRole); + value = d->view->d_func()->cachedData(d->it, column, "DisplayRole"); if (value.isValid()) { option->features |= QStyleOptionViewItemV2::HasDisplay; switch (value.type()) { @@ -340,7 +340,7 @@ void QtGraphicsTreeViewItem::copyStyleOptionState(const QStyleOptionGraphicsItem } /*! */ -void QtGraphicsTreeViewItem::itemChanged(const QList &roles) +void QtGraphicsTreeViewItem::itemChanged(const QList &roles) { Q_UNUSED(roles); prepareGeometryChange(); @@ -349,7 +349,7 @@ void QtGraphicsTreeViewItem::itemChanged(const QList &roles) /*! */ -QHash QtGraphicsTreeViewItem::data(int column, const QList &roles) const +QHash QtGraphicsTreeViewItem::data(int column, const QList &roles) const { Q_D(const QtGraphicsTreeViewItem); return d->it.data(column, roles); @@ -367,7 +367,7 @@ QtGraphicsTreeViewItemCreatorBase::~QtGraphicsTreeViewItemCreatorBase() { } -void QtGraphicsTreeViewItemCreatorBase::update(const QtTreeModelIterator &it, QGraphicsObject *item, const QList &roles) +void QtGraphicsTreeViewItemCreatorBase::update(const QtTreeModelIterator &it, QGraphicsObject *item, const QList &roles) { Q_UNUSED(it); Q_UNUSED(roles); @@ -422,7 +422,7 @@ void QtGraphicsTreeViewPrivate::_q_headerDestroyed() header = 0; } -void QtGraphicsTreeViewPrivate::_q_itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles) +void QtGraphicsTreeViewPrivate::_q_itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles) { Q_UNUSED(it); Q_UNUSED(count); @@ -524,16 +524,16 @@ void QtGraphicsTreeViewPrivate::checkHeader(const QtTreeModelBase::iterator_base /*! \internal */ -QVariant QtGraphicsTreeViewPrivate::cachedData(const QtTreeModelBase::iterator_base &it, int column, int role) const +QVariant QtGraphicsTreeViewPrivate::cachedData(const QtTreeModelBase::iterator_base &it, int column, const QByteArray &role) const { // ### structure this list so the most used items are added first - static const QList roles = (QList() - << Qt::FontRole - << Qt::TextAlignmentRole - << Qt::ForegroundRole - << Qt::CheckStateRole - << Qt::DecorationRole - << Qt::DisplayRole); + static const QList roles = (QList() + << "FontRole" + << "TextAlignmentRole" + << "ForegroundRole" + << "CheckStateRole" + << "DecorationRole" + << "DisplayRole"); if (it != cachedDataItem || column != cachedDataColumn) { cachedDataHash = it.data(column, roles); cachedDataItem = it; @@ -756,7 +756,7 @@ qreal QtGraphicsTreeViewPrivate::itemHeight(QStyleOptionViewItemV4 &option, cons const int count = it.columnCount(); for (int column = 0; column < count; ++column) { //#### FIXME: q->initStyleOption(&option, it, column); - const QVariant value = cachedData(it, column, Qt::SizeHintRole); + const QVariant value = cachedData(it, column, "SizeHintRole"); const QSizeF size = (value.isValid() ? qvariant_cast(value) : q->style()->sizeFromContents(QStyle::CT_ItemViewItem, &option, QSize(), option.widget)); height = qMax(height, size.height()); diff --git a/src/qgraphicstreeview.h b/src/qgraphicstreeview.h index 650bf72..c97a28e 100644 --- a/src/qgraphicstreeview.h +++ b/src/qgraphicstreeview.h @@ -67,13 +67,13 @@ public: virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); virtual void paintBranches(QPainter *painter, QStyleOptionViewItemV4 *option, const QStack &stack); - virtual void itemChanged(const QList &roles = QList()); + virtual void itemChanged(const QList &roles = QList()); virtual void initStyleOption(QStyleOptionViewItemV4 *option, int column) const; virtual void initStyleOptionState(QStyleOptionViewItemV4 *option, const QtTreeModelIterator &it, int column) const; void copyStyleOptionState(const QStyleOptionGraphicsItem *source, QStyleOptionViewItemV4 *dest); - QHash data(int column = 0, const QList &roles = QList()) const; + QHash data(int column = 0, const QList &roles = QList()) const; QtGraphicsTreeView *view() const; protected: @@ -90,7 +90,7 @@ public: virtual ~QtGraphicsTreeViewItemCreatorBase(); virtual QGraphicsObject *create(const QtTreeModelIterator &it, QtGraphicsTreeView *view) = 0; virtual QGraphicsObject *reassign(const QtTreeModelIterator &it, QGraphicsObject *item, QtGraphicsTreeView *view) = 0; - virtual void update(const QtTreeModelIterator &it, QGraphicsObject *item, const QList &roles); + virtual void update(const QtTreeModelIterator &it, QGraphicsObject *item, const QList &roles); virtual void recycle(QGraphicsObject *item); }; @@ -98,10 +98,18 @@ template class QtGraphicsTreeViewItemCreator : public QtGraphicsTreeViewItemCreatorBase { public: - ~QtGraphicsTreeViewItemCreator(); - QGraphicsObject *create(const QtTreeModelIterator &it, QtGraphicsTreeView *view); - QGraphicsObject *reassign(const QtTreeModelIterator &it, QGraphicsObject *item, QtGraphicsTreeView *view); - void update(const QtTreeModelIterator &it, QGraphicsObject *item, const QList &roles); + inline QGraphicsObject *create(const QtTreeModelIterator &it, QtGraphicsTreeView *view) { return new T(it, view); } + inline QGraphicsObject *reassign(const QtTreeModelIterator &it, QGraphicsObject *item, QtGraphicsTreeView *view) + { + Q_UNUSED(view); + static_cast(item)->setIterator(it); + return item; + } + inline void update(const QtTreeModelIterator &it, QGraphicsObject *item, const QList &roles) + { + Q_UNUSED(it); + static_cast(item)->itemChanged(roles); + } }; template @@ -218,7 +226,7 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed()) Q_PRIVATE_SLOT(d_func(), void _q_selectionsDestroyed()) Q_PRIVATE_SLOT(d_func(), void _q_headerDestroyed()) - Q_PRIVATE_SLOT(d_func(), void _q_itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles)) + Q_PRIVATE_SLOT(d_func(), void _q_itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles)) Q_PRIVATE_SLOT(d_func(), void _q_itemsInserted(const QtTreeModelBase::iterator_base &it, int count)) Q_PRIVATE_SLOT(d_func(), void _q_itemsRemoved(const QtTreeModelBase::iterator_base &it, int count)) Q_PRIVATE_SLOT(d_func(), void _q_selectionsChanged(const QtTreeSelection &selection)) diff --git a/src/qgraphicstreeview_p.h b/src/qgraphicstreeview_p.h index 964866e..73144a2 100644 --- a/src/qgraphicstreeview_p.h +++ b/src/qgraphicstreeview_p.h @@ -105,7 +105,7 @@ public: void _q_selectionsDestroyed(); void _q_headerDestroyed(); - void _q_itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles); + void _q_itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles); void _q_itemsInserted(const QtTreeModelBase::iterator_base &it, int count); void _q_itemsRemoved(const QtTreeModelBase::iterator_base &it, int count); void _q_reset(); @@ -117,7 +117,7 @@ public: void checkMapping(const QtTreeModelBase::iterator_base &it, int count); void checkHeader(const QtTreeModelBase::iterator_base &it, int count); - QVariant cachedData(const QtTreeModelBase::iterator_base &it, int column, int role) const; + QVariant cachedData(const QtTreeModelBase::iterator_base &it, int column, const QByteArray &role) const; bool isCurrent(const QtTreeModelBase::iterator_base &it, int column) const; bool isSelected(const QtTreeModelBase::iterator_base &it, int column) const; bool isExpanded(const QtTreeModelBase::iterator_base &it) const; @@ -152,7 +152,7 @@ public: Qt::TextElideMode textElideMode; - mutable QHash cachedDataHash; + mutable QHash cachedDataHash; mutable QtTreeModelBase::iterator_base cachedDataItem; mutable int cachedDataColumn; diff --git a/src/qlistdefaultmodel.cpp b/src/qlistdefaultmodel.cpp index 1fff894..165f88c 100644 --- a/src/qlistdefaultmodel.cpp +++ b/src/qlistdefaultmodel.cpp @@ -29,7 +29,7 @@ class QtListDefaultItemPrivate { public: inline QtListDefaultItemPrivate() : model(0), index(-1) {} - QHash data; + QHash data; QtListDefaultModel *model; mutable int index; }; @@ -53,7 +53,7 @@ QtListDefaultItem::QtListDefaultItem() QtListDefaultItem::QtListDefaultItem(const QString &text) : d_ptr(new QtListDefaultItemPrivate) { - d_ptr->data.insert(Qt::DisplayRole, text); + d_ptr->data.insert("DisplayRole", text); } /*! @@ -83,7 +83,7 @@ void QtListDefaultItem::write(QDataStream &out) const /*! */ -QHash QtListDefaultItem::data(const QList &roles) const +QHash QtListDefaultItem::data(const QList &roles) const { Q_UNUSED(roles); return d_ptr->data; @@ -91,10 +91,10 @@ QHash QtListDefaultItem::data(const QList &roles) const /*! */ -void QtListDefaultItem::setData(const QHash &data) +void QtListDefaultItem::setData(const QHash &data) { - QList roles; - QHash::const_iterator it = data.constBegin(); + QList roles; + QHash::const_iterator it = data.constBegin(); for (; it != data.constEnd(); ++it) { d_ptr->data.insert(it.key(), it.value()); roles << it.key(); @@ -104,7 +104,7 @@ void QtListDefaultItem::setData(const QHash &data) /*! */ -void QtListDefaultItem::itemChanged(const QList &roles) +void QtListDefaultItem::itemChanged(const QList &roles) { if (d_ptr->model) d_ptr->model->itemChanged(this, roles); @@ -247,11 +247,11 @@ int QtListDefaultModel::count() const \sa setData() */ -QHash QtListDefaultModel::data(int index, const QList &roles) const +QHash QtListDefaultModel::data(int index, const QList &roles) const { if (const QtListDefaultItem *itm = item(index)) return itm->data(roles); - return QHash(); + return QHash(); } /*! @@ -260,7 +260,7 @@ QHash QtListDefaultModel::data(int index, const QList &roles) \sa data() */ -bool QtListDefaultModel::setData(int index, const QHash &values) +bool QtListDefaultModel::setData(int index, const QHash &values) { Q_D(QtListDefaultModel); if (index < 0 || index >= d->items.count()) @@ -338,7 +338,7 @@ void QtListDefaultModel::clear() /*! */ -void QtListDefaultModel::itemChanged(QtListDefaultItem *item, const QList &roles) +void QtListDefaultModel::itemChanged(QtListDefaultItem *item, const QList &roles) { if (item) { int index = indexOf(item); diff --git a/src/qlistdefaultmodel.h b/src/qlistdefaultmodel.h index 5d56600..2a49595 100644 --- a/src/qlistdefaultmodel.h +++ b/src/qlistdefaultmodel.h @@ -54,48 +54,48 @@ public: // data functions - virtual QHash data(const QList &roles) const; - virtual void setData(const QHash &data); + virtual QHash data(const QList &roles) const; + virtual void setData(const QHash &data); - inline QVariant data(int role) const { return data(QList() << role).value(role); } - inline void setData(const QVariant &data, int role) { QHash hash; hash.insert(role, data); setData(hash); } + inline QVariant data(const QByteArray &role) const { return data(QList() << role).value(role); } + inline void setData(const QVariant &data, const QByteArray &role) { QHash hash; hash.insert(role, data); setData(hash); } - inline QString text() const { return qvariant_cast(data(Qt::DisplayRole)); } - inline void setText(const QString &text) { setData(text, Qt::DisplayRole); } + inline QString text() const { return qvariant_cast(data("DisplayRole")); } + inline void setText(const QString &text) { setData(text, "DisplayRole"); } - inline QIcon icon() const { return qvariant_cast(data(Qt::DecorationRole)); } - inline void setIcon(const QIcon &icon) { setData(icon, Qt::DecorationRole); } + inline QIcon icon() const { return qvariant_cast(data("DecorationRole")); } + inline void setIcon(const QIcon &icon) { setData(icon, "DecorationRole"); } - inline QString statusTip() const { return qvariant_cast(data(Qt::StatusTipRole)); } - inline void setStatusTip(const QString &tip) { setData(tip, Qt::StatusTipRole); } + inline QString statusTip() const { return qvariant_cast(data("StatusTipRole")); } + inline void setStatusTip(const QString &tip) { setData(tip, "StatusTipRole"); } #ifndef QT_NO_TOOLTIP - inline QString toolTip() const { return qvariant_cast(data(Qt::ToolTipRole)); } - inline void setToolTip(const QString &tip) { setData(tip, Qt::ToolTipRole); } + inline QString toolTip() const { return qvariant_cast(data("ToolTipRole")); } + inline void setToolTip(const QString &tip) { setData(tip, "ToolTipRole"); } #endif #ifndef QT_NO_WHATSTHIS - inline QString whatsThis() const { return qvariant_cast(data(Qt::WhatsThisRole)); } - inline void setWhatsThis(const QString &what) { setData(what, Qt::WhatsThisRole); } + inline QString whatsThis() const { return qvariant_cast(data("WhatsThisRole")); } + inline void setWhatsThis(const QString &what) { setData(what, "WhatsThisRole"); } #endif - inline QFont font() const { return qvariant_cast(data(Qt::FontRole)); } - inline void setFont(const QFont &font) { setData(font, Qt::FontRole); } + inline QFont font() const { return qvariant_cast(data("FontRole")); } + inline void setFont(const QFont &font) { setData(font, "FontRole"); } - inline int textAlignment() const { return qvariant_cast(data(Qt::TextAlignmentRole)); } - inline void setTextAlignment(int alignment) { setData(alignment, Qt::TextAlignmentRole); } + inline int textAlignment() const { return qvariant_cast(data("TextAlignmentRole")); } + inline void setTextAlignment(int alignment) { setData(alignment, "TextAlignmentRole"); } - inline QBrush background() const { return qvariant_cast(data(Qt::BackgroundRole)); } - inline void setBackground(const QBrush &brush) { setData(brush, Qt::BackgroundRole); } + inline QBrush background() const { return qvariant_cast(data("BackgroundRole")); } + inline void setBackground(const QBrush &brush) { setData(brush, "BackgroundRole"); } - inline QBrush foreground() const { return qvariant_cast(data(Qt::ForegroundRole)); } - inline void setForeground(const QBrush &brush) { setData(brush, Qt::ForegroundRole); } + inline QBrush foreground() const { return qvariant_cast(data("ForegroundRole")); } + inline void setForeground(const QBrush &brush) { setData(brush, "ForegroundRole"); } - inline Qt::CheckState checkState() const { return static_cast(data(Qt::CheckStateRole).toInt()); } - inline void setCheckState(Qt::CheckState state) { setData(state, Qt::CheckStateRole); } + inline Qt::CheckState checkState() const { return static_cast(data("CheckStateRole").toInt()); } + inline void setCheckState(Qt::CheckState state) { setData(state, "CheckStateRole"); } - inline QSizeF sizeHint() const { return qvariant_cast(data(Qt::SizeHintRole)); } - inline void setSizeHint(const QSizeF &size) { setData(size, Qt::SizeHintRole); } + inline QSizeF sizeHint() const { return qvariant_cast(data("SizeHintRole")); } + inline void setSizeHint(const QSizeF &size) { setData(size, "SizeHintRole"); } protected: - void itemChanged(const QList &roles); + void itemChanged(const QList &roles); private: QtListDefaultItemPrivate *d_ptr; @@ -115,8 +115,8 @@ public: QtListDefaultItem *item(int index) const; int count() const; - QHash data(int index, const QList &roles) const; - bool setData(int index, const QHash &values); + QHash data(int index, const QList &roles) const; + bool setData(int index, const QHash &values); public Q_SLOTS: void appendItem(QtListDefaultItem *item); @@ -128,7 +128,7 @@ public Q_SLOTS: protected: QtListDefaultModel(QtListDefaultModelPrivate &, QObject *parent = 0); QtListDefaultModelPrivate *d_ptr; - void itemChanged(QtListDefaultItem *item, const QList &roles); + void itemChanged(QtListDefaultItem *item, const QList &roles); void itemDeleted(QtListDefaultItem *item); private: diff --git a/src/qlistfromtreeadaptor.cpp b/src/qlistfromtreeadaptor.cpp index 0759852..b43342a 100644 --- a/src/qlistfromtreeadaptor.cpp +++ b/src/qlistfromtreeadaptor.cpp @@ -24,6 +24,7 @@ #include "qlistfromtreeadaptor.h" #include "qlistfromtreeadaptor_p.h" #include "qtreemodelbase.h" +#include "qdataroles_p.h" QT_BEGIN_NAMESPACE @@ -95,7 +96,7 @@ void QtListFromTreeAdaptorPrivate::_q_itemsRemoved(const QtTreeModelBase::iterat \see QtListModelInterface::itemsChanged() */ void QtListFromTreeAdaptorPrivate::_q_itemsChanged(const QtTreeModelBase::iterator_base &it, int count, - const QList &roles) + const QList &roles) { Q_Q(QtListFromTreeAdaptor); @@ -288,12 +289,12 @@ int QtListFromTreeAdaptor::count() const /*! \see QtListModelInterface::data() */ -QHash QtListFromTreeAdaptor::data(int index, const QList &roles) const +QHash QtListFromTreeAdaptor::data(int index, const QList &roles) const { Q_D(const QtListFromTreeAdaptor); if (index < 0 || index >= count()) - return QHash(); + return QHash(); return d->iteratorAt(index).data(d->column, roles); } @@ -301,7 +302,7 @@ QHash QtListFromTreeAdaptor::data(int index, const QList &rol /*! \see QtListModelInterface::setData() */ -bool QtListFromTreeAdaptor::setData(int index, const QHash &values) +bool QtListFromTreeAdaptor::setData(int index, const QHash &values) { Q_D(const QtListFromTreeAdaptor); @@ -311,7 +312,7 @@ bool QtListFromTreeAdaptor::setData(int index, const QHash &values return false; if (it.isValid()) { - QHash oldValues = it.data(d->column); + QHash oldValues = it.data(d->column); it.setData(d->column, oldValues.unite(values)); } diff --git a/src/qlistfromtreeadaptor.h b/src/qlistfromtreeadaptor.h index 1810915..57c84b3 100644 --- a/src/qlistfromtreeadaptor.h +++ b/src/qlistfromtreeadaptor.h @@ -50,8 +50,8 @@ public: int column() const; int count() const; - QHash data(int index, const QList &roles) const; - bool setData(int index, const QHash &values); + QHash data(int index, const QList &roles) const; + bool setData(int index, const QHash &values); protected: QtListFromTreeAdaptor(QtListFromTreeAdaptorPrivate &, QObject *parent = 0); @@ -63,7 +63,7 @@ private: Q_PRIVATE_SLOT(d_func(), void _q_modelDestroyed()) Q_PRIVATE_SLOT(d_func(), void _q_itemsInserted(const QtTreeModelBase::iterator_base &,int)) Q_PRIVATE_SLOT(d_func(), void _q_itemsRemoved(const QtTreeModelBase::iterator_base &,int)) - Q_PRIVATE_SLOT(d_func(), void _q_itemsChanged(const QtTreeModelBase::iterator_base &,int,const QList &)) + Q_PRIVATE_SLOT(d_func(), void _q_itemsChanged(const QtTreeModelBase::iterator_base &,int,const QList &)) }; QT_END_NAMESPACE diff --git a/src/qlistfromtreeadaptor_p.h b/src/qlistfromtreeadaptor_p.h index e7b9662..e62fdfc 100644 --- a/src/qlistfromtreeadaptor_p.h +++ b/src/qlistfromtreeadaptor_p.h @@ -51,7 +51,7 @@ public: void _q_modelDestroyed(); void _q_itemsInserted(const QtTreeModelBase::iterator_base &it, int count); void _q_itemsRemoved(const QtTreeModelBase::iterator_base &it, int count); - void _q_itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles); + void _q_itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles); QtTreeModelBase::iterator_base iteratorAt(int index) const; diff --git a/src/qlistmodeladaptor.cpp b/src/qlistmodeladaptor.cpp index bd848d2..810055f 100644 --- a/src/qlistmodeladaptor.cpp +++ b/src/qlistmodeladaptor.cpp @@ -23,6 +23,7 @@ #include "qlistmodeladaptor.h" #include "qlistmodeladaptor_p.h" +#include "qdataroles_p.h" #include @@ -48,7 +49,7 @@ void QtListModelAdaptorPrivate::_q_dataChanged(const QModelIndex &topLeft, const // ### make sure that topLeft.parent() == d->root && bottomRight.parent() == d->root int index = topLeft.row(); int count = bottomRight.row() - topLeft.row() + 1; - emit q->itemsChanged(index, count, QList()); + emit q->itemsChanged(index, count, QList()); } void QtListModelAdaptorPrivate::_q_headerDataChanged(Qt::Orientation orientation, int first, int last) @@ -232,25 +233,28 @@ int QtListModelAdaptor::count() const return d->model && !d->empty ? d->model->rowCount(d->root) : 0; } -QHash QtListModelAdaptor::data(int index, const QList &roles) const +QHash QtListModelAdaptor::data(int index, const QList &roles) const { Q_D(const QtListModelAdaptor); - QHash values; + QHash values; if (d->model) { const QModelIndex idx = d->model->index(index, d->column, d->root); for (int i = 0; i < roles.count(); ++i) - values.insert(roles.at(i), d->model->data(idx, roles.at(i))); + values.insert(roles.at(i), d->model->data(idx, QtDataRoles::value(roles.at(i)))); } return values; } -bool QtListModelAdaptor::setData(int index, const QHash &values) +bool QtListModelAdaptor::setData(int index, const QHash &values) { Q_D(QtListModelAdaptor); - QHash::const_iterator it = values.begin(); - for (; it != values.end(); ++it) - if (!d->model->setData(d->model->index(index, d->column, d->root), it.value(), it.key())) + QHash::const_iterator it = values.begin(); + for (; it != values.end(); ++it) { + const QModelIndex idx = d->model->index(index, d->column, d->root); + int role = QtDataRoles::value(it.key()); + if (!d->model->setData(idx, it.value(), role)) return false; + } return true; } diff --git a/src/qlistmodeladaptor.h b/src/qlistmodeladaptor.h index 2c98416..6efbe5d 100644 --- a/src/qlistmodeladaptor.h +++ b/src/qlistmodeladaptor.h @@ -52,8 +52,8 @@ public: int column() const; int count() const; - QHash data(int index, const QList &roles) const; - bool setData(int index, const QHash &values); + QHash data(int index, const QList &roles) const; + bool setData(int index, const QHash &values); protected: QtListModelAdaptor(QtListModelAdaptorPrivate &, QObject *parent = 0); diff --git a/src/qlistmodelinterface.cpp b/src/qlistmodelinterface.cpp index 05923d1..825856f 100644 --- a/src/qlistmodelinterface.cpp +++ b/src/qlistmodelinterface.cpp @@ -22,7 +22,6 @@ ****************************************************************************/ #include "qlistmodelinterface.h" -#include "qdataroles_p.h" QT_BEGIN_NAMESPACE @@ -74,22 +73,13 @@ QtListModelInterface::~QtListModelInterface() The default implementation does not set the data, and will always return false. */ -bool QtListModelInterface::setData(int index, const QHash &values) +bool QtListModelInterface::setData(int index, const QHash &values) { Q_UNUSED(index); Q_UNUSED(values); return false; } -/*! - Returns the supported roles for this model. - */ -QHash QtListModelInterface::roles() const -{ - return QtDataRoles::roles(); - -} - /*! \fn QHash data(int index, const QList &roles = (QList())) const diff --git a/src/qlistmodelinterface.h b/src/qlistmodelinterface.h index bbe643b..3b44124 100644 --- a/src/qlistmodelinterface.h +++ b/src/qlistmodelinterface.h @@ -44,15 +44,14 @@ public: virtual ~QtListModelInterface(); virtual int count() const = 0; - virtual QHash data(int index, const QList &roles = (QList())) const = 0; - virtual bool setData(int index, const QHash &values); - virtual QHash roles() const; + virtual QHash data(int index, const QList &roles = (QList())) const = 0; + virtual bool setData(int index, const QHash &values); Q_SIGNALS: void itemsInserted(int index, int count); void itemsRemoved(int index, int count); void itemsMoved(int from, int to, int count); - void itemsChanged(int index, int count, const QList &roles); + void itemsChanged(int index, int count, const QList &roles); protected: QtListModelInterface(QObjectPrivate &dd, QObject *parent); diff --git a/src/qtablecontroller.cpp b/src/qtablecontroller.cpp index d3e1c4e..c2fc26b 100644 --- a/src/qtablecontroller.cpp +++ b/src/qtablecontroller.cpp @@ -47,13 +47,13 @@ class QTableHeaderDataProvider : public QtGraphicsHeaderDataProvider { public: QTableHeaderDataProvider() : model(0) {} - QHash data(int logicalIndex, const QList &roles) const + QHash data(int logicalIndex, const QList &roles) const { // ### call the model - temporary implementation - QHash hash; + QHash hash; for (int i = 0; i < roles.count(); ++i) - if (roles.at(i) == Qt::DisplayRole) - hash.insert(Qt::DisplayRole, logicalIndex + 1); + if (roles.at(i) == "DisplayRole") + hash.insert(roles.at(i), logicalIndex + 1); return hash; } QtTableModelInterface *model; diff --git a/src/qtabledefaultmodel.cpp b/src/qtabledefaultmodel.cpp index 6c93c34..6a83bd9 100644 --- a/src/qtabledefaultmodel.cpp +++ b/src/qtabledefaultmodel.cpp @@ -29,7 +29,7 @@ class QtTableDefaultItemPrivate { public: inline QtTableDefaultItemPrivate() : model(0), index(-1) {} - QHash data; + QHash data; QtTableDefaultModel *model; mutable int index; }; @@ -51,7 +51,7 @@ QtTableDefaultItem::QtTableDefaultItem() QtTableDefaultItem::QtTableDefaultItem(const QString &text) : d_ptr(new QtTableDefaultItemPrivate) { - d_ptr->data.insert(Qt::DisplayRole, text); + d_ptr->data.insert("DisplayRole", text); } /*! @@ -81,7 +81,7 @@ void QtTableDefaultItem::write(QDataStream &out) const /*! */ -QHash QtTableDefaultItem::data(const QList &roles) const +QHash QtTableDefaultItem::data(const QList &roles) const { /* QHash hash; @@ -96,10 +96,10 @@ QHash QtTableDefaultItem::data(const QList &roles) const /*! */ -void QtTableDefaultItem::setData(const QHash &data) +void QtTableDefaultItem::setData(const QHash &data) { - QList roles; - QHash::const_iterator it = data.constBegin(); + QList roles; + QHash::const_iterator it = data.constBegin(); for (; it != data.constEnd(); ++it) { d_ptr->data.insert(it.key(), it.value()); roles << it.key(); @@ -109,7 +109,7 @@ void QtTableDefaultItem::setData(const QHash &data) /*! */ -void QtTableDefaultItem::itemChanged(const QList &roles) +void QtTableDefaultItem::itemChanged(const QList &roles) { if (d_ptr->model) d_ptr->model->itemChanged(this, roles); @@ -412,22 +412,22 @@ void QtTableDefaultModel::setItem(int row, int column, QtTableDefaultItem *item) int index = d->index(row, column); item->d_ptr->index = index; d->cells[index] = item; - emit cellsChanged(row, column, 1, 1, QList()); + emit cellsChanged(row, column, 1, 1, QList()); } } /*! */ -QHash QtTableDefaultModel::data(int row, int column, const QList &roles) const +QHash QtTableDefaultModel::data(int row, int column, const QList &roles) const { if (const QtTableDefaultItem *itm = item(row, column)) return itm->data(roles); - return QHash(); + return QHash(); } /*! */ -bool QtTableDefaultModel::setData(int row, int column, const QHash &values) +bool QtTableDefaultModel::setData(int row, int column, const QHash &values) { Q_D(QtTableDefaultModel); int index = d->index(row, column); @@ -506,7 +506,7 @@ void QtTableDefaultModel::clearContents() { Q_D(QtTableDefaultModel); d->clearContents(); - emit cellsChanged(0, 0, d->rowCount, d->columnCount, QList()); + emit cellsChanged(0, 0, d->rowCount, d->columnCount, QList()); } /*! @@ -521,7 +521,7 @@ void QtTableDefaultModel::clear() /*! */ -void QtTableDefaultModel::itemChanged(QtTableDefaultItem *item, const QList &roles) +void QtTableDefaultModel::itemChanged(QtTableDefaultItem *item, const QList &roles) { if (item) { int row = itemRow(item); @@ -537,7 +537,7 @@ void QtTableDefaultModel::itemDeleted(QtTableDefaultItem *item) if (item) { int row = itemRow(item); int column = itemColumn(item); - emit cellsChanged(row, column, 1, 1, QList()); + emit cellsChanged(row, column, 1, 1, QList()); } } diff --git a/src/qtabledefaultmodel.h b/src/qtabledefaultmodel.h index d79075e..dd2083e 100644 --- a/src/qtabledefaultmodel.h +++ b/src/qtabledefaultmodel.h @@ -53,48 +53,48 @@ public: // data functions - virtual QHash data(const QList &roles) const; - virtual void setData(const QHash &data); + virtual QHash data(const QList &roles) const; + virtual void setData(const QHash &data); - inline QVariant data(int role) const { return data(QList() << role).value(role); } - inline void setData(const QVariant &data, int role) { QHash hash; hash.insert(role, data); setData(hash); } + inline QVariant data(const QByteArray &role) const { return data(QList() << role).value(role); } + inline void setData(const QVariant &data, const QByteArray &role) { QHash hash; hash.insert(role, data); setData(hash); } - inline QString text() const { return qvariant_cast(data(Qt::DisplayRole)); } - inline void setText(const QString &text) { setData(text, Qt::DisplayRole); } + inline QString text() const { return qvariant_cast(data("DisplayRole")); } + inline void setText(const QString &text) { setData(text, "DisplayRole"); } - inline QIcon icon() const { return qvariant_cast(data(Qt::DecorationRole)); } - inline void setIcon(const QIcon &icon) { setData(icon, Qt::DecorationRole); } + inline QIcon icon() const { return qvariant_cast(data("DecorationRole")); } + inline void setIcon(const QIcon &icon) { setData(icon, "DecorationRole"); } - inline QString statusTip() const { return qvariant_cast(data(Qt::StatusTipRole)); } - inline void setStatusTip(const QString &tip) { setData(tip, Qt::StatusTipRole); } + inline QString statusTip() const { return qvariant_cast(data("StatusTipRole")); } + inline void setStatusTip(const QString &tip) { setData(tip, "StatusTipRole"); } #ifndef QT_NO_TOOLTIP - inline QString toolTip() const { return qvariant_cast(data(Qt::ToolTipRole)); } - inline void setToolTip(const QString &tip) { setData(tip, Qt::ToolTipRole); } + inline QString toolTip() const { return qvariant_cast(data("ToolTipRole")); } + inline void setToolTip(const QString &tip) { setData(tip, "ToolTipRole"); } #endif #ifndef QT_NO_WHATSTHIS - inline QString whatsThis() const { return qvariant_cast(data(Qt::WhatsThisRole)); } - inline void setWhatsThis(const QString &what) { setData(what, Qt::WhatsThisRole); } + inline QString whatsThis() const { return qvariant_cast(data("WhatsThisRole")); } + inline void setWhatsThis(const QString &what) { setData(what, "WhatsThisRole"); } #endif - inline QFont font() const { return qvariant_cast(data(Qt::FontRole)); } - inline void setFont(const QFont &font) { setData(font, Qt::FontRole); } + inline QFont font() const { return qvariant_cast(data("FontRole")); } + inline void setFont(const QFont &font) { setData(font, "FontRole"); } - inline int textAlignment() const { return qvariant_cast(data(Qt::TextAlignmentRole)); } - inline void setTextAlignment(int alignment) { setData(alignment, Qt::TextAlignmentRole); } + inline int textAlignment() const { return qvariant_cast(data("TextAlignmentRole")); } + inline void setTextAlignment(int alignment) { setData(alignment, "TextAlignmentRole"); } - inline QBrush background() const { return qvariant_cast(data(Qt::BackgroundRole)); } - inline void setBackground(const QBrush &brush) { setData(brush, Qt::BackgroundRole); } + inline QBrush background() const { return qvariant_cast(data("BackgroundRole")); } + inline void setBackground(const QBrush &brush) { setData(brush, "BackgroundRole"); } - inline QBrush foreground() const { return qvariant_cast(data(Qt::ForegroundRole)); } - inline void setForeground(const QBrush &brush) { setData(brush, Qt::ForegroundRole); } + inline QBrush foreground() const { return qvariant_cast(data("ForegroundRole")); } + inline void setForeground(const QBrush &brush) { setData(brush, "ForegroundRole"); } - inline Qt::CheckState checkState() const { return static_cast(data(Qt::CheckStateRole).toInt()); } - inline void setCheckState(Qt::CheckState state) { setData(state, Qt::CheckStateRole); } + inline Qt::CheckState checkState() const { return static_cast(data("CheckStateRole").toInt()); } + inline void setCheckState(Qt::CheckState state) { setData(state, "CheckStateRole"); } - inline QSizeF sizeHint() const { return qvariant_cast(data(Qt::SizeHintRole)); } - inline void setSizeHint(const QSizeF &size) { setData(size, Qt::SizeHintRole); } + inline QSizeF sizeHint() const { return qvariant_cast(data("SizeHintRole")); } + inline void setSizeHint(const QSizeF &size) { setData(size, "SizeHintRole"); } protected: - void itemChanged(const QList &roles); + void itemChanged(const QList &roles); private: QtTableDefaultItemPrivate *d_ptr; @@ -127,8 +127,8 @@ public: // ### what about header labels ? - QHash data(int row, int column, const QList &roles) const; - bool setData(int row, int column, const QHash &values); + QHash data(int row, int column, const QList &roles) const; + bool setData(int row, int column, const QHash &values); public Q_SLOTS: void insertRow(int row); @@ -142,7 +142,7 @@ public Q_SLOTS: protected: QtTableDefaultModel(QtTableDefaultModelPrivate &, QObject *parent = 0); - void itemChanged(QtTableDefaultItem *item, const QList &roles); + void itemChanged(QtTableDefaultItem *item, const QList &roles); void itemDeleted(QtTableDefaultItem *item); QtTableDefaultModelPrivate *d_ptr; diff --git a/src/qtablemodeladaptor.cpp b/src/qtablemodeladaptor.cpp index 574b85c..a4eab28 100644 --- a/src/qtablemodeladaptor.cpp +++ b/src/qtablemodeladaptor.cpp @@ -23,6 +23,7 @@ #include "qtablemodeladaptor.h" #include "qtablemodeladaptor_p.h" +#include "qdataroles_p.h" #include @@ -50,7 +51,7 @@ void QtTableModelAdaptorPrivate::_q_dataChanged(const QModelIndex &topLeft, cons int column = topLeft.column(); int rowCount = bottomRight.row() - topLeft.row() + 1; int columnCount = bottomRight.column() - topLeft.column() + 1; - emit q->cellsChanged(row, column, rowCount, columnCount, QList()); + emit q->cellsChanged(row, column, rowCount, columnCount, QList()); } void QtTableModelAdaptorPrivate::_q_headerDataChanged(Qt::Orientation orientation, int first, int last) @@ -213,25 +214,29 @@ int QtTableModelAdaptor::columnCount() const return d->model ? d->model->columnCount(d->root) : 0; } -QHash QtTableModelAdaptor::data(int row, int column, const QList &roles) const +QHash QtTableModelAdaptor::data(int row, int column, const QList &roles) const { Q_D(const QtTableModelAdaptor); - QHash values; + QHash values; if (d->model) { const QModelIndex idx = d->model->index(row, column, d->root); - for (int i = 0; i < roles.count(); ++i) - values.insert(roles.at(i), d->model->data(idx, roles.at(i))); + for (int i = 0; i < roles.count(); ++i) { + int role = QtDataRoles::value(roles.at(i)); + values.insert(roles.at(i), d->model->data(idx, role)); + } } return values; } -bool QtTableModelAdaptor::setData(int row, int column, const QHash &values) +bool QtTableModelAdaptor::setData(int row, int column, const QHash &values) { Q_D(QtTableModelAdaptor); - QHash::const_iterator it = values.begin(); - for (; it != values.end(); ++it) - if (!d->model->setData(d->model->index(row, column, d->root), it.value(), it.key())) + QHash::const_iterator it = values.begin(); + for (; it != values.end(); ++it) { + int role = QtDataRoles::value(it.key()); + if (!d->model->setData(d->model->index(row, column, d->root), it.value(), role)) return false; + } return true; } diff --git a/src/qtablemodeladaptor.h b/src/qtablemodeladaptor.h index 44355ae..8c347e3 100644 --- a/src/qtablemodeladaptor.h +++ b/src/qtablemodeladaptor.h @@ -51,8 +51,8 @@ public: int rowCount() const; int columnCount() const; - QHash data(int row, int column, const QList &roles = QList()) const; - bool setData(int row, int column, const QHash &values); + QHash data(int row, int column, const QList &roles = QList()) const; + bool setData(int row, int column, const QHash &values); protected: QtTableModelAdaptor(QtTableModelAdaptorPrivate &, QObject *parent = 0); diff --git a/src/qtablemodelinterface.cpp b/src/qtablemodelinterface.cpp index ccdcfbc..7314999 100644 --- a/src/qtablemodelinterface.cpp +++ b/src/qtablemodelinterface.cpp @@ -52,7 +52,7 @@ QtTableModelInterface::~QtTableModelInterface() The default implementation does not set the data, and will always return false. */ -bool QtTableModelInterface::setData(int row, int column, const QHash &values) +bool QtTableModelInterface::setData(int row, int column, const QHash &values) { Q_UNUSED(row); Q_UNUSED(column); @@ -60,12 +60,4 @@ bool QtTableModelInterface::setData(int row, int column, const QHash QtTableModelInterface::roles() const -{ - return QtDataRoles::roles(); -} - QT_END_NAMESPACE diff --git a/src/qtablemodelinterface.h b/src/qtablemodelinterface.h index 379d518..39e4347 100644 --- a/src/qtablemodelinterface.h +++ b/src/qtablemodelinterface.h @@ -44,15 +44,14 @@ public: virtual int rowCount() const = 0; virtual int columnCount() const = 0; - virtual QHash data(int row, int column, const QList &roles = QList()) const = 0; - virtual bool setData(int row, int column, const QHash &values); - virtual QHash roles() const; + virtual QHash data(int row, int column, const QList &roles = QList()) const = 0; + virtual bool setData(int row, int column, const QHash &values); // ### we may need something along the lines of cacheHint() that gives the model an idea // ### of what can be kept, what can be thrown away and what needs to be fetched Q_SIGNALS: - void cellsChanged(int firstRow, int firstColumn, int rowCount, int columnCount, const QList &roles); + void cellsChanged(int firstRow, int firstColumn, int rowCount, int columnCount, const QList &roles); void rowsInserted(int row, int count); void rowsRemoved(int row, int count); void rowsMoved(int from, int to, int count); diff --git a/src/qtreecontroller.cpp b/src/qtreecontroller.cpp index 8a91c22..c7bdd51 100644 --- a/src/qtreecontroller.cpp +++ b/src/qtreecontroller.cpp @@ -41,13 +41,13 @@ class QTreeHeaderDataProvider : public QtGraphicsHeaderDataProvider { public: QTreeHeaderDataProvider() : model(0) {} - QHash data(int logicalIndex, const QList &roles) const + QHash data(int logicalIndex, const QList &roles) const { // ### call the model - temporary implementation - QHash hash; + QHash hash; for (int i = 0; i < roles.count(); ++i) - if (roles.at(i) == Qt::DisplayRole) - hash.insert(Qt::DisplayRole, logicalIndex + 1); + if (roles.at(i) == "DisplayRole") // ### FIXME + hash.insert(roles.at(i), logicalIndex + 1); return hash; } QtTreeModelBase *model; diff --git a/src/qtreedefaultmodel.cpp b/src/qtreedefaultmodel.cpp index a2578c6..08da717 100644 --- a/src/qtreedefaultmodel.cpp +++ b/src/qtreedefaultmodel.cpp @@ -30,7 +30,7 @@ QT_BEGIN_NAMESPACE struct QtTreeDefaultItemPrivate { QtTreeDefaultItemPrivate() : parent(0), previous(0), next(0), model(0) {} - QVector > data; + QVector > data; QtTreeDefaultItem *parent; QtTreeDefaultItem *previous; QtTreeDefaultItem *next; @@ -50,7 +50,7 @@ QtTreeDefaultItem::QtTreeDefaultItem(QtTreeDefaultItem *parent) d_ptr->parent = parent; d_ptr->parent->appendChild(this); } - d_ptr->data.append(QHash()); + d_ptr->data.append(QHash()); } /*! @@ -64,8 +64,8 @@ QtTreeDefaultItem::QtTreeDefaultItem(const QString &text, QtTreeDefaultItem *par d_ptr->parent = parent; d_ptr->parent->appendChild(this); } - d_ptr->data.append(QHash()); - d_ptr->data.last().insert(Qt::DisplayRole, text); + d_ptr->data.append(QHash()); + d_ptr->data.last().insert("DisplayRole", text); } /*! @@ -136,7 +136,7 @@ void QtTreeDefaultItem::setColumnCount(int count) if (d_ptr->data.count() != count) { d_ptr->data.resize(count); if (d_ptr->model) - d_ptr->model->itemChanged(this, QList()); + d_ptr->model->itemChanged(this, QList()); } } @@ -248,7 +248,7 @@ void QtTreeDefaultItem::write(QDataStream &out) const Returns the data for the item's \a column and \a roles. \sa setData() */ -QHash QtTreeDefaultItem::data(int column, const QList &roles) const +QHash QtTreeDefaultItem::data(int column, const QList &roles) const { /* QHash retval; @@ -265,7 +265,7 @@ QHash QtTreeDefaultItem::data(int column, const QList &roles) Returns the data for the item's \a column and \a role. \sa setData() */ -QVariant QtTreeDefaultItem::data(int column, int role) const +QVariant QtTreeDefaultItem::data(int column, const QByteArray &role) const { return d_ptr->data.value(column).value(role); } @@ -274,12 +274,12 @@ QVariant QtTreeDefaultItem::data(int column, int role) const Sets the value for the item's \a column and \a role to the given \a data. \sa data() */ -void QtTreeDefaultItem::setData(const QVariant &data, int column, int role) +void QtTreeDefaultItem::setData(const QVariant &data, int column, const QByteArray &role) { if (column >= 0 && column < d_ptr->data.count()) { d_ptr->data[column].insert(role, data); if (d_ptr->model) - d_ptr->model->itemChanged(this, QList() << role); + d_ptr->model->itemChanged(this, QList() << role); } } @@ -402,17 +402,17 @@ QtTreeDefaultItem *QtTreeDefaultModel::parentItem(QtTreeDefaultItem *item) const \internal \reimp */ -QHash QtTreeDefaultModel::data(QtTreeDefaultItem *item, int column, const QList &roles) const +QHash QtTreeDefaultModel::data(QtTreeDefaultItem *item, int column, const QList &roles) const { Q_D(const QtTreeDefaultModel); - return item && item != d->root ? item->data(column, roles) : QHash(); + return item && item != d->root ? item->data(column, roles) : QHash(); } /*! \internal \reimp */ -bool QtTreeDefaultModel::setData(const QVariant &data, QtTreeDefaultItem *item, int column, int role) +bool QtTreeDefaultModel::setData(const QVariant &data, QtTreeDefaultItem *item, int column, const QByteArray &role) { Q_D(const QtTreeDefaultModel); if (item && item != d->root) { @@ -506,7 +506,7 @@ void QtTreeDefaultModel::itemRemoved(QtTreeDefaultItem *item) \internal Report that an item has been changed by emitting the itemsChanged signal. */ -void QtTreeDefaultModel::itemChanged(QtTreeDefaultItem *item, const QList &roles) +void QtTreeDefaultModel::itemChanged(QtTreeDefaultItem *item, const QList &roles) { QtTreeDefaultModel::iterator it(item, this); emit itemsChanged(it, 1, roles); diff --git a/src/qtreedefaultmodel.h b/src/qtreedefaultmodel.h index aae5b0d..05b30cf 100644 --- a/src/qtreedefaultmodel.h +++ b/src/qtreedefaultmodel.h @@ -67,47 +67,47 @@ public: #endif // data functions - virtual QHash data(int column, const QList &roles) const; - virtual QVariant data(int column, int role) const; // ### - virtual void setData(const QVariant &data, int column, int role); // ### is the order of args ok ? + virtual QHash data(int column, const QList &roles) const; + virtual QVariant data(int column, const QByteArray &role) const; // ### + virtual void setData(const QVariant &data, int column, const QByteArray &role); // ### is the order of args ok ? // ### we should add // Qt::TextRole == Qt::DisplayRole // Qt::IconRole == Qt::DecorationRole - inline QString text(int column = 0) const { return qvariant_cast(data(column, Qt::DisplayRole)); } - inline void setText(const QString &text, int column = 0) { setData(text, column, Qt::DisplayRole); } + inline QString text(int column = 0) const { return qvariant_cast(data(column, "DisplayRole")); } + inline void setText(const QString &text, int column = 0) { setData(text, column, "DisplayRole"); } - inline QIcon icon(int column = 0) const { return qvariant_cast(data(column, Qt::DecorationRole)); } - inline void setIcon(const QIcon &icon, int column = 0) { setData(icon, column, Qt::DecorationRole); } + inline QIcon icon(int column = 0) const { return qvariant_cast(data(column, "DecorationRole")); } + inline void setIcon(const QIcon &icon, int column = 0) { setData(icon, column, "DecorationRole"); } - inline QString statusTip(int column = 0) const { return qvariant_cast(data(column, Qt::StatusTipRole)); } - inline void setStatusTip(const QString &tip, int column = 0) { setData(tip, column, Qt::StatusTipRole); } + inline QString statusTip(int column = 0) const { return qvariant_cast(data(column, "StatusTipRole")); } + inline void setStatusTip(const QString &tip, int column = 0) { setData(tip, column, "StatusTipRole"); } #ifndef QT_NO_TOOLTIP - inline QString toolTip(int column = 0) const { return qvariant_cast(data(column, Qt::ToolTipRole)); } - inline void setToolTip(const QString &tip, int column = 0) { setData(tip, column, Qt::ToolTipRole); } + inline QString toolTip(int column = 0) const { return qvariant_cast(data(column, "ToolTipRole")); } + inline void setToolTip(const QString &tip, int column = 0) { setData(tip, column, "ToolTipRole"); } #endif #ifndef QT_NO_WHATSTHIS - inline QString whatsThis(int column = 0) const { return qvariant_cast(data(column, Qt::WhatsThisRole)); } - inline void setWhatsThis(const QString &what, int column = 0) { setData(what, column, Qt::WhatsThisRole); } + inline QString whatsThis(int column = 0) const { return qvariant_cast(data(column, "WhatsThisRole")); } + inline void setWhatsThis(const QString &what, int column = 0) { setData(what, column, "WhatsThisRole"); } #endif - inline QFont font(int column = 0) const { return qvariant_cast(data(column, Qt::FontRole)); } - inline void setFont(const QFont &font, int column = 0) { setData(font, column, Qt::FontRole); } + inline QFont font(int column = 0) const { return qvariant_cast(data(column, "FontRole")); } + inline void setFont(const QFont &font, int column = 0) { setData(font, column, "FontRole"); } - inline int textAlignment(int column = 0) const { return qvariant_cast(data(column, Qt::TextAlignmentRole)); } - inline void setTextAlignment(int alignment, int column = 0) { setData(alignment, column, Qt::TextAlignmentRole); } + inline int textAlignment(int column = 0) const { return qvariant_cast(data(column, "TextAlignmentRole")); } + inline void setTextAlignment(int alignment, int column = 0) { setData(alignment, column, "TextAlignmentRole"); } - inline QBrush background(int column = 0) const { return qvariant_cast(data(column, Qt::BackgroundRole)); } - inline void setBackground(const QBrush &brush, int column = 0) { setData(brush, column, Qt::BackgroundRole); } + inline QBrush background(int column = 0) const { return qvariant_cast(data(column, "BackgroundRole")); } + inline void setBackground(const QBrush &brush, int column = 0) { setData(brush, column, "BackgroundRole"); } - inline QBrush foreground(int column = 0) const { return qvariant_cast(data(column, Qt::ForegroundRole)); } - inline void setForeground(const QBrush &brush, int column = 0) { setData(brush, column, Qt::ForegroundRole); } + inline QBrush foreground(int column = 0) const { return qvariant_cast(data(column, "ForegroundRole")); } + inline void setForeground(const QBrush &brush, int column = 0) { setData(brush, column, "ForegroundRole"); } - inline Qt::CheckState checkState(int column = 0) const { return static_cast(data(column, Qt::CheckStateRole).toInt()); } - inline void setCheckState(Qt::CheckState state, int column = 0) { setData(state, column, Qt::CheckStateRole); } + inline Qt::CheckState checkState(int column = 0) const { return static_cast(data(column, "CheckStateRole").toInt()); } + inline void setCheckState(Qt::CheckState state, int column = 0) { setData(state, column, "CheckStateRole"); } - inline QSizeF sizeHint(int column = 0) const { return qvariant_cast(data(column, Qt::SizeHintRole)); } - inline void setSizeHint(const QSizeF &size, int column = 0) { setData(size, column, Qt::SizeHintRole); } + inline QSizeF sizeHint(int column = 0) const { return qvariant_cast(data(column, "SizeHintRole")); } + inline void setSizeHint(const QSizeF &size, int column = 0) { setData(size, column, "SizeHintRole"); } private: QtTreeDefaultItemPrivate *d_ptr; @@ -133,8 +133,8 @@ protected: QtTreeDefaultItem *nextSibling(QtTreeDefaultItem *item) const; QtTreeDefaultItem *previousSibling(QtTreeDefaultItem *item) const; QtTreeDefaultItem *parentItem(QtTreeDefaultItem *item) const; - QHash data(QtTreeDefaultItem *item, int column, const QList &roles) const; - bool setData(const QVariant &data, QtTreeDefaultItem *item, int column, int role); + QHash data(QtTreeDefaultItem *item, int column, const QList &roles) const; + bool setData(const QVariant &data, QtTreeDefaultItem *item, int column, const QByteArray &role); bool isValid(QtTreeDefaultItem *item) const; int columnCount(QtTreeDefaultItem *item) const; @@ -147,7 +147,7 @@ protected: // other void itemInserted(QtTreeDefaultItem *item); void itemRemoved(QtTreeDefaultItem *item); - void itemChanged(QtTreeDefaultItem *item, const QList &roles); + void itemChanged(QtTreeDefaultItem *item, const QList &roles); protected: QtTreeDefaultModelPrivate *d_ptr; diff --git a/src/qtreemodeladaptor.cpp b/src/qtreemodeladaptor.cpp index 4b94e05..df9c670 100644 --- a/src/qtreemodeladaptor.cpp +++ b/src/qtreemodeladaptor.cpp @@ -23,6 +23,7 @@ #include "qtreemodeladaptor.h" #include "qtreemodeladaptor_p.h" +#include "qdataroles_p.h" #include @@ -47,7 +48,7 @@ void QtTreeModelAdaptorPrivate::_q_dataChanged(const QModelIndex &topLeft, const Q_Q(QtTreeModelAdaptor); QtTreeModelAdaptor::iterator it(QPersistentModelIndex(topLeft), q); int count = bottomRight.row() - topLeft.row(); - emit q->itemsChanged(it, count, QList()); + emit q->itemsChanged(it, count, QList()); } void QtTreeModelAdaptorPrivate::_q_headerDataChanged(Qt::Orientation orientation, int first, int last) @@ -213,27 +214,31 @@ QPersistentModelIndex QtTreeModelAdaptor::previousSibling(QPersistentModelIndex return t.sibling(t.row() - 1, 0); } -QHash QtTreeModelAdaptor::data(QPersistentModelIndex t, int column, const QList &roles) const +QHash QtTreeModelAdaptor::data(QPersistentModelIndex t, int column, const QList &roles) const { Q_D(const QtTreeModelAdaptor); - QHash values; + QHash values; if (d->model) { QModelIndex index = t.sibling(t.row(), column); - for (int i = 0; i < roles.count(); ++i) - values.insert(roles.at(i), d->model->data(index, roles.at(i))); + for (int i = 0; i < roles.count(); ++i) { + int role = QtDataRoles::value(roles.at(i)); + values.insert(roles.at(i), d->model->data(index, role)); + } } return values; } -bool QtTreeModelAdaptor::setData(QPersistentModelIndex t, int column, const QHash &values) +bool QtTreeModelAdaptor::setData(QPersistentModelIndex t, int column, const QHash &values) { Q_D(QtTreeModelAdaptor); if (!d->model) return false; - QHash::const_iterator it = values.begin(); - for (; it != values.end(); ++it) - if (!d->model->setData(t.sibling(t.row(), column), it.value(), it.key())) + QHash::const_iterator it = values.begin(); + for (; it != values.end(); ++it) { + int role = QtDataRoles::value(it.key()); + if (!d->model->setData(t.sibling(t.row(), column), it.value(), role)) return false; + } return true; } diff --git a/src/qtreemodeladaptor.h b/src/qtreemodeladaptor.h index c310b47..586ff0c 100644 --- a/src/qtreemodeladaptor.h +++ b/src/qtreemodeladaptor.h @@ -50,8 +50,8 @@ public: QPersistentModelIndex nextSibling(QPersistentModelIndex t) const; QPersistentModelIndex parentItem(QPersistentModelIndex t) const; QPersistentModelIndex previousSibling(QPersistentModelIndex t) const; - QHash data(QPersistentModelIndex t, int column, const QList &roles) const; - bool setData(QPersistentModelIndex t, int column, const QHash &values); + QHash data(QPersistentModelIndex t, int column, const QList &roles) const; + bool setData(QPersistentModelIndex t, int column, const QHash &values); bool hasChildren(QPersistentModelIndex t) const; bool isValid(QPersistentModelIndex t) const; diff --git a/src/qtreemodelbase.h b/src/qtreemodelbase.h index 61f41f7..803dd99 100644 --- a/src/qtreemodelbase.h +++ b/src/qtreemodelbase.h @@ -53,8 +53,8 @@ public: virtual void parent() = 0; virtual void previousSibling() = 0; virtual bool operator==(const navigator_base &other) const = 0; - virtual QHash data(int column, const QList &roles) const = 0; - virtual bool setData(int column, const QHash &values) = 0; + virtual QHash data(int column, const QList &roles) const = 0; + virtual bool setData(int column, const QHash &values) = 0; virtual bool isValid() const = 0; virtual int columnCount() const = 0; virtual bool hasChildren() const = 0; @@ -118,17 +118,17 @@ public: inline iterator_base &parent() { if (n) { detach(); n->parent(); } return *this; } inline iterator_base &previousSibling() { if (n) { detach(); n->previousSibling(); } return *this; } - inline QHash data(int column = 0, const QList &roles = (QList()< data(int column = 0, const QList &roles = (QList()<<"DisplayRole")) const { - return (n ? n->data(column, roles) : QHash()); + return (n ? n->data(column, roles) : QHash()); } - inline bool setData(int column, const QHash &values) + inline bool setData(int column, const QHash &values) { return (n ? n->setData(column, values) : false); } - inline bool setData(int column, const QVariant &value, int role) + inline bool setData(int column, const QVariant &value, const QByteArray &role) { - QHash values; + QHash values; values.insert(role, value); return setData(column, values); } @@ -160,7 +160,7 @@ public: Q_SIGNALS: void itemsInserted(const QtTreeModelBase::iterator_base &it, int count); void itemsRemoved(const QtTreeModelBase::iterator_base &it, int count); - void itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles); + void itemsChanged(const QtTreeModelBase::iterator_base &it, int count, const QList &roles); protected: QtTreeModelBase(QObjectPrivate &dd, QObject *parent) : QObject(dd, parent) {} diff --git a/src/qtreemodelinterface.h b/src/qtreemodelinterface.h index 26d129b..1aa7190 100644 --- a/src/qtreemodelinterface.h +++ b/src/qtreemodelinterface.h @@ -50,8 +50,8 @@ protected: void parent() { if (m) t = m->parentItem(t); } void previousSibling() { if (m) t = m->previousSibling(t); } bool operator==(const navigator_base &other) const { return (reinterpret_cast(&other)->t == t); } - QHash data(int column, const QList &roles) const { return m ? m->data(t, column, roles) : QHash(); } - bool setData(int column, const QHash &values) { return m ? m->setData(t, column, values) : false; } + QHash data(int column, const QList &roles) const { return m ? m->data(t, column, roles) : QHash(); } + bool setData(int column, const QHash &values) { return m ? m->setData(t, column, values) : false; } bool isValid() const { return m && m->isValid(t); } int columnCount() const { return m ? m->columnCount(t) : 0; } bool hasChildren() const { return m ? m->hasChildren(t) : false; } @@ -96,7 +96,7 @@ protected: inline const_iterator &nextSibling() { (void)iterator_base::nextSibling(); return *this; } inline const_iterator &parent() { (void)iterator_base::parent(); return *this; } inline const_iterator &previousSibling() { (void)iterator_base::previousSibling(); return *this; } - inline QHash data(int column = 0, const QList &roles = (QList()< data(int column = 0, const QList &roles = (QList()<<"DisplayRole")) const { return iterator_base::data(column, roles); } @@ -141,7 +141,7 @@ protected: virtual T nextSibling(T t) const = 0; // ### these may be hard to implement efficiently virtual T previousSibling(T t) const = 0; virtual T parentItem(T t) const = 0; // ### we can't use a stack, since we construct iterators for the signals - virtual QHash data(T t, int column, const QList &roles) const = 0; + virtual QHash data(T t, int column, const QList &roles) const = 0; virtual bool isValid(T t) const = 0; // ### no good default implementation // ### these are optional @@ -151,7 +151,7 @@ protected: virtual bool hasPreviousSibling(T t) const { return isValid(t) && isValid(const_cast(this)->previousSibling(t)); } virtual bool hasParent(T t) const { return isValid(t) && isValid(const_cast(this)->parentItem(t)); } virtual uint hash(T t) const { return qHash(t); } // ### needed for selections - virtual bool setData(T t, int column, const QHash &values) + virtual bool setData(T t, int column, const QHash &values) { Q_UNUSED(t); Q_UNUSED(column); Q_UNUSED(values); return false; @@ -159,7 +159,7 @@ protected: inline void itemsInserted(iterator &it, int count) { QtTreeModelBase::itemsInserted(it, count); } inline void itemsRemoved(iterator &it, int count) { QtTreeModelBase::itemsRemoved(it, count); } - inline void itemsChanged(iterator &it, int count, const QList &roles) { QtTreeModelBase::itemsChanged(it, count, roles); } + inline void itemsChanged(iterator &it, int count, const QList &roles) { QtTreeModelBase::itemsChanged(it, count, roles); } protected: // let the developers have access to the navigators QtTreeModelInterface(QObjectPrivate &dd, QObject *parent) : QtTreeModelBase(dd, parent) {} -- cgit v1.2.3