1
/****************************************************************************
3
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
5
** This file is part of the item views module of the Qt Toolkit.
7
** This file may be distributed under the terms of the Q Public License
8
** as defined by Trolltech AS of Norway and appearing in the file
9
** LICENSE.QPL included in the packaging of this file.
11
** This file may be distributed and/or modified under the terms of the
12
** GNU General Public License version 2 as published by the Free Software
13
** Foundation and appearing in the file LICENSE.GPL included in the
14
** packaging of this file.
16
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
17
** information about Qt Commercial License Agreements.
18
** See http://www.trolltech.com/qpl/ for QPL licensing information.
19
** See http://www.trolltech.com/gpl/ for GPL licensing information.
21
** Contact info@trolltech.com if any conditions of this licensing are
24
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
25
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27
****************************************************************************/
29
#ifndef QHEADERVIEW_P_H
30
#define QHEADERVIEW_P_H
36
// This file is not part of the Qt API. It exists purely as an
37
// implementation detail. This header file may change from version to
38
// version without notice, or even be removed.
43
#include <private/qabstractitemview_p.h>
44
#include <qbitarray.h>
45
#include <qapplication.h>
48
class QHeaderViewPrivate: public QAbstractItemViewPrivate
50
Q_DECLARE_PUBLIC(QHeaderView)
56
sortIndicatorOrder(Qt::AscendingOrder),
57
sortIndicatorSection(0),
58
sortIndicatorShown(false),
64
movableSections(false),
65
clickableSections(false),
66
highlightSelected(false),
67
stretchLastSection(false),
69
sectionIndicatorOffset(0),
71
globalResizeMode(QHeaderView::Interactive) {}
73
int sectionHandleAt(int position);
74
void setupSectionIndicator(int section, int position);
75
void updateSectionIndicator(int section, int position);
77
bool isSectionSelected(int section) const;
78
inline void prepareSectionSelected()
79
{ if (sectionSelection.count() != sections.count() * 2)
80
sectionSelection.fill(false, sections.count() * 2);
81
else sectionSelection.fill(false); }
83
inline int defaultSectionSize() const
84
{ return (orientation == Qt::Horizontal ? 100 : 30); }
86
inline bool reverse() const
87
{ return q_func()->isRightToLeft() && orientation == Qt::Horizontal; }
89
enum State { NoState, ResizeSection, MoveSection } state;
92
Qt::Orientation orientation;
93
Qt::SortOrder sortIndicatorOrder;
94
int sortIndicatorSection;
95
bool sortIndicatorShown;
97
struct HeaderSection {
101
QHeaderView::ResizeMode mode;
102
inline bool operator>(int position) const
103
{ return (*this).position > position; }
105
mutable QVector<HeaderSection> sections; // HeaderSection = sections.at(visualIndex)
106
mutable QVector<int> visualIndices; // visualIndex = visualIndices.at(logicalIndex)
107
mutable QBitArray sectionSelection;
110
int section; // used for resizing and moving sections
114
bool movableSections;
115
bool clickableSections;
116
bool highlightSelected;
117
bool stretchLastSection;
119
int sectionIndicatorOffset;
120
QLabel *sectionIndicator;
121
QStyleOptionHeader getStyleOption() const;
122
QHeaderView::ResizeMode globalResizeMode;
125
#endif // QHEADERVIEW_P_H