00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KLISTVIEW_H
00021 #define KLISTVIEW_H
00022
00023 #include <qlistview.h>
00024
00025 #include <qptrlist.h>
00026 #include <kdemacros.h>
00027
00028 class QDragObject;
00029 class KConfig;
00030 class KLineEdit;
00053 class KListView : public QListView
00054 {
00055 friend class KListViewItem;
00056
00057 Q_OBJECT
00058 Q_ENUMS( SelectionModeExt )
00059 Q_PROPERTY( bool fullWidth READ fullWidth WRITE setFullWidth )
00060 Q_PROPERTY( bool itemsMovable READ itemsMovable WRITE setItemsMovable )
00061 Q_PROPERTY( bool itemsRenameable READ itemsRenameable WRITE setItemsRenameable )
00062 Q_PROPERTY( bool dragEnabled READ dragEnabled WRITE setDragEnabled )
00063 Q_PROPERTY( bool autoOpen READ autoOpen WRITE setAutoOpen )
00064 Q_PROPERTY( bool dropVisualizer READ dropVisualizer WRITE setDropVisualizer )
00065 Q_PROPERTY( int tooltipColumn READ tooltipColumn WRITE setTooltipColumn )
00066 Q_PROPERTY( int dropVisualizerWidth READ dropVisualizerWidth WRITE setDropVisualizerWidth )
00067 Q_PROPERTY( QColor alternateBackground READ alternateBackground WRITE setAlternateBackground )
00068
00069 Q_OVERRIDE( SelectionModeExt selectionMode READ selectionModeExt WRITE setSelectionModeExt )
00070
00071 public:
00103 enum SelectionModeExt {
00104 Single = QListView::Single,
00105 Multi = QListView::Multi,
00106 Extended = QListView::Extended,
00107 NoSelection = QListView::NoSelection,
00108 FileManager
00109 };
00110
00117 KListView (QWidget *parent = 0, const char *name = 0);
00118
00122 virtual ~KListView();
00123
00131 virtual void setAcceptDrops (bool);
00132
00142 virtual bool isExecuteArea( const QPoint& point );
00143
00149 bool isExecuteArea( int x );
00150
00154 QPtrList<QListViewItem> selectedItems() const;
00155
00163 void moveItem(QListViewItem *item, QListViewItem *parent, QListViewItem *after) KDE_DEPRECATED;
00164
00170 QListViewItem *lastItem() const;
00171
00177 QListViewItem* lastChild () const;
00178
00185 KLineEdit* renameLineEdit() const;
00186
00193 bool itemsMovable() const;
00194
00200 bool itemsRenameable() const;
00201
00207 bool dragEnabled() const;
00208
00214 bool autoOpen() const;
00215
00221 bool isRenameable (int column) const;
00222
00228 bool dropVisualizer() const;
00229
00235 int tooltipColumn() const;
00236
00243 bool createChildren() const KDE_DEPRECATED;
00244
00250 bool dropHighlighter() const;
00251
00258 int dropVisualizerWidth () const;
00259
00266 SelectionModeExt selectionModeExt () const;
00267
00273 int itemIndex( const QListViewItem *item ) const;
00274
00280 QListViewItem* itemAtIndex(int index);
00281
00286 void setFullWidth() KDE_DEPRECATED;
00287
00293 void setFullWidth(bool fullWidth);
00294
00300 bool fullWidth() const;
00301
00307 virtual int addColumn(const QString& label, int width = -1);
00311 virtual int addColumn(const QIconSet& iconset, const QString& label, int width = -1);
00317 virtual void removeColumn(int index);
00318
00328 void setAlternateBackground(const QColor &c);
00334 const QColor &alternateBackground() const;
00335
00343 void saveLayout(KConfig *config, const QString &group) const;
00351 void restoreLayout(KConfig *config, const QString &group);
00358 virtual void setSorting(int column, bool ascending = true);
00359
00363 int columnSorted(void) const;
00364
00368 bool ascendingSort(void) const;
00369
00373 virtual void takeItem(QListViewItem *i);
00374
00375 signals:
00376
00386 void executed( QListViewItem *item );
00387
00399 void executed( QListViewItem *item, const QPoint &pos, int c );
00400
00415
00416 void doubleClicked( QListViewItem *item, const QPoint &pos, int c );
00417
00428 void dropped (QDropEvent * e, QListViewItem *after);
00429
00442 void dropped (KListView* list, QDropEvent* e, QListViewItem* after);
00443
00456 void dropped (KListView* list, QDropEvent* e, QListViewItem* parent, QListViewItem* after);
00457
00469 void dropped (QDropEvent* e, QListViewItem* parent, QListViewItem* after);
00470
00477 void moved();
00478
00487 void aboutToMove();
00488
00500 void moved (QListViewItem *item, QListViewItem *afterFirst, QListViewItem *afterNow);
00501
00502
00508 void moved(QPtrList<QListViewItem> &items, QPtrList<QListViewItem> &afterFirst, QPtrList<QListViewItem> &afterNow);
00509
00517 void itemRenamed(QListViewItem* item, const QString &str, int col);
00518
00522 void itemRenamed(QListViewItem* item);
00523
00534 void menuShortCutPressed (KListView* list, QListViewItem* item);
00535
00544 void contextMenu (KListView* l, QListViewItem* i, const QPoint& p);
00545
00546 public slots:
00550 virtual void rename(QListViewItem *item, int c);
00551
00562 void setRenameable (int column, bool yesno=true);
00563
00570 virtual void setItemsMovable(bool b);
00571
00579 virtual void setItemsRenameable(bool b);
00580
00585 virtual void setDragEnabled(bool b);
00586
00590 virtual void setAutoOpen(bool b);
00591
00597 virtual void setDropVisualizer(bool b);
00598
00603 void setDropVisualizerWidth (int w);
00604
00611 virtual void setTooltipColumn(int column);
00612
00618 virtual void setDropHighlighter(bool b);
00619
00626 virtual void setCreateChildren(bool b) KDE_DEPRECATED;
00627
00633 void setSelectionModeExt (SelectionModeExt mode);
00634
00639 void setTabOrderedRenaming(bool b);
00640
00645 bool tabOrderedRenaming() const;
00646
00647 protected:
00656 inline bool below (const QRect& rect, const QPoint& p)
00657 {
00658 return (p.y() > (rect.top() + (rect.bottom() - rect.top())/2));
00659 }
00660
00670 inline bool below (QListViewItem* i, const QPoint& p)
00671 {
00672 return below (itemRect(i), contentsToViewport(p));
00673 }
00674
00679 virtual bool event( QEvent * );
00680
00685 void emitExecute( QListViewItem *item, const QPoint &pos, int c );
00686
00694 virtual void focusInEvent(QFocusEvent* fe);
00695
00703 virtual void focusOutEvent( QFocusEvent *fe );
00704
00712 virtual void leaveEvent( QEvent *e );
00713
00717 virtual QString tooltip(QListViewItem* item, int column) const;
00718
00722 virtual bool showTooltip(QListViewItem *item, const QPoint &pos, int column) const;
00723
00731 virtual void contentsDragMoveEvent (QDragMoveEvent *event);
00732
00740 virtual void contentsMousePressEvent( QMouseEvent *e );
00741
00749 virtual void contentsMouseMoveEvent( QMouseEvent *e );
00750
00758 virtual void contentsMouseDoubleClickEvent ( QMouseEvent *e );
00759
00767 virtual void contentsDragLeaveEvent (QDragLeaveEvent *event);
00768
00776 virtual void contentsMouseReleaseEvent (QMouseEvent*);
00777
00785 virtual void contentsDropEvent (QDropEvent*);
00786
00794 virtual void contentsDragEnterEvent (QDragEnterEvent *);
00795
00801 virtual QDragObject *dragObject();
00802
00808 virtual bool acceptDrag (QDropEvent* event) const;
00809
00817 virtual QRect drawDropVisualizer (QPainter *p, QListViewItem *parent, QListViewItem *after);
00818
00825 virtual QRect drawItemHighlighter(QPainter *painter, QListViewItem *item);
00826
00833 virtual void startDrag();
00834
00842 virtual void keyPressEvent (QKeyEvent*);
00843
00851 virtual void viewportPaintEvent(QPaintEvent*);
00852
00857 void activateAutomaticSelection();
00862 void deactivateAutomaticSelection();
00868 bool automaticSelection() const;
00869
00873 virtual void viewportResizeEvent(QResizeEvent* e);
00874
00882 void disableAutoSelection();
00883
00889 void resetAutoSelection();
00890
00891 protected slots:
00896 void slotSettingsChanged(int);
00897
00898 void slotMouseButtonClicked( int btn, QListViewItem *item, const QPoint &pos, int c );
00899 void doneEditing(QListViewItem *item, int row);
00900
00904 void cleanDropVisualizer();
00905
00909 void cleanItemHighlighter();
00910
00914 void emitContextMenu (QListViewItem*, const QPoint&, int);
00915
00919 void emitContextMenu (KListView*, QListViewItem*);
00920
00925 void slotOnItem( QListViewItem *item );
00926
00931 void slotOnViewport();
00932
00937 void slotAutoSelect();
00938
00939 void slotDragExpand();
00940
00945 void slotHeaderChanged();
00946
00947 protected:
00951 virtual void movableDropEvent (QListViewItem* parent, QListViewItem* afterme);
00952
00959 virtual void findDrop(const QPoint &pos, QListViewItem *&parent, QListViewItem *&after);
00960
00964 void fileManagerKeyPressEvent (QKeyEvent*);
00965
00969 int depthToPixels( int depth );
00970
00971 private:
00972 class Tooltip;
00973 protected:
00974 virtual void virtual_hook( int id, void* data );
00975 private:
00976 class KListViewPrivate;
00977 KListViewPrivate *d;
00978 };
00979
00986 class KListViewItem : public QListViewItem
00987 {
00988 public:
00995 KListViewItem(QListView *parent);
00996 KListViewItem(QListViewItem *parent);
00997 KListViewItem(QListView *parent, QListViewItem *after);
00998 KListViewItem(QListViewItem *parent, QListViewItem *after);
00999
01000 KListViewItem(QListView *parent,
01001 QString, QString = QString::null,
01002 QString = QString::null, QString = QString::null,
01003 QString = QString::null, QString = QString::null,
01004 QString = QString::null, QString = QString::null);
01005
01006 KListViewItem(QListViewItem *parent,
01007 QString, QString = QString::null,
01008 QString = QString::null, QString = QString::null,
01009 QString = QString::null, QString = QString::null,
01010 QString = QString::null, QString = QString::null);
01011
01012 KListViewItem(QListView *parent, QListViewItem *after,
01013 QString, QString = QString::null,
01014 QString = QString::null, QString = QString::null,
01015 QString = QString::null, QString = QString::null,
01016 QString = QString::null, QString = QString::null);
01017
01018 KListViewItem(QListViewItem *parent, QListViewItem *after,
01019 QString, QString = QString::null,
01020 QString = QString::null, QString = QString::null,
01021 QString = QString::null, QString = QString::null,
01022 QString = QString::null, QString = QString::null);
01023
01024 virtual ~KListViewItem();
01025
01029 bool isAlternate();
01033 const QColor &backgroundColor();
01034
01035 virtual void paintCell(QPainter *p, const QColorGroup &cg,
01036 int column, int width, int alignment);
01037
01038 private:
01039 void init();
01040
01041 private:
01042 uint m_odd : 1;
01043 uint m_known : 1;
01044 uint m_unused : 30;
01045 };
01046
01047 #endif
01048
01049