/****************************************************************************
** $Id: qlistview.h,v 2.93 1999/06/22 13:59:01 paul Exp $
**
** Definition of QListView widget class
**
** Created : 970809
**
** Copyright (C) 1992-1999 Troll Tech AS. All rights reserved.
**
** This file is part of the Qt GUI Toolkit.
**
** This file may be distributed under the terms of the Q Public License
** as defined by Troll Tech AS of Norway and appearing in the file
** LICENSE.QPL included in the packaging of this file.
**
** Licensees holding valid Qt Professional Edition licenses may use this
** file in accordance with the Qt Professional Edition License Agreement
** provided with the Qt Professional Edition.
**
** See http://www.troll.no/pricing.html or email sales@troll.no for
** information about the Professional Edition licensing, or see
** http://www.troll.no/qpl/ for QPL licensing information.
**
*****************************************************************************/
#ifndef QLISTVIEW_H
#define QLISTVIEW_H
class QPixmap;
class QFont;
class QHeader;
class QIconSet;
class QListView;
struct QListViewPrivate;
class QListViewItemIterator;
#ifndef QT_H
#include "qscrollview.h"
#endif // QT_H
class Q_EXPORT QListViewItem: public Qt
{
friend class QListViewItemIterator;
public:
QListViewItem( QListView * parent );
QListViewItem( QListViewItem * parent );
QListViewItem( QListView * parent, QListViewItem * after );
QListViewItem( QListViewItem * parent, QListViewItem * after );
QListViewItem( QListView * parent,
QString, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null );
QListViewItem( QListViewItem * parent,
QString, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null );
QListViewItem( QListView * parent, QListViewItem * after,
QString, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null );
QListViewItem( QListViewItem * parent, QListViewItem * after,
QString, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null,
QString = QString::null, QString = QString::null );
virtual ~QListViewItem();
virtual void insertItem( QListViewItem * );
virtual void takeItem( QListViewItem * );
virtual void removeItem( QListViewItem * ); //obsolete, use takeItem instead
int height() const;
virtual void invalidateHeight();
int totalHeight() const;
virtual int width( const QFontMetrics&,
const QListView*, int column) const;
void widthChanged(int column=-1) const;
int depth() const;
virtual void setText( int, const QString &);
virtual QString text( int ) const;
virtual void setPixmap( int, const QPixmap & );
virtual const QPixmap * pixmap( int ) const;
virtual QString key( int, bool ) const;
virtual void sortChildItems( int, bool );
int childCount() const { return nChildren; }
bool isOpen() const { return open; }
virtual void setOpen( bool );
virtual void setup();
virtual void setSelected( bool );
bool isSelected() const { return selected; }
virtual void paintCell( QPainter *, const QColorGroup & cg,
int column, int width, int alignment );
virtual void paintBranches( QPainter * p, const QColorGroup & cg,
int w, int y, int h, GUIStyle s );
virtual void paintFocus( QPainter *, const QColorGroup & cg,
const QRect & r );
QListViewItem * firstChild() const;
QListViewItem * nextSibling() const { return siblingItem; }
QListViewItem * parent() const;
QListViewItem * itemAbove();
QListViewItem * itemBelow();
int itemPos() const;
QListView *listView() const;
virtual void setSelectable( bool enable );
bool isSelectable() const { return selectable; }
virtual void setExpandable( bool );
bool isExpandable() const { return expandable; }
void repaint() const;
protected:
virtual void enforceSortOrder() const;
virtual void setHeight( int );
virtual void activate();
private:
void init();
void moveToJustAfter( QListViewItem * );
int ownHeight;
int maybeTotalHeight;
int nChildren;
uint lsc: 14;
uint lso: 1;
uint open : 1;
uint selected : 1;
uint selectable: 1;
uint configured: 1;
uint expandable: 1;
uint is_root: 1;
QListViewItem * parentItem;
QListViewItem * siblingItem;
QListViewItem * childItem;
void * columns;
friend class QListView;
};
class Q_EXPORT QListView: public QScrollView
{
friend class QListViewItemIterator;
Q_OBJECT
public:
QListView( QWidget * parent = 0, const char *name = 0 );
~QListView();
int treeStepSize() const;
virtual void setTreeStepSize( int );
virtual void insertItem( QListViewItem * );
virtual void takeItem( QListViewItem * );
virtual void removeItem( QListViewItem * ); // obsolete, use takeItem instead
virtual void clear();
QHeader * header() const;
virtual int addColumn( const QString &label, int size = -1);
virtual int addColumn( const QIconSet& iconset, const QString &label, int size = -1);
virtual void setColumnText( int column, const QString &label );
virtual void setColumnText( int column, const QIconSet& iconset, const QString &label );
QString columnText( int column ) const;
virtual void setColumnWidth( int column, int width );
int columnWidth( int column ) const;
enum WidthMode { Manual, Maximum };
virtual void setColumnWidthMode( int column, WidthMode );
WidthMode columnWidthMode( int column ) const;
virtual void setColumnAlignment( int, int );
int columnAlignment( int ) const;
void show();
QListViewItem * itemAt( const QPoint & screenPos ) const;
QRect itemRect( const QListViewItem * ) const;
int itemPos( const QListViewItem * );
void ensureItemVisible( const QListViewItem * );
void repaintItem( const QListViewItem * ) const;
virtual void setMultiSelection( bool enable );
bool isMultiSelection() const;
virtual void clearSelection();
virtual void setSelected( QListViewItem *, bool );
bool isSelected( const QListViewItem * ) const;
QListViewItem * selectedItem() const;
virtual void setOpen( QListViewItem *, bool );
bool isOpen( const QListViewItem * ) const;
virtual void setCurrentItem( QListViewItem * );
QListViewItem * currentItem() const;
QListViewItem * firstChild() const;
int childCount() const;
virtual void setAllColumnsShowFocus( bool );
bool allColumnsShowFocus() const;
virtual void setItemMargin( int );
int itemMargin() const;
virtual void setRootIsDecorated( bool );
bool rootIsDecorated() const;
virtual void setSorting( int column, bool increasing = TRUE );
virtual void setFont( const QFont & );
virtual void setPalette( const QPalette & );
bool eventFilter( QObject * o, QEvent * );
QSize sizeHint() const;
QSize minimumSizeHint() const;
public slots:
void triggerUpdate();
signals:
void selectionChanged();
void selectionChanged( QListViewItem * );
void currentChanged( QListViewItem * );
void doubleClicked( QListViewItem * );
void returnPressed( QListViewItem * );
void rightButtonClicked( QListViewItem *, const QPoint&, int );
void rightButtonPressed( QListViewItem *, const QPoint&, int );
protected:
void contentsMousePressEvent( QMouseEvent * e );
void contentsMouseReleaseEvent( QMouseEvent * e );
void contentsMouseMoveEvent( QMouseEvent * e );
void contentsMouseDoubleClickEvent( QMouseEvent * e );
void focusInEvent( QFocusEvent * e );
void focusOutEvent( QFocusEvent * e );
void keyPressEvent( QKeyEvent *e );
void resizeEvent( QResizeEvent *e );
void showEvent( QShowEvent * );
void drawContentsOffset( QPainter *, int ox, int oy,
int cx, int cy, int cw, int ch );
virtual void paintEmptyArea( QPainter *, const QRect & );
void enabledChange( bool );
void styleChange( QStyle& );
protected slots:
void updateContents();
void doAutoScroll();
private slots:
void changeSortColumn( int );
void updateDirtyItems();
void makeVisible();
void handleSizeChange( int, int, int );
private:
void updateGeometries();
void buildDrawableList() const;
void reconfigureItems();
void widthChanged(const QListViewItem*, int c);
QListViewPrivate * d;
friend class QListViewItem;
};
class Q_EXPORT QCheckListItem : public QListViewItem
{
public:
enum Type { RadioButton, CheckBox, Controller };
QCheckListItem( QCheckListItem *parent, const QString &text,
Type = Controller );
QCheckListItem( QListViewItem *parent, const QString &text,
Type = Controller );
QCheckListItem( QListView *parent, const QString &text,
Type = Controller );
QCheckListItem( QListViewItem *parent, const QString &text,
const QPixmap & );
QCheckListItem( QListView *parent, const QString &text,
const QPixmap & );
void paintCell( QPainter *, const QColorGroup & cg,
int column, int width, int alignment );
virtual void paintFocus( QPainter *, const QColorGroup & cg,
const QRect & r );
int width( const QFontMetrics&, const QListView*, int column) const;
void setup();
virtual void setOn( bool );
bool isOn() const { return on; }
Type type() const { return myType; }
QString text() const { return QListViewItem::text( 0 ); }
QString text( int n ) const { return QListViewItem::text( n ); }
protected:
void paintBranches( QPainter * p, const QColorGroup & cg,
int w, int y, int h, GUIStyle s );
void activate();
void turnOffChild();
virtual void stateChange( bool );
private:
void init();
Type myType;
bool on;
QCheckListItem *exclusive;
void *reserved;
};
class Q_EXPORT QListViewItemIterator
{
friend struct QListViewPrivate;
friend class QListView;
friend class QListViewItem;
public:
QListViewItemIterator();
QListViewItemIterator( QListViewItem *item );
QListViewItemIterator( const QListViewItemIterator &it );
QListViewItemIterator( QListView *lv );
QListViewItemIterator &operator=( const QListViewItemIterator &it );
~QListViewItemIterator();
QListViewItemIterator &operator++();
const QListViewItemIterator operator++( int );
QListViewItemIterator &operator+=( int j );
QListViewItemIterator &operator--();
const QListViewItemIterator operator--( int );
QListViewItemIterator &operator-=( int j );
QListViewItem *current() const;
protected:
QListViewItem *curr;
QListView *listView;
private:
void addToListView();
void currentRemoved();
};
#endif // QLISTVIEW_H
| Copyright © 1999 Troll Tech | Trademarks | Qt version 2.0.2
|