aboutsummaryrefslogtreecommitdiffstats
path: root/src/quicktemplates2/qquickheaderview.cpp
diff options
context:
space:
mode:
authorMitch Curtis <[email protected]>2021-08-12 14:39:51 +0200
committerMitch Curtis <[email protected]>2021-08-16 12:52:59 +0200
commit809339d1484cf556512534367b8170bc26baf072 (patch)
tree12871313b658f36d058b5ef25af1e247e9c46ce9 /src/quicktemplates2/qquickheaderview.cpp
parentb01b4f00eae8022c6a97d90f54dac395144ae095 (diff)
Remove qtquickcontrols2 sources and explain where they wentHEADdev
Now that qtquickcontrols2 has been merged into qtdeclarative, we should make it obvious that this repo should no longer be used, by preventing it from being built. Task-number: QTBUG-95173 Pick-to: 6.2 Change-Id: I95bd6a214f3d75a865ab163ee0a1f9ffbeb7a051 Reviewed-by: Alexandru Croitor <[email protected]> Reviewed-by: Volker Hilsheimer <[email protected]>
Diffstat (limited to 'src/quicktemplates2/qquickheaderview.cpp')
-rw-r--r--src/quicktemplates2/qquickheaderview.cpp520
1 files changed, 0 insertions, 520 deletions
diff --git a/src/quicktemplates2/qquickheaderview.cpp b/src/quicktemplates2/qquickheaderview.cpp
deleted file mode 100644
index 8671ac63..00000000
--- a/src/quicktemplates2/qquickheaderview.cpp
+++ /dev/null
@@ -1,520 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2020 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtQuick module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 3 as published by the Free Software
-** Foundation and appearing in the file LICENSE.LGPL3 included in the
-** packaging of this file. Please review the following information to
-** ensure the GNU Lesser General Public License version 3 requirements
-** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 2.0 or (at your option) the GNU General
-** Public license version 3 or any later version approved by the KDE Free
-** Qt Foundation. The licenses are as published by the Free Software
-** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-2.0.html and
-** https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <QtQuickTemplates2/private/qquickheaderview_p_p.h>
-#include <algorithm>
-
-/*!
- \qmltype HorizontalHeaderView
- \inqmlmodule QtQuick.Controls
- \ingroup qtquickcontrols2-containers
- \inherits TableView
- \brief Provides a horizontal header view to accompany a \l TableView.
-
- A HorizontalHeaderView provides labeling of the columns of a \l TableView.
- To add a horizontal header to a TableView, bind the
- \l {HorizontalHeaderView::syncView} {syncView} property to the TableView:
-
- \snippet qtquickcontrols2-headerview-simple.qml horizontal
-
- The header displays data from the {syncView}'s model by default, but can
- also have its own model. If the model is a QAbstractTableModel, then
- the header will display the model's horizontal headerData(); otherwise,
- the model's data().
-*/
-
-/*!
- \qmltype VerticalHeaderView
- \inqmlmodule QtQuick.Controls
- \ingroup qtquickcontrols2-containers
- \inherits TableView
- \brief Provides a vertical header view to accompany a \l TableView.
-
- A VerticalHeaderView provides labeling of the rows of a \l TableView.
- To add a vertical header to a TableView, bind the
- \l {VerticalHeaderView::syncView} {syncView} property to the TableView:
-
- \snippet qtquickcontrols2-headerview-simple.qml vertical
-
- The header displays data from the {syncView}'s model by default, but can
- also have its own model. If the model is a QAbstractTableModel, then
- the header will display the model's vertical headerData(); otherwise,
- the model's data().
-*/
-
-/*!
- \qmlproperty TableView QtQuick::HorizontalHeaderView::syncView
-
- This property holds the TableView to synchronize with.
-
- Once this property is bound to another TableView, both header and table
- will synchronize with regard to column widths, column spacing, and flicking
- horizontally.
-
- If the \l model is not explicitly set, then the header will use the syncView's
- model to label the columns.
-
- \sa model TableView
-*/
-
-/*!
- \qmlproperty TableView QtQuick::VerticalHeaderView::syncView
-
- This property holds the TableView to synchronize with.
-
- Once this property is bound to another TableView, both header and table
- will synchronize with regard to row heights, row spacing, and flicking
- vertically.
-
- If the \l model is not explicitly set, then the header will use the syncView's
- model to label the rows.
-
- \sa model TableView
-*/
-
-/*!
- \qmlproperty QVariant QtQuick::HorizontalHeaderView::model
-
- This property holds the model providing data for the horizontal header view.
-
- When model is not explicitly set, the header will use the syncView's
- model once syncView is set.
-
- If model is a QAbstractTableModel, its horizontal headerData() will
- be accessed.
-
- If model is a QAbstractItemModel other than QAbstractTableModel, model's data()
- will be accessed.
-
- Otherwise, the behavior is same as setting TableView::model.
-
- \sa TableView {TableView::model} {model} QAbstractTableModel
-*/
-
-/*!
- \qmlproperty QVariant QtQuick::VerticalHeaderView::model
-
- This property holds the model providing data for the vertical header view.
-
- When model is not explicitly set, it will be synchronized with syncView's model
- once syncView is set.
-
- If model is a QAbstractTableModel, its vertical headerData() will
- be accessed.
-
- If model is a QAbstractItemModel other than QAbstractTableModel, model's data()
- will be accessed.
-
- Otherwise, the behavior is same as setting TableView::model.
-
- \sa TableView {TableView::model} {model} QAbstractTableModel
-*/
-
-/*!
- \qmlproperty QString QtQuick::HorizontalHeaderView::textRole
-
- This property holds the model role used to display text in each header cell.
-
- When the model has multiple roles, textRole can be set to determine which
- role should be displayed.
-
- If model is a QAbstractItemModel then it will default to "display"; otherwise
- it is empty.
-
- \sa QAbstractItemModel::roleNames()
-*/
-
-/*!
- \qmlproperty QString QtQuick::VerticalHeaderView::textRole
-
- This property holds the model role used to display text in each header cell.
-
- When the model has multiple roles, textRole can be set to determine which
- role should be displayed.
-
- If model is a QAbstractItemModel then it will default to "display"; otherwise
- it is empty.
-
- \sa QAbstractItemModel::roleNames()
-*/
-
-QT_BEGIN_NAMESPACE
-
-QQuickHeaderViewBasePrivate::QQuickHeaderViewBasePrivate()
- : QQuickTableViewPrivate()
-{
-}
-
-QQuickHeaderViewBasePrivate::~QQuickHeaderViewBasePrivate()
-{
-}
-
-const QPointer<QQuickItem> QQuickHeaderViewBasePrivate::delegateItemAt(int row, int col) const
-{
- return loadedTableItem(QPoint(col, row))->item;
-}
-
-QVariant QQuickHeaderViewBasePrivate::modelImpl() const
-{
- if (auto model = m_headerDataProxyModel.sourceModel())
- return QVariant::fromValue(model.data());
- if (auto model = m_transposeProxyModel.sourceModel())
- return QVariant::fromValue(model);
- return QQuickTableViewPrivate::modelImpl();
-}
-
-template <typename P, typename M>
-inline bool proxyModelSetter(QQuickHeaderViewBase *const q, P &proxyModel, M *model)
-{
- if (model) {
- if (model == proxyModel.sourceModel())
- return true;
- proxyModel.setSourceModel(model);
- const auto &modelVariant = QVariant::fromValue(std::addressof(proxyModel));
- bool isProxyModelChanged = (modelVariant != QQuickTableViewPrivate::get(q)->QQuickTableViewPrivate::modelImpl());
- QQuickTableViewPrivate::get(q)->QQuickTableViewPrivate::setModelImpl(modelVariant);
- //Necessary, since TableView's assigned model not changed, but proxy's source changed
- if (!isProxyModelChanged)
- emit q->modelChanged();
- return true;
- }
- proxyModel.setSourceModel(nullptr);
- return false;
-}
-
-void QQuickHeaderViewBasePrivate::setModelImpl(const QVariant &newModel)
-{
- Q_Q(QQuickHeaderViewBase);
- m_modelExplicitlySetByUser = true;
- // Case 1: newModel is QAbstractTableModel
- if (proxyModelSetter(q, m_headerDataProxyModel, newModel.value<QAbstractTableModel *>()))
- return;
- // Case 2: newModel is QAbstractItemModel but not QAbstractTableModel
- if (orientation() == Qt::Horizontal
- && proxyModelSetter(q, m_transposeProxyModel, newModel.value<QAbstractItemModel *>()))
- return;
-
- QQuickTableViewPrivate::setModelImpl(newModel);
-}
-
-void QQuickHeaderViewBasePrivate::syncModel()
-{
- Q_Q(QQuickHeaderViewBase);
-
- if (assignedSyncView && !m_modelExplicitlySetByUser) {
- auto newModel = assignedSyncView->model();
- if (auto m = newModel.value<QAbstractItemModel *>())
- proxyModelSetter(q, m_headerDataProxyModel, m);
- }
-
- QQuickTableViewPrivate::syncModel();
-
- isTransposed = false;
- const auto aim = model->abstractItemModel();
- if (orientation() == Qt::Horizontal) {
- // For models that are just a list or a number, and especially not a
- // table, we transpose the view when the orientation is horizontal.
- // The model (list) will then be laid out horizontally rather than
- // vertically, which is the otherwise the default.
- isTransposed = !aim || aim->columnCount() == 1;
- }
- if (m_textRole.isEmpty() && aim)
- m_textRole = QLatin1String("display");
-}
-
-void QQuickHeaderViewBasePrivate::syncSyncView()
-{
- Q_Q(QQuickHeaderViewBase);
- if (assignedSyncDirection != orientation()) {
- qmlWarning(q_func()) << "Setting syncDirection other than Qt::"
- << QVariant::fromValue(orientation()).toString()
- << " is invalid.";
- assignedSyncDirection = orientation();
- }
- if (assignedSyncView) {
- QBoolBlocker fixupGuard(inUpdateContentSize, true);
- if (orientation() == Qt::Horizontal) {
- q->setLeftMargin(assignedSyncView->leftMargin());
- q->setRightMargin(assignedSyncView->rightMargin());
- } else {
- q->setTopMargin(assignedSyncView->topMargin());
- q->setBottomMargin(assignedSyncView->bottomMargin());
- }
- }
- QQuickTableViewPrivate::syncSyncView();
-}
-
-QQuickHeaderViewBase::QQuickHeaderViewBase(Qt::Orientation orient, QQuickItem *parent)
- : QQuickTableView(*(new QQuickHeaderViewBasePrivate), parent)
-{
- d_func()->setOrientation(orient);
- setSyncDirection(orient);
-}
-
-QQuickHeaderViewBase::QQuickHeaderViewBase(QQuickHeaderViewBasePrivate &dd, QQuickItem *parent)
- : QQuickTableView(dd, parent)
-{
-}
-
-QQuickHeaderViewBase::~QQuickHeaderViewBase()
-{
-}
-
-QString QQuickHeaderViewBase::textRole() const
-{
- Q_D(const QQuickHeaderViewBase);
- return d->m_textRole;
-}
-
-void QQuickHeaderViewBase::setTextRole(const QString &role)
-{
- Q_D(QQuickHeaderViewBase);
- if (d->m_textRole == role)
- return;
-
- d->m_textRole = role;
- emit textRoleChanged();
-}
-
-Qt::Orientation QQuickHeaderViewBasePrivate::orientation() const
-{
- return m_headerDataProxyModel.orientation();
-}
-
-void QQuickHeaderViewBasePrivate::setOrientation(Qt::Orientation orientation)
-{
- if (QQuickHeaderViewBasePrivate::orientation() == orientation)
- return;
- m_headerDataProxyModel.setOrientation(orientation);
-}
-
-QQuickVerticalHeaderView::QQuickVerticalHeaderView(QQuickVerticalHeaderViewPrivate &dd, QQuickItem *parent)
- : QQuickHeaderViewBase(dd, parent)
-{
-}
-
-/*! \internal
- \class QHeaderDataProxyModel
- \brief
- QHeaderDataProxyModel is a proxy AbstractItemModel type that maps
- source model's headerData() to correspondent data()
- */
-QHeaderDataProxyModel::QHeaderDataProxyModel(QObject *parent)
- : QAbstractItemModel(parent)
-{
-}
-
-QHeaderDataProxyModel::~QHeaderDataProxyModel() = default;
-
-void QHeaderDataProxyModel::setSourceModel(QAbstractItemModel *newSourceModel)
-{
- if (m_model == newSourceModel)
- return;
- beginResetModel();
- disconnectFromModel();
- m_model = newSourceModel;
- connectToModel();
- endResetModel();
-}
-
-QModelIndex QHeaderDataProxyModel::index(int row, int column, const QModelIndex &parent) const
-{
- return hasIndex(row, column, parent) ? createIndex(row, column) : QModelIndex();
-}
-
-QModelIndex QHeaderDataProxyModel::parent(const QModelIndex &child) const
-{
- Q_UNUSED(child);
- return QModelIndex();
-}
-
-QModelIndex QHeaderDataProxyModel::sibling(int row, int column, const QModelIndex &) const
-{
- return index(row, column);
-}
-
-int QHeaderDataProxyModel::rowCount(const QModelIndex &parent) const
-{
- if (parent.isValid())
- return 0;
- return m_model.isNull() ? -1 : (m_orientation == Qt::Horizontal ? 1 : m_model->rowCount(parent));
-}
-
-int QHeaderDataProxyModel::columnCount(const QModelIndex &parent) const
-{
- if (parent.isValid())
- return 0;
- return m_model.isNull() ? -1 : (m_orientation == Qt::Vertical ? 1 : m_model->columnCount(parent));
-}
-
-QVariant QHeaderDataProxyModel::data(const QModelIndex &index, int role) const
-{
- if (m_model.isNull())
- return QVariant();
- if (!hasIndex(index.row(), index.column()))
- return QModelIndex();
- auto section = m_orientation == Qt::Vertical ? index.row() : index.column();
- return m_model->headerData(section, m_orientation, role);
-}
-
-bool QHeaderDataProxyModel::setData(const QModelIndex &index, const QVariant &value, int role)
-{
- if (!hasIndex(index.row(), index.column()))
- return false;
- auto section = m_orientation == Qt::Vertical ? index.row() : index.column();
- auto ret = m_model->setHeaderData(section, m_orientation, value, role);
- emit dataChanged(index, index, { role });
- return ret;
-}
-
-bool QHeaderDataProxyModel::hasChildren(const QModelIndex &parent) const
-{
- if (!parent.isValid())
- return rowCount(parent) > 0 && columnCount(parent) > 0;
- return false;
-}
-
-QVariant QHeaderDataProxyModel::variantValue() const
-{
- return QVariant::fromValue(static_cast<QObject *>(const_cast<QHeaderDataProxyModel *>(this)));
-}
-
-void QHeaderDataProxyModel::setOrientation(Qt::Orientation o)
-{
- if (o == m_orientation)
- return;
- beginResetModel();
- m_orientation = o;
- endResetModel();
-}
-
-Qt::Orientation QHeaderDataProxyModel::orientation() const
-{
- return m_orientation;
-}
-
-QPointer<QAbstractItemModel> QHeaderDataProxyModel::sourceModel() const
-{
- return m_model;
-}
-
-void QHeaderDataProxyModel::connectToModel()
-{
- if (m_model.isNull())
- return;
- connect(m_model, &QAbstractItemModel::headerDataChanged,
- [this](Qt::Orientation orient, int first, int last) {
- if (orient != orientation())
- return;
- if (orient == Qt::Horizontal) {
- emit dataChanged(createIndex(0, first), createIndex(0, last));
- } else {
- emit dataChanged(createIndex(first, 0), createIndex(last, 0));
- }
- });
- connect(m_model, &QAbstractItemModel::modelAboutToBeReset,
- this, &QHeaderDataProxyModel::modelAboutToBeReset, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::modelReset,
- this, &QHeaderDataProxyModel::modelReset, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::rowsAboutToBeMoved,
- this, &QHeaderDataProxyModel::rowsAboutToBeMoved, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::rowsMoved,
- this, &QHeaderDataProxyModel::rowsMoved, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::rowsAboutToBeInserted,
- this, &QHeaderDataProxyModel::rowsAboutToBeInserted, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::rowsInserted,
- this, &QHeaderDataProxyModel::rowsInserted, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::rowsAboutToBeRemoved,
- this, &QHeaderDataProxyModel::rowsAboutToBeRemoved, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::rowsRemoved,
- this, &QHeaderDataProxyModel::rowsRemoved, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::columnsAboutToBeMoved,
- this, &QHeaderDataProxyModel::columnsAboutToBeMoved, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::columnsMoved,
- this, &QHeaderDataProxyModel::columnsMoved, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::columnsAboutToBeInserted,
- this, &QHeaderDataProxyModel::columnsAboutToBeInserted, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::columnsInserted,
- this, &QHeaderDataProxyModel::columnsInserted, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::columnsAboutToBeRemoved,
- this, &QHeaderDataProxyModel::columnsAboutToBeRemoved, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::columnsRemoved,
- this, &QHeaderDataProxyModel::columnsRemoved, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::layoutAboutToBeChanged,
- this, &QHeaderDataProxyModel::layoutAboutToBeChanged, Qt::UniqueConnection);
- connect(m_model, &QAbstractItemModel::layoutChanged,
- this, &QHeaderDataProxyModel::layoutChanged, Qt::UniqueConnection);
-}
-
-void QHeaderDataProxyModel::disconnectFromModel()
-{
- if (m_model.isNull())
- return;
- m_model->disconnect(this);
-}
-
-QQuickHorizontalHeaderView::QQuickHorizontalHeaderView(QQuickItem *parent)
- : QQuickHeaderViewBase(Qt::Horizontal, parent)
-{
- setFlickableDirection(FlickableDirection::HorizontalFlick);
-}
-
-QQuickHorizontalHeaderView::~QQuickHorizontalHeaderView()
-{
-}
-
-QQuickVerticalHeaderView::QQuickVerticalHeaderView(QQuickItem *parent)
- : QQuickHeaderViewBase(Qt::Vertical, parent)
-{
- setFlickableDirection(FlickableDirection::VerticalFlick);
-}
-
-QQuickVerticalHeaderView::~QQuickVerticalHeaderView()
-{
-}
-
-QQuickHorizontalHeaderViewPrivate::QQuickHorizontalHeaderViewPrivate() = default;
-
-QQuickHorizontalHeaderViewPrivate::~QQuickHorizontalHeaderViewPrivate() = default;
-
-QQuickVerticalHeaderViewPrivate::QQuickVerticalHeaderViewPrivate() = default;
-
-QQuickVerticalHeaderViewPrivate::~QQuickVerticalHeaderViewPrivate() = default;
-
-QT_END_NAMESPACE