~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/qt3support/itemviews/q3listview.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/****************************************************************************
 
2
**
 
3
** Copyright (C) 1992-2005 Trolltech AS. All rights reserved.
 
4
**
 
5
** This file is part of the Qt 3 compatibility classes of the Qt Toolkit.
 
6
**
 
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.
 
10
**
 
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.
 
15
**
 
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.
 
20
**
 
21
** Contact info@trolltech.com if any conditions of this licensing are
 
22
** not clear to you.
 
23
**
 
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.
 
26
**
 
27
****************************************************************************/
 
28
 
 
29
#ifndef Q3LISTVIEW_H
 
30
#define Q3LISTVIEW_H
 
31
 
 
32
#include "Qt3Support/q3scrollview.h"
 
33
 
 
34
#ifndef QT_NO_LISTVIEW
 
35
 
 
36
 
 
37
class QPixmap;
 
38
class QFont;
 
39
class Q3Header;
 
40
class QIcon;
 
41
 
 
42
class Q3ListView;
 
43
struct Q3ListViewPrivate;
 
44
struct Q3CheckListItemPrivate;
 
45
class Q3ListViewItemIterator;
 
46
struct Q3ListViewItemIteratorPrivate;
 
47
class Q3DragObject;
 
48
class QMimeSource;
 
49
class QLineEdit;
 
50
class Q3ListViewToolTip;
 
51
 
 
52
class Q_COMPAT_EXPORT Q3ListViewItem
 
53
{
 
54
    friend class Q3ListViewItemIterator;
 
55
    friend class Q3ListViewToolTip;
 
56
 
 
57
public:
 
58
    Q3ListViewItem(Q3ListView * parent);
 
59
    Q3ListViewItem(Q3ListViewItem * parent);
 
60
    Q3ListViewItem(Q3ListView * parent, Q3ListViewItem * after);
 
61
    Q3ListViewItem(Q3ListViewItem * parent, Q3ListViewItem * after);
 
62
 
 
63
    Q3ListViewItem(Q3ListView * parent,
 
64
                   const QString&,             const QString& = QString(),
 
65
                   const QString& = QString(), const QString& = QString(),
 
66
                   const QString& = QString(), const QString& = QString(),
 
67
                   const QString& = QString(), const QString& = QString());
 
68
    Q3ListViewItem(Q3ListViewItem * parent,
 
69
                   const QString&,             const QString& = QString(),
 
70
                   const QString& = QString(), const QString& = QString(),
 
71
                   const QString& = QString(), const QString& = QString(),
 
72
                   const QString& = QString(), const QString& = QString());
 
73
 
 
74
    Q3ListViewItem(Q3ListView * parent, Q3ListViewItem * after,
 
75
                   const QString&,             const QString& = QString(),
 
76
                   const QString& = QString(), const QString& = QString(),
 
77
                   const QString& = QString(), const QString& = QString(),
 
78
                   const QString& = QString(), const QString& = QString());
 
79
    Q3ListViewItem(Q3ListViewItem * parent, Q3ListViewItem * after,
 
80
                   const QString&,             const QString& = QString(),
 
81
                   const QString& = QString(), const QString& = QString(),
 
82
                   const QString& = QString(), const QString& = QString(),
 
83
                   const QString& = QString(), const QString& = QString());
 
84
    virtual ~Q3ListViewItem();
 
85
 
 
86
    virtual void insertItem(Q3ListViewItem *);
 
87
    virtual void takeItem(Q3ListViewItem *);
 
88
    virtual void removeItem(Q3ListViewItem *item) { takeItem(item); }
 
89
 
 
90
    int height() const;
 
91
    virtual void invalidateHeight();
 
92
    int totalHeight() const;
 
93
    virtual int width(const QFontMetrics&,
 
94
                       const Q3ListView*, int column) const;
 
95
    void widthChanged(int column=-1) const;
 
96
    int depth() const;
 
97
 
 
98
    virtual void setText(int, const QString &);
 
99
    virtual QString text(int) const;
 
100
 
 
101
    virtual void setPixmap(int, const QPixmap &);
 
102
    virtual const QPixmap * pixmap(int) const;
 
103
 
 
104
    virtual QString key(int, bool) const;
 
105
    virtual int compare(Q3ListViewItem *i, int col, bool) const;
 
106
    virtual void sortChildItems(int, bool);
 
107
 
 
108
    int childCount() const { return nChildren; }
 
109
 
 
110
    bool isOpen() const { return open; }
 
111
    virtual void setOpen(bool);
 
112
    virtual void setup();
 
113
 
 
114
    virtual void setSelected(bool);
 
115
    bool isSelected() const { return selected; }
 
116
 
 
117
    virtual void paintCell(QPainter *, const QColorGroup & cg,
 
118
                            int column, int width, int alignment);
 
119
    virtual void paintBranches(QPainter * p, const QColorGroup & cg, int w, int y, int h);
 
120
    virtual void paintFocus(QPainter *, const QColorGroup & cg, const QRect & r);
 
121
 
 
122
    Q3ListViewItem * firstChild() const;
 
123
    Q3ListViewItem * nextSibling() const { return siblingItem; }
 
124
    Q3ListViewItem * parent() const;
 
125
 
 
126
    Q3ListViewItem * itemAbove() const;
 
127
    Q3ListViewItem * itemBelow() const;
 
128
 
 
129
    int itemPos() const;
 
130
 
 
131
    Q3ListView *listView() const;
 
132
 
 
133
    virtual void setSelectable(bool enable);
 
134
    bool isSelectable() const { return selectable && enabled; }
 
135
 
 
136
    virtual void setExpandable(bool);
 
137
    bool isExpandable() const { return expandable; }
 
138
 
 
139
    void repaint() const;
 
140
 
 
141
    virtual void sort();
 
142
    void moveItem(Q3ListViewItem *after);
 
143
 
 
144
    virtual void setDragEnabled(bool allow);
 
145
    virtual void setDropEnabled(bool allow);
 
146
    bool dragEnabled() const;
 
147
    bool dropEnabled() const;
 
148
    virtual bool acceptDrop(const QMimeSource *mime) const;
 
149
 
 
150
    void setVisible(bool b);
 
151
    bool isVisible() const;
 
152
 
 
153
    virtual void setRenameEnabled(int col, bool b);
 
154
    bool renameEnabled(int col) const;
 
155
    virtual void startRename(int col);
 
156
 
 
157
    virtual void setEnabled(bool b);
 
158
    bool isEnabled() const;
 
159
 
 
160
    virtual int rtti() const;
 
161
    enum { RTTI = 0 };
 
162
 
 
163
    virtual void setMultiLinesEnabled(bool b);
 
164
    bool multiLinesEnabled() const;
 
165
 
 
166
protected:
 
167
    virtual void enforceSortOrder() const;
 
168
    virtual void setHeight(int);
 
169
    virtual void activate();
 
170
 
 
171
    bool activatedPos(QPoint &);
 
172
#ifndef QT_NO_DRAGANDDROP
 
173
    virtual void dropped(QDropEvent *e);
 
174
#endif
 
175
    virtual void dragEntered();
 
176
    virtual void dragLeft();
 
177
    virtual void okRename(int col);
 
178
    virtual void cancelRename(int col);
 
179
 
 
180
    void ignoreDoubleClick();
 
181
 
 
182
private:
 
183
    void init();
 
184
    void moveToJustAfter(Q3ListViewItem *);
 
185
    void enforceSortOrderBackToRoot();
 
186
    void removeRenameBox();
 
187
 
 
188
    int ownHeight;
 
189
    int maybeTotalHeight;
 
190
    int nChildren;
 
191
 
 
192
    uint lsc: 14;
 
193
    uint lso: 1;
 
194
    uint open : 1;
 
195
    uint selected : 1;
 
196
    uint selectable: 1;
 
197
    uint configured: 1;
 
198
    uint expandable: 1;
 
199
    uint is_root: 1;
 
200
    uint allow_drag : 1;
 
201
    uint allow_drop : 1;
 
202
    uint visible : 1;
 
203
    uint enabled : 1;
 
204
    uint mlenabled : 1;
 
205
 
 
206
    Q3ListViewItem * parentItem;
 
207
    Q3ListViewItem * siblingItem;
 
208
    Q3ListViewItem * childItem;
 
209
    QLineEdit *renameBox;
 
210
    int renameCol;
 
211
 
 
212
    void * columns;
 
213
 
 
214
    friend class Q3ListView;
 
215
};
 
216
 
 
217
class Q3CheckListItem;
 
218
 
 
219
class Q_COMPAT_EXPORT Q3ListView : public Q3ScrollView
 
220
{
 
221
    friend class Q3ListViewItemIterator;
 
222
    friend class Q3ListViewItem;
 
223
    friend class Q3CheckListItem;
 
224
    friend class Q3ListViewToolTip;
 
225
 
 
226
    Q_OBJECT
 
227
    Q_ENUMS(SelectionMode ResizeMode RenameAction)
 
228
    Q_PROPERTY(int columns READ columns)
 
229
    Q_PROPERTY(bool multiSelection READ isMultiSelection WRITE setMultiSelection DESIGNABLE false)
 
230
    Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode)
 
231
    Q_PROPERTY(int childCount READ childCount)
 
232
    Q_PROPERTY(bool allColumnsShowFocus READ allColumnsShowFocus WRITE setAllColumnsShowFocus)
 
233
    Q_PROPERTY(bool showSortIndicator READ showSortIndicator WRITE setShowSortIndicator)
 
234
    Q_PROPERTY(int itemMargin READ itemMargin WRITE setItemMargin)
 
235
    Q_PROPERTY(bool rootIsDecorated READ rootIsDecorated WRITE setRootIsDecorated)
 
236
    Q_PROPERTY(bool showToolTips READ showToolTips WRITE setShowToolTips)
 
237
    Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode)
 
238
    Q_PROPERTY(int treeStepSize READ treeStepSize WRITE setTreeStepSize)
 
239
    Q_PROPERTY(RenameAction defaultRenameAction READ defaultRenameAction WRITE setDefaultRenameAction)
 
240
 
 
241
public:
 
242
    Q3ListView(QWidget* parent=0, const char* name=0, Qt::WFlags f = 0);
 
243
    ~Q3ListView();
 
244
 
 
245
    int treeStepSize() const;
 
246
    virtual void setTreeStepSize(int);
 
247
 
 
248
    virtual void insertItem(Q3ListViewItem *);
 
249
    virtual void takeItem(Q3ListViewItem *);
 
250
    virtual void removeItem(Q3ListViewItem *item) { takeItem(item); }
 
251
 
 
252
    Q3Header * header() const;
 
253
 
 
254
    virtual int addColumn(const QString &label, int size = -1);
 
255
    virtual int addColumn(const QIcon& icon, const QString &label, int size = -1);
 
256
    virtual void removeColumn(int index);
 
257
    virtual void setColumnText(int column, const QString &label);
 
258
    virtual void setColumnText(int column, const QIcon& icon, const QString &label);
 
259
    QString columnText(int column) const;
 
260
    virtual void setColumnWidth(int column, int width);
 
261
    int columnWidth(int column) const;
 
262
    enum WidthMode { Manual, Maximum };
 
263
    virtual void setColumnWidthMode(int column, WidthMode);
 
264
    WidthMode columnWidthMode(int column) const;
 
265
    int columns() const;
 
266
 
 
267
    virtual void setColumnAlignment(int, int);
 
268
    int columnAlignment(int) const;
 
269
 
 
270
    void show();
 
271
 
 
272
    QVariant inputMethodQuery(Qt::InputMethodQuery query) const;
 
273
    Q3ListViewItem * itemAt(const QPoint & screenPos) const;
 
274
    QRect itemRect(const Q3ListViewItem *) const;
 
275
    int itemPos(const Q3ListViewItem *);
 
276
 
 
277
    void ensureItemVisible(const Q3ListViewItem *);
 
278
 
 
279
    void repaintItem(const Q3ListViewItem *) const;
 
280
 
 
281
    virtual void setMultiSelection(bool enable);
 
282
    bool isMultiSelection() const;
 
283
 
 
284
    enum SelectionMode { Single, Multi, Extended, NoSelection  };
 
285
    void setSelectionMode(SelectionMode mode);
 
286
    SelectionMode selectionMode() const;
 
287
 
 
288
    virtual void clearSelection();
 
289
    virtual void setSelected(Q3ListViewItem *, bool);
 
290
    void setSelectionAnchor(Q3ListViewItem *);
 
291
    bool isSelected(const Q3ListViewItem *) const;
 
292
    Q3ListViewItem * selectedItem() const;
 
293
    virtual void setOpen(Q3ListViewItem *, bool);
 
294
    bool isOpen(const Q3ListViewItem *) const;
 
295
 
 
296
    virtual void setCurrentItem(Q3ListViewItem *);
 
297
    Q3ListViewItem * currentItem() const;
 
298
 
 
299
    Q3ListViewItem * firstChild() const;
 
300
    Q3ListViewItem * lastItem() const;
 
301
 
 
302
    int childCount() const;
 
303
 
 
304
    virtual void setAllColumnsShowFocus(bool);
 
305
    bool allColumnsShowFocus() const;
 
306
 
 
307
    virtual void setItemMargin(int);
 
308
    int itemMargin() const;
 
309
 
 
310
    virtual void setRootIsDecorated(bool);
 
311
    bool rootIsDecorated() const;
 
312
 
 
313
    virtual void setSorting(int column, bool ascending = true);
 
314
    int sortColumn() const;
 
315
    void setSortColumn(int column);
 
316
    Qt::SortOrder sortOrder() const;
 
317
    void setSortOrder(Qt::SortOrder order);
 
318
    virtual void sort();
 
319
 
 
320
    bool eventFilter(QObject * o, QEvent *);
 
321
 
 
322
    QSize sizeHint() const;
 
323
    QSize minimumSizeHint() const;
 
324
 
 
325
    virtual void setShowSortIndicator(bool show);
 
326
    bool showSortIndicator() const;
 
327
    virtual void setShowToolTips(bool b);
 
328
    bool showToolTips() const;
 
329
 
 
330
    enum ResizeMode { NoColumn, AllColumns, LastColumn };
 
331
    virtual void setResizeMode(ResizeMode m);
 
332
    ResizeMode resizeMode() const;
 
333
 
 
334
    enum StringComparisonMode {
 
335
        CaseSensitive   = 0x00001, // 0 0001
 
336
        BeginsWith      = 0x00002, // 0 0010
 
337
        EndsWith        = 0x00004, // 0 0100
 
338
        Contains        = 0x00008, // 0 1000
 
339
        ExactMatch      = 0x00010  // 1 0000
 
340
    };
 
341
    typedef uint ComparisonFlags;
 
342
    Q3ListViewItem * findItem(const QString& text, int column,
 
343
                              ComparisonFlags = ExactMatch | Qt::CaseSensitive ) const;
 
344
 
 
345
    enum RenameAction { Accept, Reject };
 
346
    virtual void setDefaultRenameAction(RenameAction a);
 
347
    RenameAction defaultRenameAction() const;
 
348
    bool isRenaming() const;
 
349
 
 
350
    void hideColumn(int column);
 
351
 
 
352
public slots:
 
353
    virtual void clear();
 
354
    virtual void invertSelection();
 
355
    virtual void selectAll(bool select);
 
356
    void triggerUpdate();
 
357
    void setContentsPos(int x, int y);
 
358
    void adjustColumn(int col);
 
359
 
 
360
signals:
 
361
    void selectionChanged();
 
362
    void selectionChanged(Q3ListViewItem *);
 
363
    void currentChanged(Q3ListViewItem *);
 
364
    void clicked(Q3ListViewItem *);
 
365
    void clicked(Q3ListViewItem *, const QPoint &, int);
 
366
    void pressed(Q3ListViewItem *);
 
367
    void pressed(Q3ListViewItem *, const QPoint &, int);
 
368
 
 
369
    void doubleClicked(Q3ListViewItem *);
 
370
    void doubleClicked(Q3ListViewItem *, const QPoint&, int);
 
371
    void returnPressed(Q3ListViewItem *);
 
372
    void spacePressed(Q3ListViewItem *);
 
373
    void rightButtonClicked(Q3ListViewItem *, const QPoint&, int);
 
374
    void rightButtonPressed(Q3ListViewItem *, const QPoint&, int);
 
375
    void mouseButtonPressed(int, Q3ListViewItem *, const QPoint& , int);
 
376
    void mouseButtonClicked(int, Q3ListViewItem *, const QPoint&, int);
 
377
 
 
378
    void contextMenuRequested(Q3ListViewItem *, const QPoint &, int);
 
379
 
 
380
    void onItem(Q3ListViewItem *item);
 
381
    void onViewport();
 
382
 
 
383
    void expanded(Q3ListViewItem *item);
 
384
    void collapsed(Q3ListViewItem *item);
 
385
#ifndef QT_NO_DRAGANDDROP
 
386
    void dropped(QDropEvent *e);
 
387
#endif
 
388
    void itemRenamed(Q3ListViewItem *item, int col, const QString &);
 
389
    void itemRenamed(Q3ListViewItem *item, int col );
 
390
 
 
391
protected:
 
392
    void contentsMousePressEvent(QMouseEvent * e);
 
393
    void contentsMouseReleaseEvent(QMouseEvent * e);
 
394
    void contentsMouseMoveEvent(QMouseEvent * e);
 
395
    void contentsMouseDoubleClickEvent(QMouseEvent * e);
 
396
    void contentsContextMenuEvent(QContextMenuEvent * e);
 
397
#ifndef QT_NO_DRAGANDDROP
 
398
    void contentsDragEnterEvent(QDragEnterEvent *e);
 
399
    void contentsDragMoveEvent(QDragMoveEvent *e);
 
400
    void contentsDragLeaveEvent(QDragLeaveEvent *e);
 
401
    void contentsDropEvent(QDropEvent *e);
 
402
    virtual Q3DragObject *dragObject();
 
403
    virtual void startDrag();
 
404
#endif
 
405
 
 
406
    void focusInEvent(QFocusEvent * e);
 
407
    void focusOutEvent(QFocusEvent * e);
 
408
 
 
409
    void keyPressEvent(QKeyEvent *e);
 
410
 
 
411
    void resizeEvent(QResizeEvent *e);
 
412
    void viewportResizeEvent(QResizeEvent *e);
 
413
 
 
414
    void showEvent(QShowEvent *);
 
415
 
 
416
    void drawContentsOffset(QPainter *, int ox, int oy,
 
417
                             int cx, int cy, int cw, int ch);
 
418
 
 
419
    virtual void paintEmptyArea(QPainter *, const QRect &);
 
420
    void changeEvent(QEvent *);
 
421
 
 
422
protected slots:
 
423
    void updateContents();
 
424
    void doAutoScroll();
 
425
 
 
426
private slots:
 
427
    void changeSortColumn(int);
 
428
    void handleIndexChange();
 
429
    void updateDirtyItems();
 
430
    void makeVisible();
 
431
    void handleSizeChange(int, int, int);
 
432
    void startRename();
 
433
    void openFocusItem();
 
434
 
 
435
private:
 
436
    Q_DISABLE_COPY(Q3ListView)
 
437
 
 
438
    void contentsMousePressEventEx(QMouseEvent * e);
 
439
    void contentsMouseReleaseEventEx(QMouseEvent * e);
 
440
    void init();
 
441
    void updateGeometries();
 
442
    void buildDrawableList() const;
 
443
    void reconfigureItems();
 
444
    void widthChanged(const Q3ListViewItem*, int c);
 
445
    void handleItemChange(Q3ListViewItem *old, bool shift, bool control);
 
446
    void selectRange(Q3ListViewItem *from, Q3ListViewItem *to, bool invert, bool includeFirst, bool clearSel = false);
 
447
    bool selectRange(Q3ListViewItem *newItem, Q3ListViewItem *oldItem, Q3ListViewItem *anchorItem);
 
448
    bool clearRange(Q3ListViewItem *from, Q3ListViewItem *to, bool includeFirst = true);
 
449
    void doAutoScroll(const QPoint &cursorPos);
 
450
 
 
451
    Q3ListViewPrivate *d;
 
452
};
 
453
 
 
454
 
 
455
class Q_COMPAT_EXPORT Q3CheckListItem : public Q3ListViewItem
 
456
{
 
457
public:
 
458
    enum Type { RadioButton,
 
459
                CheckBox,
 
460
                Controller,
 
461
                RadioButtonController=Controller,
 
462
                CheckBoxController };
 
463
 
 
464
    enum ToggleState { Off, NoChange, On };
 
465
 
 
466
    Q3CheckListItem(Q3CheckListItem *parent, const QString &text,
 
467
                    Type = RadioButtonController);
 
468
    Q3CheckListItem(Q3CheckListItem *parent, Q3ListViewItem *after,
 
469
                    const QString &text, Type = RadioButtonController);
 
470
    Q3CheckListItem(Q3ListViewItem *parent, const QString &text,
 
471
                    Type = RadioButtonController);
 
472
    Q3CheckListItem(Q3ListViewItem *parent, Q3ListViewItem *after,
 
473
                    const QString &text, Type = RadioButtonController);
 
474
    Q3CheckListItem(Q3ListView *parent, const QString &text,
 
475
                    Type = RadioButtonController);
 
476
    Q3CheckListItem(Q3ListView *parent, Q3ListViewItem *after,
 
477
                    const QString &text, Type = RadioButtonController);
 
478
    Q3CheckListItem(Q3ListViewItem *parent, const QString &text,
 
479
                    const QPixmap &);
 
480
    Q3CheckListItem(Q3ListView *parent, const QString &text,
 
481
                    const QPixmap &);
 
482
    ~Q3CheckListItem();
 
483
 
 
484
    void paintCell(QPainter *, const QColorGroup & cg,
 
485
                    int column, int width, int alignment);
 
486
    virtual void paintFocus(QPainter *, const QColorGroup &cg,
 
487
                             const QRect & r);
 
488
    int width(const QFontMetrics&, const Q3ListView*, int column) const;
 
489
    void setup();
 
490
 
 
491
    virtual void setOn(bool);
 
492
    bool isOn() const { return on; }
 
493
    Type type() const { return myType; }
 
494
    QString text() const { return Q3ListViewItem::text(0); }
 
495
    QString text(int n) const { return Q3ListViewItem::text(n); }
 
496
 
 
497
    void setTristate(bool);
 
498
    bool isTristate() const;
 
499
    ToggleState state() const;
 
500
    void setState(ToggleState s);
 
501
 
 
502
    int rtti() const;
 
503
    enum { RTTI = 1 };
 
504
 
 
505
protected:
 
506
    void activate();
 
507
    void turnOffChild();
 
508
    virtual void stateChange(bool);
 
509
 
 
510
private:
 
511
    void init();
 
512
    ToggleState internalState() const;
 
513
    void setStoredState(ToggleState newState, Q3CheckListItem *key);
 
514
    ToggleState storedState(Q3CheckListItem *key) const;
 
515
    void stateChange(ToggleState s);
 
516
    void restoreState(Q3CheckListItem *key, int depth = 0);
 
517
    void updateController(bool update = true , bool store = false);
 
518
    void updateStoredState(Q3CheckListItem *key);
 
519
    void setState(ToggleState s, bool update, bool store);
 
520
    void setCurrentState(ToggleState s);
 
521
 
 
522
    Type myType;
 
523
    bool on;
 
524
    Q3CheckListItemPrivate *d;
 
525
};
 
526
 
 
527
class Q_COMPAT_EXPORT Q3ListViewItemIterator
 
528
{
 
529
    friend struct Q3ListViewPrivate;
 
530
    friend class Q3ListView;
 
531
    friend class Q3ListViewItem;
 
532
 
 
533
public:
 
534
    enum IteratorFlag {
 
535
        Visible =                 0x00000001,
 
536
        Invisible =                 0x00000002,
 
537
        Selected =                0x00000004,
 
538
        Unselected =                 0x00000008,
 
539
        Selectable =                0x00000010,
 
540
        NotSelectable =                0x00000020,
 
541
        DragEnabled =                0x00000040,
 
542
        DragDisabled =                0x00000080,
 
543
        DropEnabled =                0x00000100,
 
544
        DropDisabled =                0x00000200,
 
545
        Expandable =                0x00000400,
 
546
        NotExpandable =                0x00000800,
 
547
        Checked =                0x00001000,
 
548
        NotChecked =                0x00002000
 
549
    };
 
550
 
 
551
    Q3ListViewItemIterator();
 
552
    Q3ListViewItemIterator(Q3ListViewItem *item);
 
553
    Q3ListViewItemIterator(Q3ListViewItem *item, int iteratorFlags);
 
554
 
 
555
    Q3ListViewItemIterator(const Q3ListViewItemIterator &it);
 
556
    Q3ListViewItemIterator(Q3ListView *lv);
 
557
    Q3ListViewItemIterator(Q3ListView *lv, int iteratorFlags);
 
558
 
 
559
    Q3ListViewItemIterator &operator=(const Q3ListViewItemIterator &it);
 
560
 
 
561
    ~Q3ListViewItemIterator();
 
562
 
 
563
    Q3ListViewItemIterator &operator++();
 
564
    const Q3ListViewItemIterator operator++(int);
 
565
    Q3ListViewItemIterator &operator+=(int j);
 
566
 
 
567
    Q3ListViewItemIterator &operator--();
 
568
    const Q3ListViewItemIterator operator--(int);
 
569
    Q3ListViewItemIterator &operator-=(int j);
 
570
 
 
571
    Q3ListViewItem* operator*();
 
572
    Q3ListViewItem *current() const;
 
573
 
 
574
private:
 
575
    Q3ListViewItem *curr;
 
576
    Q3ListView *listView;
 
577
    int flags;
 
578
 
 
579
    void currentRemoved();
 
580
    bool matchesFlags(const Q3ListViewItem*) const;
 
581
    bool testPair(Q3ListViewItemIterator::IteratorFlag, Q3ListViewItemIterator::IteratorFlag, bool) const;
 
582
    bool isChecked(const Q3ListViewItem*) const;
 
583
};
 
584
 
 
585
#endif // QT_NO_LISTVIEW
 
586
 
 
587
#endif // Q3LISTVIEW_H