diff options
Diffstat (limited to 'src/corelib/itemmodels')
-rw-r--r-- | src/corelib/itemmodels/qabstractitemmodel.cpp | 58 | ||||
-rw-r--r-- | src/corelib/itemmodels/qabstractitemmodel.h | 10 | ||||
-rw-r--r-- | src/corelib/itemmodels/qabstractitemmodel_p.h | 2 | ||||
-rw-r--r-- | src/corelib/itemmodels/qitemselectionmodel.h | 11 | ||||
-rw-r--r-- | src/corelib/itemmodels/qsortfilterproxymodel.cpp | 35 |
5 files changed, 70 insertions, 46 deletions
diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp index d645205155..7fdf107383 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.cpp +++ b/src/corelib/itemmodels/qabstractitemmodel.cpp @@ -47,6 +47,7 @@ #include <qvector.h> #include <qstack.h> #include <qbitarray.h> +#include <qdatetime.h> #include <limits.h> @@ -363,7 +364,7 @@ quintptr QPersistentModelIndex::internalId() const Returns the parent QModelIndex for this persistent index, or an invalid QModelIndex if it has no parent. - \sa child(), sibling(), model() + \sa sibling(), model() */ QModelIndex QPersistentModelIndex::parent() const { @@ -376,7 +377,7 @@ QModelIndex QPersistentModelIndex::parent() const Returns the sibling at \a row and \a column or an invalid QModelIndex if there is no sibling at this position. - \sa parent(), child() + \sa parent() */ QModelIndex QPersistentModelIndex::sibling(int row, int column) const @@ -386,7 +387,12 @@ QModelIndex QPersistentModelIndex::sibling(int row, int column) const return QModelIndex(); } +#if QT_DEPRECATED_SINCE(5, 8) /*! + \obsolete + + Use QAbstractItemModel::index() instead. + Returns the child of the model index that is stored in the given \a row and \a column. @@ -396,9 +402,10 @@ QModelIndex QPersistentModelIndex::sibling(int row, int column) const QModelIndex QPersistentModelIndex::child(int row, int column) const { if (d) - return d->index.child(row, column); + return d->index.model()->index(row, column, d->index); return QModelIndex(); } +#endif /*! Returns the data for the given \a role for the item referred to by the @@ -547,6 +554,43 @@ const QHash<int,QByteArray> &QAbstractItemModelPrivate::defaultRoleNames() return *qDefaultRoleNames(); } +bool QAbstractItemModelPrivate::isVariantLessThan(const QVariant &left, const QVariant &right, + Qt::CaseSensitivity cs, bool isLocaleAware) +{ + if (left.userType() == QVariant::Invalid) + return false; + if (right.userType() == QVariant::Invalid) + return true; + switch (left.userType()) { + case QVariant::Int: + return left.toInt() < right.toInt(); + case QVariant::UInt: + return left.toUInt() < right.toUInt(); + case QVariant::LongLong: + return left.toLongLong() < right.toLongLong(); + case QVariant::ULongLong: + return left.toULongLong() < right.toULongLong(); + case QMetaType::Float: + return left.toFloat() < right.toFloat(); + case QVariant::Double: + return left.toDouble() < right.toDouble(); + case QVariant::Char: + return left.toChar() < right.toChar(); + case QVariant::Date: + return left.toDate() < right.toDate(); + case QVariant::Time: + return left.toTime() < right.toTime(); + case QVariant::DateTime: + return left.toDateTime() < right.toDateTime(); + case QVariant::String: + default: + if (isLocaleAware) + return left.toString().localeAwareCompare(right.toString()) < 0; + else + return left.toString().compare(right.toString(), cs) < 0; + } +} + static uint typeOfVariant(const QVariant &value) { @@ -1061,12 +1105,16 @@ void QAbstractItemModel::resetInternalData() Returns the sibling at \a row and \a column. If there is no sibling at this position, an invalid QModelIndex is returned. - \sa parent(), child() + \sa parent() */ /*! \fn QModelIndex QModelIndex::child(int row, int column) const + \obsolete + + Use QAbstractItemModel::index() instead. + Returns the child of the model index that is stored in the given \a row and \a column. @@ -1115,7 +1163,7 @@ void QAbstractItemModel::resetInternalData() Returns the parent of the model index, or QModelIndex() if it has no parent. - \sa child(), sibling(), model() + \sa sibling(), model() */ /*! diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h index 0820626452..907ba09676 100644 --- a/src/corelib/itemmodels/qabstractitemmodel.h +++ b/src/corelib/itemmodels/qabstractitemmodel.h @@ -63,7 +63,9 @@ public: inline void *internalPointer() const Q_DECL_NOTHROW { return reinterpret_cast<void*>(i); } inline QModelIndex parent() const; inline QModelIndex sibling(int row, int column) const; - inline QModelIndex child(int row, int column) const; +#if QT_DEPRECATED_SINCE(5, 8) + QT_DEPRECATED_X("Use QAbstractItemModel::index") inline QModelIndex child(int row, int column) const; +#endif inline QVariant data(int role = Qt::DisplayRole) const; inline Qt::ItemFlags flags() const; Q_DECL_CONSTEXPR inline const QAbstractItemModel *model() const Q_DECL_NOTHROW { return m; } @@ -128,7 +130,9 @@ public: quintptr internalId() const; QModelIndex parent() const; QModelIndex sibling(int row, int column) const; - QModelIndex child(int row, int column) const; +#if QT_DEPRECATED_SINCE(5, 8) + QT_DEPRECATED_X("Use QAbstractItemModel::index") QModelIndex child(int row, int column) const; +#endif QVariant data(int role = Qt::DisplayRole) const; Qt::ItemFlags flags() const; const QAbstractItemModel *model() const; @@ -419,8 +423,10 @@ inline QModelIndex QModelIndex::parent() const inline QModelIndex QModelIndex::sibling(int arow, int acolumn) const { return m ? (r == arow && c == acolumn) ? *this : m->sibling(arow, acolumn, *this) : QModelIndex(); } +#if QT_DEPRECATED_SINCE(5, 8) inline QModelIndex QModelIndex::child(int arow, int acolumn) const { return m ? m->index(arow, acolumn, *this) : QModelIndex(); } +#endif inline QVariant QModelIndex::data(int arole) const { return m ? m->data(*this, arole) : QVariant(); } diff --git a/src/corelib/itemmodels/qabstractitemmodel_p.h b/src/corelib/itemmodels/qabstractitemmodel_p.h index 9ff40cd60e..7086ae730a 100644 --- a/src/corelib/itemmodels/qabstractitemmodel_p.h +++ b/src/corelib/itemmodels/qabstractitemmodel_p.h @@ -150,6 +150,8 @@ public: QHash<int,QByteArray> roleNames; static const QHash<int,QByteArray> &defaultRoleNames(); + static bool isVariantLessThan(const QVariant &left, const QVariant &right, + Qt::CaseSensitivity cs = Qt::CaseSensitive, bool isLocaleAware = false); }; Q_DECLARE_TYPEINFO(QAbstractItemModelPrivate::Change, Q_MOVABLE_TYPE); diff --git a/src/corelib/itemmodels/qitemselectionmodel.h b/src/corelib/itemmodels/qitemselectionmodel.h index d79b99541e..3d3cb00750 100644 --- a/src/corelib/itemmodels/qitemselectionmodel.h +++ b/src/corelib/itemmodels/qitemselectionmodel.h @@ -40,6 +40,10 @@ #ifndef QITEMSELECTIONMODEL_H #define QITEMSELECTIONMODEL_H +#include <QtCore/qglobal.h> + +#ifndef QT_NO_ITEMVIEWS + #include <QtCore/qset.h> #include <QtCore/qvector.h> #include <QtCore/qlist.h> @@ -47,9 +51,6 @@ QT_BEGIN_NAMESPACE - -#ifndef QT_NO_ITEMVIEWS - class Q_CORE_EXPORT QItemSelectionRange { @@ -272,11 +273,11 @@ Q_DECLARE_SHARED_NOT_MOVABLE_UNTIL_QT6(QItemSelection) Q_CORE_EXPORT QDebug operator<<(QDebug, const QItemSelectionRange &); #endif -#endif // QT_NO_ITEMVIEWS - QT_END_NAMESPACE Q_DECLARE_METATYPE(QItemSelectionRange) Q_DECLARE_METATYPE(QItemSelection) +#endif // QT_NO_ITEMVIEWS + #endif // QITEMSELECTIONMODEL_H diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp index 0f45862035..b0ddfa879d 100644 --- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp +++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp @@ -2654,40 +2654,7 @@ bool QSortFilterProxyModel::lessThan(const QModelIndex &source_left, const QMode Q_D(const QSortFilterProxyModel); QVariant l = (source_left.model() ? source_left.model()->data(source_left, d->sort_role) : QVariant()); QVariant r = (source_right.model() ? source_right.model()->data(source_right, d->sort_role) : QVariant()); - // Duplicated in QStandardItem::operator<() - if (l.userType() == QVariant::Invalid) - return false; - if (r.userType() == QVariant::Invalid) - return true; - switch (l.userType()) { - case QVariant::Int: - return l.toInt() < r.toInt(); - case QVariant::UInt: - return l.toUInt() < r.toUInt(); - case QVariant::LongLong: - return l.toLongLong() < r.toLongLong(); - case QVariant::ULongLong: - return l.toULongLong() < r.toULongLong(); - case QMetaType::Float: - return l.toFloat() < r.toFloat(); - case QVariant::Double: - return l.toDouble() < r.toDouble(); - case QVariant::Char: - return l.toChar() < r.toChar(); - case QVariant::Date: - return l.toDate() < r.toDate(); - case QVariant::Time: - return l.toTime() < r.toTime(); - case QVariant::DateTime: - return l.toDateTime() < r.toDateTime(); - case QVariant::String: - default: - if (d->sort_localeaware) - return l.toString().localeAwareCompare(r.toString()) < 0; - else - return l.toString().compare(r.toString(), d->sort_casesensitivity) < 0; - } - return false; + return QAbstractItemModelPrivate::isVariantLessThan(l, r, d->sort_casesensitivity, d->sort_localeaware); } /*! |