source: trunk/include/qiconview.h@ 203

Last change on this file since 203 was 164, checked in by dmik, 19 years ago

Imported table and iconview modules and a bunch of dependent examples from /vendor/trolltech/3.3.1 to the trunk.

  • Property svn:keywords set to Id
File size: 16.0 KB
Line 
1/****************************************************************************
2** $Id: qiconview.h 164 2006-12-11 21:42:31Z dmik $
3**
4** Definition of QIconView widget class
5**
6** Created : 990707
7**
8** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
9**
10** This file is part of the iconview module of the Qt GUI Toolkit.
11**
12** This file may be distributed under the terms of the Q Public License
13** as defined by Trolltech AS of Norway and appearing in the file
14** LICENSE.QPL included in the packaging of this file.
15**
16** This file may be distributed and/or modified under the terms of the
17** GNU General Public License version 2 as published by the Free Software
18** Foundation and appearing in the file LICENSE.GPL included in the
19** packaging of this file.
20**
21** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
22** licenses may use this file in accordance with the Qt Commercial License
23** Agreement provided with the Software.
24**
25** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
26** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27**
28** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
29** information about Qt Commercial License Agreements.
30** See http://www.trolltech.com/qpl/ for QPL licensing information.
31** See http://www.trolltech.com/gpl/ for GPL licensing information.
32**
33** Contact info@trolltech.com if any conditions of this licensing are
34** not clear to you.
35**
36**********************************************************************/
37
38#ifndef QICONVIEW_H
39#define QICONVIEW_H
40
41#ifndef QT_H
42#include "qscrollview.h"
43#include "qstring.h"
44#include "qrect.h"
45#include "qpoint.h"
46#include "qsize.h"
47#include "qfont.h" // QString->QFont conversion
48#include "qdragobject.h"
49#include "qbitmap.h"
50#include "qpicture.h"
51#endif // QT_H
52
53#ifndef QT_NO_ICONVIEW
54
55#if !defined( QT_MODULE_ICONVIEW ) || defined( QT_INTERNAL_ICONVIEW )
56#define QM_EXPORT_ICONVIEW
57#else
58#define QM_EXPORT_ICONVIEW Q_EXPORT
59#endif
60
61class QIconView;
62class QPainter;
63class QMimeSource;
64class QMouseEvent;
65class QDragEnterEvent;
66class QDragMoveEvent;
67class QDragLeaveEvent;
68class QKeyEvent;
69class QFocusEvent;
70class QShowEvent;
71class QIconViewItem;
72class QIconViewItemLineEdit;
73class QStringList;
74class QIconDragPrivate;
75
76#ifndef QT_NO_DRAGANDDROP
77
78class QM_EXPORT_ICONVIEW QIconDragItem
79{
80public:
81 QIconDragItem();
82 virtual ~QIconDragItem();
83 virtual QByteArray data() const;
84 virtual void setData( const QByteArray &d );
85 bool operator== ( const QIconDragItem& ) const;
86
87private:
88 QByteArray ba;
89
90};
91
92class QM_EXPORT_ICONVIEW QIconDrag : public QDragObject
93{
94 Q_OBJECT
95public:
96 QIconDrag( QWidget * dragSource, const char* name = 0 );
97 virtual ~QIconDrag();
98
99 void append( const QIconDragItem &item, const QRect &pr, const QRect &tr );
100
101 virtual const char* format( int i ) const;
102 static bool canDecode( QMimeSource* e );
103 virtual QByteArray encodedData( const char* mime ) const;
104
105private:
106 QIconDragPrivate *d;
107 QChar endMark;
108
109 friend class QIconView;
110 friend class QIconViewPrivate;
111#if defined(Q_DISABLE_COPY) // Disabled copy constructor and operator=
112 QIconDrag( const QIconDrag & );
113 QIconDrag &operator=( const QIconDrag & );
114#endif
115};
116
117#endif
118
119class QIconViewToolTip;
120class QIconViewItemPrivate;
121
122class QM_EXPORT_ICONVIEW QIconViewItem : public Qt
123{
124 friend class QIconView;
125 friend class QIconViewToolTip;
126 friend class QIconViewItemLineEdit;
127
128public:
129 QIconViewItem( QIconView *parent );
130 QIconViewItem( QIconView *parent, QIconViewItem *after );
131 QIconViewItem( QIconView *parent, const QString &text );
132 QIconViewItem( QIconView *parent, QIconViewItem *after, const QString &text );
133 QIconViewItem( QIconView *parent, const QString &text, const QPixmap &icon );
134 QIconViewItem( QIconView *parent, QIconViewItem *after, const QString &text, const QPixmap &icon );
135#ifndef QT_NO_PICTURE
136 QIconViewItem( QIconView *parent, const QString &text, const QPicture &picture );
137 QIconViewItem( QIconView *parent, QIconViewItem *after, const QString &text, const QPicture &picture );
138#endif
139 virtual ~QIconViewItem();
140
141 virtual void setRenameEnabled( bool allow );
142 virtual void setDragEnabled( bool allow );
143 virtual void setDropEnabled( bool allow );
144
145 virtual QString text() const;
146 virtual QPixmap *pixmap() const;
147#ifndef QT_NO_PICTURE
148 virtual QPicture *picture() const;
149#endif
150 virtual QString key() const;
151
152 bool renameEnabled() const;
153 bool dragEnabled() const;
154 bool dropEnabled() const;
155
156 QIconView *iconView() const;
157 QIconViewItem *prevItem() const;
158 QIconViewItem *nextItem() const;
159
160 int index() const;
161
162 virtual void setSelected( bool s, bool cb );
163 virtual void setSelected( bool s );
164 virtual void setSelectable( bool s );
165
166 bool isSelected() const;
167 bool isSelectable() const;
168
169 virtual void repaint();
170
171 virtual bool move( int x, int y );
172 virtual void moveBy( int dx, int dy );
173 virtual bool move( const QPoint &pnt );
174 virtual void moveBy( const QPoint &pnt );
175
176 QRect rect() const;
177 int x() const;
178 int y() const;
179 int width() const;
180 int height() const;
181 QSize size() const;
182 QPoint pos() const;
183 QRect textRect( bool relative = TRUE ) const;
184 QRect pixmapRect( bool relative = TRUE ) const;
185 bool contains( const QPoint& pnt ) const;
186 bool intersects( const QRect& r ) const;
187
188 virtual bool acceptDrop( const QMimeSource *mime ) const;
189
190#ifndef QT_NO_TEXTEDIT
191 void rename();
192#endif
193
194 virtual int compare( QIconViewItem *i ) const;
195
196 virtual void setText( const QString &text );
197 virtual void setPixmap( const QPixmap &icon );
198#ifndef QT_NO_PICTURE
199 virtual void setPicture( const QPicture &icon );
200#endif
201 virtual void setText( const QString &text, bool recalc, bool redraw = TRUE );
202 virtual void setPixmap( const QPixmap &icon, bool recalc, bool redraw = TRUE );
203 virtual void setKey( const QString &k );
204
205 virtual int rtti() const;
206 static int RTTI;
207
208protected:
209#ifndef QT_NO_TEXTEDIT
210 virtual void removeRenameBox();
211#endif
212 virtual void calcRect( const QString &text_ = QString::null );
213 virtual void paintItem( QPainter *p, const QColorGroup &cg );
214 virtual void paintFocus( QPainter *p, const QColorGroup &cg );
215#ifndef QT_NO_DRAGANDDROP
216 virtual void dropped( QDropEvent *e, const QValueList<QIconDragItem> &lst );
217#endif
218 virtual void dragEntered();
219 virtual void dragLeft();
220 void setItemRect( const QRect &r );
221 void setTextRect( const QRect &r );
222 void setPixmapRect( const QRect &r );
223 void calcTmpText();
224 QString tempText() const;
225
226private:
227 void init( QIconViewItem *after = 0
228#ifndef QT_NO_PICTURE
229 , QPicture *pic = 0
230#endif
231 );
232#ifndef QT_NO_TEXTEDIT
233 void renameItem();
234 void cancelRenameItem();
235#endif
236 void checkRect();
237
238 QIconView *view;
239 QString itemText, itemKey;
240 QString tmpText;
241 QPixmap *itemIcon;
242#ifndef QT_NO_PICTURE
243 QPicture *itemPic;
244#endif
245 QIconViewItem *prev, *next;
246 uint allow_rename : 1;
247 uint allow_drag : 1;
248 uint allow_drop : 1;
249 uint selected : 1;
250 uint selectable : 1;
251 uint dirty : 1;
252 uint wordWrapDirty : 1;
253 QRect itemRect, itemTextRect, itemIconRect;
254#ifndef QT_NO_TEXTEDIT
255 QIconViewItemLineEdit *renameBox;
256#endif
257 QRect oldRect;
258
259 QIconViewItemPrivate *d;
260
261};
262
263class QIconViewPrivate; /* don't touch */
264
265class QM_EXPORT_ICONVIEW QIconView : public QScrollView
266{
267 friend class QIconViewItem;
268 friend class QIconViewPrivate;
269 friend class QIconViewToolTip;
270
271 Q_OBJECT
272 // #### sorting and sort direction do not work
273 Q_ENUMS( SelectionMode ItemTextPos Arrangement ResizeMode )
274 Q_PROPERTY( bool sorting READ sorting )
275 Q_PROPERTY( bool sortDirection READ sortDirection )
276 Q_PROPERTY( SelectionMode selectionMode READ selectionMode WRITE setSelectionMode )
277 Q_PROPERTY( int gridX READ gridX WRITE setGridX )
278 Q_PROPERTY( int gridY READ gridY WRITE setGridY )
279 Q_PROPERTY( int spacing READ spacing WRITE setSpacing )
280 Q_PROPERTY( ItemTextPos itemTextPos READ itemTextPos WRITE setItemTextPos )
281 Q_PROPERTY( QBrush itemTextBackground READ itemTextBackground WRITE setItemTextBackground )
282 Q_PROPERTY( Arrangement arrangement READ arrangement WRITE setArrangement )
283 Q_PROPERTY( ResizeMode resizeMode READ resizeMode WRITE setResizeMode )
284 Q_PROPERTY( int maxItemWidth READ maxItemWidth WRITE setMaxItemWidth )
285 Q_PROPERTY( int maxItemTextLength READ maxItemTextLength WRITE setMaxItemTextLength )
286 Q_PROPERTY( bool autoArrange READ autoArrange WRITE setAutoArrange )
287 Q_PROPERTY( bool itemsMovable READ itemsMovable WRITE setItemsMovable )
288 Q_PROPERTY( bool wordWrapIconText READ wordWrapIconText WRITE setWordWrapIconText )
289 Q_PROPERTY( bool showToolTips READ showToolTips WRITE setShowToolTips )
290 Q_PROPERTY( uint count READ count )
291
292public:
293 enum SelectionMode {
294 Single = 0,
295 Multi,
296 Extended,
297 NoSelection
298 };
299 enum Arrangement {
300 LeftToRight = 0,
301 TopToBottom
302 };
303 enum ResizeMode {
304 Fixed = 0,
305 Adjust
306 };
307 enum ItemTextPos {
308 Bottom = 0,
309 Right
310 };
311
312 QIconView( QWidget* parent=0, const char* name=0, WFlags f = 0 );
313 virtual ~QIconView();
314
315 virtual void insertItem( QIconViewItem *item, QIconViewItem *after = 0L );
316 virtual void takeItem( QIconViewItem *item );
317
318 int index( const QIconViewItem *item ) const;
319
320 QIconViewItem *firstItem() const;
321 QIconViewItem *lastItem() const;
322 QIconViewItem *currentItem() const;
323 virtual void setCurrentItem( QIconViewItem *item );
324 virtual void setSelected( QIconViewItem *item, bool s, bool cb = FALSE );
325
326 uint count() const;
327
328public:
329 virtual void showEvent( QShowEvent * );
330
331 virtual void setSelectionMode( SelectionMode m );
332 SelectionMode selectionMode() const;
333
334 QIconViewItem *findItem( const QPoint &pos ) const;
335 QIconViewItem *findItem( const QString &text, ComparisonFlags compare = BeginsWith ) const;
336 virtual void selectAll( bool select );
337 virtual void clearSelection();
338 virtual void invertSelection();
339
340 virtual void repaintItem( QIconViewItem *item );
341 void repaintSelectedItems();
342
343 void ensureItemVisible( QIconViewItem *item );
344 QIconViewItem* findFirstVisibleItem( const QRect &r ) const;
345 QIconViewItem* findLastVisibleItem( const QRect &r ) const;
346
347 virtual void clear();
348
349 virtual void setGridX( int rx );
350 virtual void setGridY( int ry );
351 int gridX() const;
352 int gridY() const;
353 virtual void setSpacing( int sp );
354 int spacing() const;
355 virtual void setItemTextPos( ItemTextPos pos );
356 ItemTextPos itemTextPos() const;
357 virtual void setItemTextBackground( const QBrush &b );
358 QBrush itemTextBackground() const;
359 virtual void setArrangement( Arrangement am );
360 Arrangement arrangement() const;
361 virtual void setResizeMode( ResizeMode am );
362 ResizeMode resizeMode() const;
363 virtual void setMaxItemWidth( int w );
364 int maxItemWidth() const;
365 virtual void setMaxItemTextLength( int w );
366 int maxItemTextLength() const;
367 virtual void setAutoArrange( bool b );
368 bool autoArrange() const;
369 virtual void setShowToolTips( bool b );
370 bool showToolTips() const;
371
372 void setSorting( bool sort, bool ascending = TRUE );
373 bool sorting() const;
374 bool sortDirection() const;
375
376 virtual void setItemsMovable( bool b );
377 bool itemsMovable() const;
378 virtual void setWordWrapIconText( bool b );
379 bool wordWrapIconText() const;
380
381 bool eventFilter( QObject * o, QEvent * );
382
383 QSize minimumSizeHint() const;
384 QSize sizeHint() const;
385
386 virtual void sort( bool ascending = TRUE );
387
388 virtual void setFont( const QFont & );
389 virtual void setPalette( const QPalette & );
390
391 bool isRenaming() const;
392
393public slots:
394 virtual void arrangeItemsInGrid( const QSize &grid, bool update = TRUE );
395 virtual void arrangeItemsInGrid( bool update = TRUE );
396 virtual void setContentsPos( int x, int y );
397 virtual void updateContents();
398
399signals:
400 void selectionChanged();
401 void selectionChanged( QIconViewItem *item );
402 void currentChanged( QIconViewItem *item );
403 void clicked( QIconViewItem * );
404 void clicked( QIconViewItem *, const QPoint & );
405 void pressed( QIconViewItem * );
406 void pressed( QIconViewItem *, const QPoint & );
407
408 void doubleClicked( QIconViewItem *item );
409 void returnPressed( QIconViewItem *item );
410 void rightButtonClicked( QIconViewItem* item, const QPoint& pos );
411 void rightButtonPressed( QIconViewItem* item, const QPoint& pos );
412 void mouseButtonPressed( int button, QIconViewItem* item, const QPoint& pos );
413 void mouseButtonClicked( int button, QIconViewItem* item, const QPoint& pos );
414 void contextMenuRequested( QIconViewItem* item, const QPoint &pos );
415
416#ifndef QT_NO_DRAGANDDROP
417 void dropped( QDropEvent *e, const QValueList<QIconDragItem> &lst );
418#endif
419 void moved();
420 void onItem( QIconViewItem *item );
421 void onViewport();
422 void itemRenamed( QIconViewItem *item, const QString & );
423 void itemRenamed( QIconViewItem *item );
424
425protected slots:
426 virtual void doAutoScroll();
427 virtual void adjustItems();
428 virtual void slotUpdate();
429
430private slots:
431 void movedContents( int dx, int dy );
432
433protected:
434 void drawContents( QPainter *p, int cx, int cy, int cw, int ch );
435 void contentsMousePressEvent( QMouseEvent *e );
436 void contentsMouseReleaseEvent( QMouseEvent *e );
437 void contentsMouseMoveEvent( QMouseEvent *e );
438 void contentsMouseDoubleClickEvent( QMouseEvent *e );
439 void contentsContextMenuEvent( QContextMenuEvent *e );
440
441#ifndef QT_NO_DRAGANDDROP
442 void contentsDragEnterEvent( QDragEnterEvent *e );
443 void contentsDragMoveEvent( QDragMoveEvent *e );
444 void contentsDragLeaveEvent( QDragLeaveEvent *e );
445 void contentsDropEvent( QDropEvent *e );
446#endif
447
448 void resizeEvent( QResizeEvent* e );
449 void keyPressEvent( QKeyEvent *e );
450 void focusInEvent( QFocusEvent *e );
451 void focusOutEvent( QFocusEvent *e );
452 void enterEvent( QEvent *e );
453
454 virtual void drawRubber( QPainter *p );
455#ifndef QT_NO_DRAGANDDROP
456 virtual QDragObject *dragObject();
457 virtual void startDrag();
458#endif
459 virtual void insertInGrid( QIconViewItem *item );
460 virtual void drawBackground( QPainter *p, const QRect &r );
461
462 void emitSelectionChanged( QIconViewItem * i = 0 );
463 void emitRenamed( QIconViewItem *item );
464
465 QIconViewItem *makeRowLayout( QIconViewItem *begin, int &y, bool &changed );
466
467 void styleChange( QStyle& );
468 void windowActivationChange( bool );
469
470private:
471 void contentsMousePressEventEx( QMouseEvent *e );
472 virtual void drawDragShapes( const QPoint &pnt );
473#ifndef QT_NO_DRAGANDDROP
474 virtual void initDragEnter( QDropEvent *e );
475#endif
476 void drawContents( QPainter* );
477 QIconViewItem* findItemByName( QIconViewItem *start );
478 void handleItemChange( QIconViewItem *old, bool shift,
479 bool control, bool homeend = FALSE);
480
481 int calcGridNum( int w, int x ) const;
482 QIconViewItem *rowBegin( QIconViewItem *item ) const;
483 void updateItemContainer( QIconViewItem *item );
484 void appendItemContainer();
485 void rebuildContainers();
486 enum Direction {
487 DirUp = 0,
488 DirDown,
489 DirLeft,
490 DirRight
491 };
492 QIconViewItem* findItem( Direction dir,
493 const QPoint &relativeTo,
494 const QRect &searchRect ) const;
495 bool neighbourItem( Direction dir,
496 const QPoint &relativeTo,
497 const QIconViewItem *item ) const;
498 QBitmap mask( QPixmap *pix ) const;
499
500 QIconViewPrivate *d;
501
502private: // Disabled copy constructor and operator=
503#if defined(Q_DISABLE_COPY)
504 QIconView( const QIconView & );
505 QIconView& operator=( const QIconView & );
506#endif
507};
508
509#endif // QT_NO_ICONVIEW
510
511#endif // QICONVIEW_H
Note: See TracBrowser for help on using the repository browser.