diff options
Diffstat (limited to 'src/widgets/qlistview.h')
-rw-r--r-- | src/widgets/qlistview.h | 605 |
1 files changed, 605 insertions, 0 deletions
diff --git a/src/widgets/qlistview.h b/src/widgets/qlistview.h new file mode 100644 index 000000000..f29b21561 --- /dev/null +++ b/src/widgets/qlistview.h @@ -0,0 +1,605 @@ +/**************************************************************************** +** +** Definition of TQListView widget class +** +** Created : 970809 +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of the widgets module of the TQt GUI Toolkit. +** +** This file may be used under the terms of the GNU General +** Public License versions 2.0 or 3.0 as published by the Free +** Software Foundation and appearing in the files LICENSE.GPL2 +** and LICENSE.GPL3 included in the packaging of this file. +** Alternatively you may (at your option) use any later version +** of the GNU General Public License if such license has been +** publicly approved by Trolltech ASA (or its successors, if any) +** and the KDE Free TQt Foundation. +** +** Please review the following information to ensure GNU General +** Public Licensing retquirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/. +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** This file may be used under the terms of the Q Public License as +** defined by Trolltech ASA and appearing in the file LICENSE.TQPL +** included in the packaging of this file. Licensees holding valid TQt +** Commercial licenses may use this file in accordance with the TQt +** Commercial License Agreement provided with the Software. +** +** This file is provided "AS IS" with NO WARRANTY OF ANY KIND, +** INCLUDING THE WARRANTIES OF DESIGN, MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE. Trolltech reserves all rights not granted +** herein. +** +**********************************************************************/ + +#ifndef TQLISTVIEW_H +#define TQLISTVIEW_H + +#ifndef QT_H +#include "qscrollview.h" +#endif // QT_H + +#ifndef QT_NO_LISTVIEW + + +class TQPixmap; +class TQFont; +class TQHeader; +class TQIconSet; + +class TQListView; +struct TQListViewPrivate; +struct TQCheckListItemPrivate; +class TQListViewItemIterator; +struct TQListViewItemIteratorPrivate; +class TQDragObject; +class TQMimeSource; +class TQLineEdit; +class TQListViewToolTip; + +class Q_EXPORT TQListViewItem : public TQt +{ + friend class TQListViewItemIterator; + friend class TQListViewToolTip; + +public: + TQListViewItem( TQListView * parent ); + TQListViewItem( TQListViewItem * parent ); + TQListViewItem( TQListView * parent, TQListViewItem * after ); + TQListViewItem( TQListViewItem * parent, TQListViewItem * after ); + + TQListViewItem( TQListView * parent, + TQString, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null ); + TQListViewItem( TQListViewItem * parent, + TQString, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null ); + + TQListViewItem( TQListView * parent, TQListViewItem * after, + TQString, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null ); + TQListViewItem( TQListViewItem * parent, TQListViewItem * after, + TQString, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null, + TQString = TQString::null, TQString = TQString::null ); + virtual ~TQListViewItem(); + + virtual void insertItem( TQListViewItem * ); + virtual void takeItem( TQListViewItem * ); + virtual void removeItem( TQListViewItem *item ) { takeItem( item ); } //obsolete, use takeItem instead + + int height() const; + virtual void invalidateHeight(); + int totalHeight() const; + virtual int width( const TQFontMetrics&, + const TQListView*, int column) const; + void widthChanged(int column=-1) const; + int depth() const; + + virtual void setText( int, const TQString &); + virtual TQString text( int ) const; + + virtual void setPixmap( int, const TQPixmap & ); + virtual const TQPixmap * pixmap( int ) const; + + virtual TQString key( int, bool ) const; + virtual int compare( TQListViewItem *i, int col, 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( TQPainter *, const TQColorGroup & cg, + int column, int width, int alignment ); + virtual void paintBranches( TQPainter * p, const TQColorGroup & cg, + int w, int y, int h ); + virtual void paintFocus( TQPainter *, const TQColorGroup & cg, + const TQRect & r ); + + TQListViewItem * firstChild() const; + TQListViewItem * nextSibling() const { return siblingItem; } + TQListViewItem * parent() const; + + TQListViewItem * itemAbove(); + TQListViewItem * itemBelow(); + + int itemPos() const; + + TQListView *listView() const; + + virtual void setSelectable( bool enable ); + bool isSelectable() const { return selectable && enabled; } + + virtual void setExpandable( bool ); + bool isExpandable() const { return expandable; } + + void repaint() const; + + virtual void sort(); + void moveItem( TQListViewItem *after ); + + virtual void setDragEnabled( bool allow ); + virtual void setDropEnabled( bool allow ); + bool dragEnabled() const; + bool dropEnabled() const; + virtual bool acceptDrop( const TQMimeSource *mime ) const; + + void setVisible( bool b ); + bool isVisible() const; + + virtual void setRenameEnabled( int col, bool b ); + bool renameEnabled( int col ) const; + virtual void startRename( int col ); + + virtual void setEnabled( bool b ); + bool isEnabled() const; + + virtual int rtti() const; + // ### TQt 4: make const or better use an enum + static int RTTI; + + virtual void setMultiLinesEnabled( bool b ); + bool multiLinesEnabled() const; + +protected: + virtual void enforceSortOrder() const; + virtual void setHeight( int ); + virtual void activate(); + + bool activatedPos( TQPoint & ); +#ifndef QT_NO_DRAGANDDROP + virtual void dropped( TQDropEvent *e ); +#endif + virtual void dragEntered(); + virtual void dragLeft(); + virtual void okRename( int col ); + virtual void cancelRename( int col ); + + void ignoreDoubleClick(); + +private: + void init(); + void moveToJustAfter( TQListViewItem * ); + void enforceSortOrderBackToRoot(); + void removeRenameBox(); + + 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; + uint allow_drag : 1; + uint allow_drop : 1; + uint visible : 1; + uint enabled : 1; + uint mlenabled : 1; + + TQListViewItem * parentItem; + TQListViewItem * siblingItem; + TQListViewItem * childItem; + TQLineEdit *renameBox; + int renameCol; + + void * columns; + + friend class TQListView; +}; + +class TQCheckListItem; + +class Q_EXPORT TQListView: public TQScrollView +{ + friend class TQListViewItemIterator; + friend class TQListViewItem; + friend class TQCheckListItem; + friend class TQListViewToolTip; + + Q_OBJECT + Q_ENUMS( SelectionMode ResizeMode RenameAction ) + Q_PROPERTY( int columns READ columns ) + Q_PROPERTY( bool multiSelection READ isMultiSelection WRITE setMultiSelection DESIGNABLE false ) + Q_PROPERTY( SelectionMode selectionMode READ selectionMode WRITE setSelectionMode ) + Q_PROPERTY( int childCount READ childCount ) + Q_PROPERTY( bool allColumnsShowFocus READ allColumnsShowFocus WRITE setAllColumnsShowFocus ) + Q_PROPERTY( bool showSortIndicator READ showSortIndicator WRITE setShowSortIndicator ) + Q_PROPERTY( int itemMargin READ itemMargin WRITE setItemMargin ) + Q_PROPERTY( bool rootIsDecorated READ rootIsDecorated WRITE setRootIsDecorated ) + Q_PROPERTY( bool showToolTips READ showToolTips WRITE setShowToolTips ) + Q_PROPERTY( ResizeMode resizeMode READ resizeMode WRITE setResizeMode ) + Q_PROPERTY( int treeStepSize READ treeStepSize WRITE setTreeStepSize ) + Q_PROPERTY( RenameAction defaultRenameAction READ defaultRenameAction WRITE setDefaultRenameAction ) + +public: + TQListView( TQWidget* parent=0, const char* name=0, WFlags f = 0 ); + ~TQListView(); + + int treeStepSize() const; + virtual void setTreeStepSize( int ); + + virtual void insertItem( TQListViewItem * ); + virtual void takeItem( TQListViewItem * ); + virtual void removeItem( TQListViewItem *item ) { takeItem( item ); } // obsolete, use takeItem instead + + TQHeader * header() const; + + virtual int addColumn( const TQString &label, int size = -1); + virtual int addColumn( const TQIconSet& iconset, const TQString &label, int size = -1); + virtual void removeColumn( int index ); + virtual void setColumnText( int column, const TQString &label ); + virtual void setColumnText( int column, const TQIconSet& iconset, const TQString &label ); + TQString 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; + int columns() const; + + virtual void setColumnAlignment( int, int ); + int columnAlignment( int ) const; + + void show(); + + TQListViewItem * itemAt( const TQPoint & screenPos ) const; + TQRect itemRect( const TQListViewItem * ) const; + int itemPos( const TQListViewItem * ); + + void ensureItemVisible( const TQListViewItem * ); + + void repaintItem( const TQListViewItem * ) const; + + virtual void setMultiSelection( bool enable ); + bool isMultiSelection() const; + + enum SelectionMode { Single, Multi, Extended, NoSelection }; + void setSelectionMode( SelectionMode mode ); + SelectionMode selectionMode() const; + + virtual void clearSelection(); + virtual void setSelected( TQListViewItem *, bool ); + void setSelectionAnchor( TQListViewItem * ); + bool isSelected( const TQListViewItem * ) const; + TQListViewItem * selectedItem() const; + virtual void setOpen( TQListViewItem *, bool ); + bool isOpen( const TQListViewItem * ) const; + + virtual void setCurrentItem( TQListViewItem * ); + TQListViewItem * currentItem() const; + + TQListViewItem * firstChild() const; + TQListViewItem * lastItem() 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 ascending = TRUE ); + int sortColumn() const; + void setSortColumn( int column ); + SortOrder sortOrder() const; + void setSortOrder( SortOrder order ); + virtual void sort(); + + virtual void setFont( const TQFont & ); + virtual void setPalette( const TQPalette & ); + + bool eventFilter( TQObject * o, TQEvent * ); + + TQSize sizeHint() const; + TQSize minimumSizeHint() const; + + virtual void setShowSortIndicator( bool show ); + bool showSortIndicator() const; + virtual void setShowToolTips( bool b ); + bool showToolTips() const; + + enum ResizeMode { NoColumn, AllColumns, LastColumn }; + virtual void setResizeMode( ResizeMode m ); + ResizeMode resizeMode() const; + + TQListViewItem * findItem( const TQString& text, int column, ComparisonFlags compare = ExactMatch | CaseSensitive ) const; + + enum RenameAction { Accept, Reject }; + virtual void setDefaultRenameAction( RenameAction a ); + RenameAction defaultRenameAction() const; + bool isRenaming() const; + + void hideColumn( int column ); + +public slots: + virtual void clear(); + virtual void invertSelection(); + virtual void selectAll( bool select ); + void triggerUpdate(); + void setContentsPos( int x, int y ); + void adjustColumn( int col ); + +signals: + void selectionChanged(); + void selectionChanged( TQListViewItem * ); + void currentChanged( TQListViewItem * ); + void clicked( TQListViewItem * ); + void clicked( TQListViewItem *, const TQPoint &, int ); + void pressed( TQListViewItem * ); + void pressed( TQListViewItem *, const TQPoint &, int ); + + void doubleClicked( TQListViewItem * ); + void doubleClicked( TQListViewItem *, const TQPoint&, int ); + void returnPressed( TQListViewItem * ); + void spacePressed( TQListViewItem * ); + void rightButtonClicked( TQListViewItem *, const TQPoint&, int ); + void rightButtonPressed( TQListViewItem *, const TQPoint&, int ); + void mouseButtonPressed( int, TQListViewItem *, const TQPoint& , int ); + void mouseButtonClicked( int, TQListViewItem *, const TQPoint&, int ); + + void contextMenuRequested( TQListViewItem *, const TQPoint &, int ); + + void onItem( TQListViewItem *item ); + void onViewport(); + + void expanded( TQListViewItem *item ); + void collapsed( TQListViewItem *item ); +#ifndef QT_NO_DRAGANDDROP + void dropped( TQDropEvent *e ); +#endif + void itemRenamed( TQListViewItem *item, int col, const TQString & ); + void itemRenamed( TQListViewItem *item, int col ); + +protected: + void contentsMousePressEvent( TQMouseEvent * e ); + void contentsMouseReleaseEvent( TQMouseEvent * e ); + void contentsMouseMoveEvent( TQMouseEvent * e ); + void contentsMouseDoubleClickEvent( TQMouseEvent * e ); + void contentsContextMenuEvent( TQContextMenuEvent * e ); +#ifndef QT_NO_DRAGANDDROP + void contentsDragEnterEvent( TQDragEnterEvent *e ); + void contentsDragMoveEvent( TQDragMoveEvent *e ); + void contentsDragLeaveEvent( TQDragLeaveEvent *e ); + void contentsDropEvent( TQDropEvent *e ); + virtual TQDragObject *dragObject(); + virtual void startDrag(); +#endif + + void focusInEvent( TQFocusEvent * e ); + void focusOutEvent( TQFocusEvent * e ); + + void keyPressEvent( TQKeyEvent *e ); + + void resizeEvent( TQResizeEvent *e ); + void viewportResizeEvent( TQResizeEvent *e ); + + void showEvent( TQShowEvent * ); + + void drawContentsOffset( TQPainter *, int ox, int oy, + int cx, int cy, int cw, int ch ); + + virtual void paintEmptyArea( TQPainter *, const TQRect & ); + void styleChange( TQStyle& ); + void windowActivationChange( bool ); + +protected slots: + void updateContents(); + void doAutoScroll(); + +private slots: + void changeSortColumn( int ); + void handleIndexChange(); + void updateDirtyItems(); + void makeVisible(); + void handleSizeChange( int, int, int ); + void startRename(); + void openFocusItem(); + +private: + void contentsMousePressEventEx( TQMouseEvent * e ); + void contentsMouseReleaseEventEx( TQMouseEvent * e ); + void init(); + void updateGeometries(); + void buildDrawableList() const; + void reconfigureItems(); + void widthChanged(const TQListViewItem*, int c); + void handleItemChange( TQListViewItem *old, bool shift, bool control ); + void selectRange( TQListViewItem *from, TQListViewItem *to, bool invert, bool includeFirst, bool clearSel = FALSE ); + bool selectRange( TQListViewItem *newItem, TQListViewItem *oldItem, TQListViewItem *anchorItem ); + bool clearRange( TQListViewItem *from, TQListViewItem *to, bool includeFirst = TRUE ); + void doAutoScroll( const TQPoint &cursorPos ); + + TQListViewPrivate * d; + +private: // Disabled copy constructor and operator= +#if defined(Q_DISABLE_COPY) + TQListView( const TQListView & ); + TQListView &operator=( const TQListView & ); +#endif +}; + + +class Q_EXPORT TQCheckListItem : public TQListViewItem +{ +public: + enum Type { RadioButton, + CheckBox, + Controller, + RadioButtonController=Controller, + CheckBoxController }; + // ### should be integrated with qbutton in ver4 perhaps + enum ToggleState { Off, NoChange, On }; + + TQCheckListItem( TQCheckListItem *parent, const TQString &text, + Type = RadioButtonController ); + TQCheckListItem( TQCheckListItem *parent, TQListViewItem *after, + const TQString &text, Type = RadioButtonController ); + TQCheckListItem( TQListViewItem *parent, const TQString &text, + Type = RadioButtonController ); + TQCheckListItem( TQListViewItem *parent, TQListViewItem *after, + const TQString &text, Type = RadioButtonController ); + TQCheckListItem( TQListView *parent, const TQString &text, + Type = RadioButtonController ); + TQCheckListItem( TQListView *parent, TQListViewItem *after, + const TQString &text, Type = RadioButtonController ); + TQCheckListItem( TQListViewItem *parent, const TQString &text, + const TQPixmap & ); + TQCheckListItem( TQListView *parent, const TQString &text, + const TQPixmap & ); + ~TQCheckListItem(); + + void paintCell( TQPainter *, const TQColorGroup & cg, + int column, int width, int alignment ); + virtual void paintFocus( TQPainter *, const TQColorGroup & cg, + const TQRect & r ); + int width( const TQFontMetrics&, const TQListView*, int column) const; + void setup(); + + virtual void setOn( bool ); // ### should be replaced by setChecked in ver4 + bool isOn() const { return on; } + Type type() const { return myType; } + TQString text() const { return TQListViewItem::text( 0 ); } + TQString text( int n ) const { return TQListViewItem::text( n ); } + + void setTristate( bool ); + bool isTristate() const; + ToggleState state() const; + void setState( ToggleState s); + + int rtti() const; + static int RTTI; + +protected: + void activate(); + void turnOffChild(); + virtual void stateChange( bool ); + +private: + void init(); + ToggleState internalState() const; + void setStoredState( ToggleState newState, void *key ); + ToggleState storedState( void *key ) const; + void stateChange( ToggleState s ); + void restoreState( void *key, int depth = 0 ); + void updateController( bool update = TRUE , bool store = FALSE ); + void updateStoredState( void *key ); + void setState( ToggleState s, bool update, bool store ); + void setCurrentState( ToggleState s ); + + Type myType; + bool on; // ### remove in ver4 + TQCheckListItemPrivate *d; +}; + +class Q_EXPORT TQListViewItemIterator +{ + friend struct TQListViewPrivate; + friend class TQListView; + friend class TQListViewItem; + +public: + enum IteratorFlag { + Visible = 0x00000001, + Invisible = 0x00000002, + Selected = 0x00000004, + Unselected = 0x00000008, + Selectable = 0x00000010, + NotSelectable = 0x00000020, + DragEnabled = 0x00000040, + DragDisabled = 0x00000080, + DropEnabled = 0x00000100, + DropDisabled = 0x00000200, + Expandable = 0x00000400, + NotExpandable = 0x00000800, + Checked = 0x00001000, + NotChecked = 0x00002000 + }; + + TQListViewItemIterator(); + TQListViewItemIterator( TQListViewItem *item ); + TQListViewItemIterator( TQListViewItem *item, int iteratorFlags ); + + TQListViewItemIterator( const TQListViewItemIterator &it ); + TQListViewItemIterator( TQListView *lv ); + TQListViewItemIterator( TQListView *lv, int iteratorFlags ); + + TQListViewItemIterator &operator=( const TQListViewItemIterator &it ); + + ~TQListViewItemIterator(); + + TQListViewItemIterator &operator++(); + const TQListViewItemIterator operator++( int ); + TQListViewItemIterator &operator+=( int j ); + + TQListViewItemIterator &operator--(); + const TQListViewItemIterator operator--( int ); + TQListViewItemIterator &operator-=( int j ); + + TQListViewItem* operator*(); + TQListViewItem *current() const; + +protected: + TQListViewItem *curr; + TQListView *listView; + +private: + TQListViewItemIteratorPrivate* d() const; + void init( int flags ); + void addToListView(); + void currentRemoved(); + bool matchesFlags( const TQListViewItem* ) const; + bool testPair( TQListViewItemIterator::IteratorFlag, TQListViewItemIterator::IteratorFlag, bool ) const; + bool isChecked( const TQListViewItem* ) const; +}; + +#endif // QT_NO_LISTVIEW + +#endif // TQLISTVIEW_H |