diff options
Diffstat (limited to 'src/pdf/quick/qquicktableviewextra.cpp')
-rw-r--r-- | src/pdf/quick/qquicktableviewextra.cpp | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/src/pdf/quick/qquicktableviewextra.cpp b/src/pdf/quick/qquicktableviewextra.cpp deleted file mode 100644 index 2b59d6c6e..000000000 --- a/src/pdf/quick/qquicktableviewextra.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ -** -** This file is part of the QtPDF module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL3$ -** 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 http://www.qt.io/terms-conditions. For further -** information use the contact form at http://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.LGPLv3 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.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 later as published by the Free -** Software Foundation and appearing in the file LICENSE.GPL included in -** the packaging of this file. Please review the following information to -** ensure the GNU General Public License version 2.0 requirements will be -** met: http://www.gnu.org/licenses/gpl-2.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "qquicktableviewextra_p.h" -#include <QtQml> -#include <QQmlContext> - -Q_LOGGING_CATEGORY(qLcTVE, "qt.pdf.tableextra") - -QT_BEGIN_NAMESPACE - -/*! - \internal - \qmltype TableViewExtra - \instantiates QQuickTableViewExtra - \inqmlmodule QtQuick.Pdf - \ingroup pdf - \brief A helper class with missing TableView functions - \since 5.15 - - TableViewExtra provides equivalents for some functions that will be added - to TableView in Qt 6. -*/ - -QQuickTableViewExtra::QQuickTableViewExtra(QObject *parent) : QObject(parent) -{ -} - -QPoint QQuickTableViewExtra::cellAtPos(qreal x, qreal y) const -{ - QPointF position(x, y); -#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) - return m_tableView->cellAtPos(position); -#else - if (!m_tableView->boundingRect().contains(position)) - return QPoint(-1, -1); - - const QQuickItem *contentItem = m_tableView->contentItem(); - - for (const QQuickItem *child : contentItem->childItems()) { - const QPointF posInChild = m_tableView->mapToItem(child, position); - if (child->boundingRect().contains(posInChild)) { - const auto context = qmlContext(child); - const int column = context->contextProperty("column").toInt(); - const int row = context->contextProperty("row").toInt(); - return QPoint(column, row); - } - } - - return QPoint(-1, -1); -#endif -} - -QQuickItem *QQuickTableViewExtra::itemAtCell(const QPoint &cell) const -{ -#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) - return m_tableView->itemAtCell(cell); -#else - const QQuickItem *contentItem = m_tableView->contentItem(); - - for (QQuickItem *child : contentItem->childItems()) { - const auto context = qmlContext(child); - const int column = context->contextProperty("column").toInt(); - const int row = context->contextProperty("row").toInt(); - if (QPoint(column, row) == cell) - return child; - } - - return nullptr; -#endif -} - -void QQuickTableViewExtra::positionViewAtCell(const QPoint &cell, Qt::Alignment alignment, const QPointF &offset) -{ -#if QT_VERSION >= QT_VERSION_CHECK(6,0,0) - m_tableView->positionViewAtCell(cell, alignment, offset); -#else - // Note: this fallback implementation assumes all cells to be of the same size! - - if (cell.x() < 0 || cell.x() > m_tableView->columns() - 1) - return; - if (cell.y() < 0 || cell.y() > m_tableView->rows() - 1) - return; - - Qt::Alignment verticalAlignment = alignment & (Qt::AlignTop | Qt::AlignVCenter | Qt::AlignBottom); - Qt::Alignment horizontalAlignment = alignment & (Qt::AlignLeft | Qt::AlignHCenter | Qt::AlignRight); - - const QQuickItem *contentItem = m_tableView->contentItem(); - const QQuickItem *randomChild = contentItem->childItems().first(); - const qreal cellWidth = randomChild->width(); - const qreal cellHeight = randomChild->height(); - - if (!verticalAlignment && !horizontalAlignment) { - qmlWarning(this) << "No valid alignment specified"; - return; - } - - if (horizontalAlignment) { - qreal newPosX = 0; - const qreal columnPosLeft = int(cell.x() * (cellWidth + m_tableView->columnSpacing())); - m_tableView->setContentX(0); - m_tableView->forceLayout(); - m_tableView->setContentX(columnPosLeft); - m_tableView->forceLayout(); - - switch (horizontalAlignment) { - case Qt::AlignLeft: - newPosX = m_tableView->contentX() + offset.x(); - break; - case Qt::AlignHCenter: - newPosX = m_tableView->contentX() - - m_tableView->width() / 2 - + (cellWidth / 2) - + offset.x(); - break; - case Qt::AlignRight: - newPosX = m_tableView->contentX() - - m_tableView->width() - + cellWidth - + offset.x(); - break; - } - - m_tableView->setContentX(newPosX); - m_tableView->forceLayout(); - } - - if (verticalAlignment) { - qreal newPosY = 0; - const qreal rowPosTop = int(cell.y() * (cellHeight + m_tableView->rowSpacing())); - m_tableView->setContentY(0); - m_tableView->forceLayout(); - m_tableView->setContentY(rowPosTop); - m_tableView->forceLayout(); - - switch (verticalAlignment) { - case Qt::AlignTop: - newPosY = m_tableView->contentY() + offset.y(); - break; - case Qt::AlignVCenter: - newPosY = m_tableView->contentY() - - m_tableView->height() / 2 - + (cellHeight / 2) - + offset.y(); - break; - case Qt::AlignBottom: - newPosY = m_tableView->contentY() - - m_tableView->height() - + cellHeight - + offset.y(); - break; - } - - m_tableView->setContentY(newPosY); - m_tableView->forceLayout(); - } -#endif -} - -QT_END_NAMESPACE |