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 <kdelibs_export.h>
00027
00028 class QDragObject;
00029 class KConfig;
00030 class KLineEdit;
00053 class KDEUI_EXPORT 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
00411 void dropped (QDropEvent * e, QListViewItem *after);
00412
00425 void dropped (KListView* list, QDropEvent* e, QListViewItem* after);
00426
00439 void dropped (KListView* list, QDropEvent* e, QListViewItem* parent, QListViewItem* after);
00440
00452 void dropped (QDropEvent* e, QListViewItem* parent, QListViewItem* after);
00453
00460 void moved();
00461
00470 void aboutToMove();
00471
00483 void moved (QListViewItem *item, QListViewItem *afterFirst, QListViewItem *afterNow);
00484
00485
00491 void moved(QPtrList<QListViewItem> &items, QPtrList<QListViewItem> &afterFirst, QPtrList<QListViewItem> &afterNow);
00492
00500 void itemRenamed(QListViewItem* item, const QString &str, int col);
00501
00505 void itemRenamed(QListViewItem* item);
00506
00517 void menuShortCutPressed (KListView* list, QListViewItem* item);
00518
00527 void contextMenu (KListView* l, QListViewItem* i, const QPoint& p);
00528
00529 void itemAdded(QListViewItem *item);
00530 void itemRemoved(QListViewItem *item);
00531
00532 public slots:
00536 virtual void rename(QListViewItem *item, int c);
00537
00548 void setRenameable (int column, bool yesno=true);
00549
00556 virtual void setItemsMovable(bool b);
00557
00565 virtual void setItemsRenameable(bool b);
00566
00571 virtual void setDragEnabled(bool b);
00572
00576 virtual void setAutoOpen(bool b);
00577
00583 virtual void setDropVisualizer(bool b);
00584
00589 void setDropVisualizerWidth (int w);
00590
00597 virtual void setTooltipColumn(int column);
00598
00604 virtual void setDropHighlighter(bool b);
00605
00612 virtual void setCreateChildren(bool b) KDE_DEPRECATED;
00613
00619 void setSelectionModeExt (SelectionModeExt mode);
00620
00625 void setTabOrderedRenaming(bool b);
00626
00631 bool tabOrderedRenaming() const;
00632
00633 protected:
00642 inline bool below (const QRect& rect, const QPoint& p)
00643 {
00644 return (p.y() > (rect.top() + (rect.bottom() - rect.top())/2));
00645 }
00646
00656 inline bool below (QListViewItem* i, const QPoint& p)
00657 {
00658 return below (itemRect(i), contentsToViewport(p));
00659 }
00660
00665 virtual bool event( QEvent * );
00666
00671 void emitExecute( QListViewItem *item, const QPoint &pos, int c );
00672
00680 virtual void focusInEvent(QFocusEvent* fe);
00681
00689 virtual void focusOutEvent( QFocusEvent *fe );
00690
00698 virtual void leaveEvent( QEvent *e );
00699
00703 virtual QString tooltip(QListViewItem* item, int column) const;
00704
00708 virtual bool showTooltip(QListViewItem *item, const QPoint &pos, int column) const;
00709
00717 virtual void contentsDragMoveEvent (QDragMoveEvent *event);
00718
00726 virtual void contentsMousePressEvent( QMouseEvent *e );
00727
00735 virtual void contentsMouseMoveEvent( QMouseEvent *e );
00736
00744 virtual void contentsMouseDoubleClickEvent ( QMouseEvent *e );
00745
00753 virtual void contentsDragLeaveEvent (QDragLeaveEvent *event);
00754
00762 virtual void contentsMouseReleaseEvent (QMouseEvent*);
00763
00771 virtual void contentsDropEvent (QDropEvent*);
00772
00780 virtual void contentsDragEnterEvent (QDragEnterEvent *);
00781
00787 virtual QDragObject *dragObject();
00788
00794 virtual bool acceptDrag (QDropEvent* event) const;
00795
00803 virtual QRect drawDropVisualizer (QPainter *p, QListViewItem *parent, QListViewItem *after);
00804
00811 virtual QRect drawItemHighlighter(QPainter *painter, QListViewItem *item);
00812
00819 virtual void startDrag();
00820
00828 virtual void keyPressEvent (QKeyEvent*);
00829
00837 virtual void viewportPaintEvent(QPaintEvent*);
00838
00843 void activateAutomaticSelection();
00848 void deactivateAutomaticSelection();
00854 bool automaticSelection() const;
00855
00859 virtual void viewportResizeEvent(QResizeEvent* e);
00860
00868 void disableAutoSelection();
00869
00875 void resetAutoSelection();
00876
00881
00882 void doubleClicked( QListViewItem *item, const QPoint &pos, int c );
00883
00884 protected slots:
00889 void slotSettingsChanged(int);
00890
00891 void slotMouseButtonClicked( int btn, QListViewItem *item, const QPoint &pos, int c );
00892 void doneEditing(QListViewItem *item, int row);
00893
00897 void cleanDropVisualizer();
00898
00902 void cleanItemHighlighter();
00903
00907 void emitContextMenu (QListViewItem*, const QPoint&, int);
00908
00912 void emitContextMenu (KListView*, QListViewItem*);
00913
00918 void slotOnItem( QListViewItem *item );
00919
00924 void slotOnViewport();
00925
00930 void slotAutoSelect();
00931
00932 void slotDragExpand();
00933
00938 void slotHeaderChanged();
00939
00940 protected:
00944 virtual void movableDropEvent (QListViewItem* parent, QListViewItem* afterme);
00945
00952 virtual void findDrop(const QPoint &pos, QListViewItem *&parent, QListViewItem *&after);
00953
00957 void fileManagerKeyPressEvent (QKeyEvent*);
00958
00962 int depthToPixels( int depth );
00963
00964 private:
00965 class Tooltip;
00966 protected:
00967 virtual void virtual_hook( int id, void* data );
00968 private:
00969 class KListViewPrivate;
00970 KListViewPrivate *d;
00971 bool isExecuteArea( int x, QListViewItem* item );
00972 };
00973
00980 class KDEUI_EXPORT KListViewItem : public QListViewItem
00981 {
00982 friend class KListView;
00983 public:
00990 KListViewItem(QListView *parent);
00991 KListViewItem(QListViewItem *parent);
00992 KListViewItem(QListView *parent, QListViewItem *after);
00993 KListViewItem(QListViewItem *parent, QListViewItem *after);
00994
00995 KListViewItem(QListView *parent,
00996 QString, QString = QString::null,
00997 QString = QString::null, QString = QString::null,
00998 QString = QString::null, QString = QString::null,
00999 QString = QString::null, QString = QString::null);
01000
01001 KListViewItem(QListViewItem *parent,
01002 QString, QString = QString::null,
01003 QString = QString::null, QString = QString::null,
01004 QString = QString::null, QString = QString::null,
01005 QString = QString::null, QString = QString::null);
01006
01007 KListViewItem(QListView *parent, QListViewItem *after,
01008 QString, QString = QString::null,
01009 QString = QString::null, QString = QString::null,
01010 QString = QString::null, QString = QString::null,
01011 QString = QString::null, QString = QString::null);
01012
01013 KListViewItem(QListViewItem *parent, QListViewItem *after,
01014 QString, QString = QString::null,
01015 QString = QString::null, QString = QString::null,
01016 QString = QString::null, QString = QString::null,
01017 QString = QString::null, QString = QString::null);
01018
01019 virtual ~KListViewItem();
01020
01021 virtual void insertItem(QListViewItem *item);
01022 virtual void takeItem(QListViewItem *item);
01023
01027 bool isAlternate();
01031 const QColor &backgroundColor();
01032
01033 virtual void paintCell(QPainter *p, const QColorGroup &cg,
01034 int column, int width, int alignment);
01035
01036 private:
01037 void init();
01038
01039 private:
01040 uint m_odd : 1;
01041 uint m_known : 1;
01042 uint m_unused : 30;
01043 };
01044
01045 #endif
01046
01047