summaryrefslogtreecommitdiffstats
path: root/src/corelib
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2012-09-26 18:16:08 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-02 16:25:02 +0100
commit9dfba89c28bbff3316cb7aed6c07f90c0f2d5a22 (patch)
tree1a9643ef367a24f836ec0a552229106b3776b7dd /src/corelib
parent000025ca1ecabe363934bdc8794b01ffb926af66 (diff)
Add implementations of QAIM::sibling in public APIs.
Change-Id: I2248641f2ed8735c28bd9572470520995a4a5b62 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
Diffstat (limited to 'src/corelib')
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.h1
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.cpp9
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.h1
-rw-r--r--src/corelib/itemmodels/qidentityproxymodel.cpp9
-rw-r--r--src/corelib/itemmodels/qidentityproxymodel.h1
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.cpp16
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.h1
-rw-r--r--src/corelib/itemmodels/qstringlistmodel.cpp11
-rw-r--r--src/corelib/itemmodels/qstringlistmodel.h1
9 files changed, 50 insertions, 0 deletions
diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h
index 00e108099d..9513a245d7 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.h
+++ b/src/corelib/itemmodels/qabstractitemmodel.h
@@ -420,6 +420,7 @@ public:
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
bool dropMimeData(const QMimeData *data, Qt::DropAction action,
int row, int column, const QModelIndex &parent);
+
protected:
QAbstractTableModel(QAbstractItemModelPrivate &dd, QObject *parent);
diff --git a/src/corelib/itemmodels/qabstractproxymodel.cpp b/src/corelib/itemmodels/qabstractproxymodel.cpp
index 680c995fe6..9b8c11af12 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.cpp
+++ b/src/corelib/itemmodels/qabstractproxymodel.cpp
@@ -363,6 +363,15 @@ bool QAbstractProxyModel::hasChildren(const QModelIndex &parent) const
/*!
\reimp
*/
+QModelIndex QAbstractProxyModel::sibling(int row, int column, const QModelIndex &idx) const
+{
+ Q_D(const QAbstractProxyModel);
+ return d->model->sibling(row, column, mapToSource(idx));
+}
+
+/*!
+ \reimp
+ */
QMimeData* QAbstractProxyModel::mimeData(const QModelIndexList &indexes) const
{
Q_D(const QAbstractProxyModel);
diff --git a/src/corelib/itemmodels/qabstractproxymodel.h b/src/corelib/itemmodels/qabstractproxymodel.h
index 1310341ac9..2561e5a7e2 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.h
+++ b/src/corelib/itemmodels/qabstractproxymodel.h
@@ -90,6 +90,7 @@ public:
void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
QSize span(const QModelIndex &index) const;
bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex sibling(int row, int column, const QModelIndex &idx) const;
QMimeData* mimeData(const QModelIndexList &indexes) const;
QStringList mimeTypes() const;
diff --git a/src/corelib/itemmodels/qidentityproxymodel.cpp b/src/corelib/itemmodels/qidentityproxymodel.cpp
index 37ec1cd0a9..75a1c0d4e0 100644
--- a/src/corelib/itemmodels/qidentityproxymodel.cpp
+++ b/src/corelib/itemmodels/qidentityproxymodel.cpp
@@ -171,6 +171,15 @@ QModelIndex QIdentityProxyModel::index(int row, int column, const QModelIndex& p
/*!
\reimp
*/
+QModelIndex QIdentityProxyModel::sibling(int row, int column, const QModelIndex &idx) const
+{
+ Q_D(const QIdentityProxyModel);
+ return d->model->sibling(row, column, mapToSource(idx));
+}
+
+/*!
+ \reimp
+ */
bool QIdentityProxyModel::insertColumns(int column, int count, const QModelIndex& parent)
{
Q_ASSERT(parent.isValid() ? parent.model() == this : true);
diff --git a/src/corelib/itemmodels/qidentityproxymodel.h b/src/corelib/itemmodels/qidentityproxymodel.h
index b402c175d2..da40836dd0 100644
--- a/src/corelib/itemmodels/qidentityproxymodel.h
+++ b/src/corelib/itemmodels/qidentityproxymodel.h
@@ -69,6 +69,7 @@ public:
int rowCount(const QModelIndex& parent = QModelIndex()) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
+ QModelIndex sibling(int row, int column, const QModelIndex &idx) const;
QItemSelection mapSelectionFromSource(const QItemSelection& selection) const;
QItemSelection mapSelectionToSource(const QItemSelection& selection) const;
diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
index 8551db0c28..80961e8eb3 100644
--- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
@@ -1871,6 +1871,22 @@ QModelIndex QSortFilterProxyModel::parent(const QModelIndex &child) const
/*!
\reimp
*/
+QModelIndex QSortFilterProxyModel::sibling(int row, int column, const QModelIndex &idx) const
+{
+ Q_D(const QSortFilterProxyModel);
+ if (!d->indexValid(idx))
+ return QModelIndex();
+
+ const IndexMap::const_iterator it = d->index_to_iterator(idx);
+ if (it.value()->source_rows.count() <= row || it.value()->source_columns.count() <= column)
+ return QModelIndex();
+
+ return d->create_index(row, column, it);
+}
+
+/*!
+ \reimp
+*/
int QSortFilterProxyModel::rowCount(const QModelIndex &parent) const
{
Q_D(const QSortFilterProxyModel);
diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.h b/src/corelib/itemmodels/qsortfilterproxymodel.h
index 905c401886..18b7078375 100644
--- a/src/corelib/itemmodels/qsortfilterproxymodel.h
+++ b/src/corelib/itemmodels/qsortfilterproxymodel.h
@@ -135,6 +135,7 @@ public:
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &child) const;
+ QModelIndex sibling(int row, int column, const QModelIndex &idx) const;
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
diff --git a/src/corelib/itemmodels/qstringlistmodel.cpp b/src/corelib/itemmodels/qstringlistmodel.cpp
index 2bea97d4b4..49345f155a 100644
--- a/src/corelib/itemmodels/qstringlistmodel.cpp
+++ b/src/corelib/itemmodels/qstringlistmodel.cpp
@@ -127,6 +127,17 @@ int QStringListModel::rowCount(const QModelIndex &parent) const
}
/*!
+ \reimp
+*/
+QModelIndex QStringListModel::sibling(int row, int column, const QModelIndex &idx) const
+{
+ if (!idx.isValid() || column != 0 || row >= lst.count())
+ return QModelIndex();
+
+ return createIndex(row, 0);
+}
+
+/*!
Returns data for the specified \a role, from the item with the
given \a index.
diff --git a/src/corelib/itemmodels/qstringlistmodel.h b/src/corelib/itemmodels/qstringlistmodel.h
index 85d90e7a01..4da435c453 100644
--- a/src/corelib/itemmodels/qstringlistmodel.h
+++ b/src/corelib/itemmodels/qstringlistmodel.h
@@ -60,6 +60,7 @@ public:
explicit QStringListModel(const QStringList &strings, QObject *parent = 0);
int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ QModelIndex sibling(int row, int column, const QModelIndex &idx) const;
QVariant data(const QModelIndex &index, int role) const;
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);