1
/****************************************************************************
2
** Copyright (C) 2001-2006 Klarälvdalens Datakonsult AB. All rights reserved.
4
** This file is part of the KD Gantt library.
6
** This file may be used under the terms of the GNU General Public
7
** License versions 2.0 or 3.0 as published by the Free Software
8
** Foundation and appearing in the files LICENSE.GPL2 and LICENSE.GPL3
9
** included in the packaging of this file. Alternatively you may (at
10
** your option) use any later version of the GNU General Public
11
** License if such license has been publicly approved by
12
** Klarälvdalens Datakonsult AB (or its successors, if any).
14
** This file is provided "AS IS" with NO WARRANTY OF ANY KIND,
15
** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR
16
** A PARTICULAR PURPOSE. Klarälvdalens Datakonsult AB reserves all rights
17
** not expressly granted herein.
19
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
20
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22
**********************************************************************/
23
#include "kdgantttreeviewrowcontroller.h"
24
#include "kdgantttreeviewrowcontroller_p.h"
26
#include <QAbstractProxyModel>
27
#include <QHeaderView>
31
using namespace KDGantt;
33
/*!\class TreeViewRowController
34
* This is an implementation of AbstractRowController that
35
* aligns a gantt view with a QTreeView.
38
TreeViewRowController::TreeViewRowController( QTreeView* tv,
39
QAbstractProxyModel* proxy )
42
_d->treeview = static_cast<Private::HackTreeView*>(tv);
46
TreeViewRowController::~TreeViewRowController()
53
int TreeViewRowController::headerHeight() const
55
//return d->treeview->header()->sizeHint().height();
56
return d->treeview->viewport()->y()-d->treeview->frameWidth();
59
int TreeViewRowController::maximumItemHeight() const
61
return d->treeview->fontMetrics().height();
64
bool TreeViewRowController::isRowVisible( const QModelIndex& _idx ) const
66
//qDebug() << _idx.model()<<d->proxy << d->treeview->model();
67
const QModelIndex idx = d->proxy->mapToSource( _idx );
68
assert( idx.isValid() ? ( idx.model() == d->treeview->model() ):( true ) );
69
return d->treeview->visualRect(idx).isValid();
72
Span TreeViewRowController::rowGeometry( const QModelIndex& _idx ) const
74
const QModelIndex idx = d->proxy->mapToSource( _idx );
75
assert( idx.isValid() ? ( idx.model() == d->treeview->model() ):( true ) );
76
QRect r = d->treeview->visualRect(idx).translated( QPoint( 0, d->treeview->verticalOffset() ) );
77
return Span( r.y(), r.height() );
80
QModelIndex TreeViewRowController::indexAt( int height ) const
82
return d->proxy->mapFromSource( d->treeview->indexAt( QPoint( 1,height ) ) );
85
QModelIndex TreeViewRowController::indexAbove( const QModelIndex& _idx ) const
87
const QModelIndex idx = d->proxy->mapToSource( _idx );
88
return d->proxy->mapFromSource( d->treeview->indexAbove( idx ) );
91
QModelIndex TreeViewRowController::indexBelow( const QModelIndex& _idx ) const
93
const QModelIndex idx = d->proxy->mapToSource( _idx );
94
return d->proxy->mapFromSource( d->treeview->indexBelow( idx ) );