KD Chart API Documentation  3.1
kdganttlistviewrowcontroller.cpp
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** This file is part of the KD Chart library.
4 **
5 ** SPDX-FileCopyrightText: 2001 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6 **
7 ** SPDX-License-Identifier: MIT
8 **
9 ****************************************************************************/
10 
12 #include "kdganttlistviewrowcontroller_p.h"
13 
14 #include <QAbstractProxyModel>
15 #include <QScrollBar>
16 
17 #include <cassert>
18 
19 using namespace KDGantt;
20 
28 ListViewRowController::ListViewRowController(QListView *lv, QAbstractProxyModel *proxy)
29  : _d(new Private(lv, proxy))
30 {
31 }
32 
34 {
35  delete _d;
36  _d = nullptr;
37 }
38 
39 #define d d_func()
40 
42 {
43  return d->listview->viewport()->y() - d->listview->frameWidth();
44 }
45 
47 {
48  return d->listview->fontMetrics().height();
49 }
50 
52 {
53  return d->listview->verticalScrollBar()->maximum() + d->listview->viewport()->height();
54 }
55 
56 bool ListViewRowController::isRowVisible(const QModelIndex &_idx) const
57 {
58  const QModelIndex idx = d->proxy->mapToSource(_idx);
59  assert(idx.isValid() ? (idx.model() == d->listview->model()) : (true));
60  return d->listview->visualRect(idx).isValid();
61 }
62 
63 bool ListViewRowController::isRowExpanded(const QModelIndex &_idx) const
64 {
65  Q_UNUSED(_idx);
66 
67  return false;
68 }
69 
70 Span ListViewRowController::rowGeometry(const QModelIndex &_idx) const
71 {
72  const QModelIndex idx = d->proxy->mapToSource(_idx);
73  assert(idx.isValid() ? (idx.model() == d->listview->model()) : (true));
74  QRect r = d->listview->visualRect(idx).translated(QPoint(0,
75  static_cast<Private::HackListView *>(d->listview)->verticalOffset()));
76  return Span(r.y(), r.height());
77 }
78 
79 QModelIndex ListViewRowController::indexAt(int height) const
80 {
81  return d->proxy->mapFromSource(d->listview->indexAt(QPoint(1, height)));
82 }
83 
84 QModelIndex ListViewRowController::indexAbove(const QModelIndex &_idx) const
85 {
86  const QModelIndex idx = d->proxy->mapToSource(_idx);
87  return d->proxy->mapFromSource(idx.sibling(idx.row() - 1, idx.column()));
88 }
89 
90 QModelIndex ListViewRowController::indexBelow(const QModelIndex &_idx) const
91 {
92  const QModelIndex idx = d->proxy->mapToSource(_idx);
93  if (!idx.isValid() || idx.column() != 0)
94  return QModelIndex();
95  if (idx.model()->rowCount(idx.parent()) < idx.row() + 1)
96  return QModelIndex();
97  return d->proxy->mapFromSource(idx.sibling(idx.row() + 1, idx.column()));
98 }
QModelIndex indexAbove(const QModelIndex &idx) const override
Span rowGeometry(const QModelIndex &idx) const override
QModelIndex indexBelow(const QModelIndex &idx) const override
ListViewRowController(QListView *lv, QAbstractProxyModel *proxy)
QModelIndex indexAt(int height) const override
bool isRowExpanded(const QModelIndex &idx) const override
bool isRowVisible(const QModelIndex &idx) const override
A class representing a start point and a length.

© 2001 Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-chart/
Generated by doxygen 1.9.1