summaryrefslogtreecommitdiff
path: root/libopie2/opieui/oversatileview.h
Unidiff
Diffstat (limited to 'libopie2/opieui/oversatileview.h') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opieui/oversatileview.h394
1 files changed, 394 insertions, 0 deletions
diff --git a/libopie2/opieui/oversatileview.h b/libopie2/opieui/oversatileview.h
new file mode 100644
index 0000000..1df8154
--- a/dev/null
+++ b/libopie2/opieui/oversatileview.h
@@ -0,0 +1,394 @@
1/*
2                 This file is part of the Opie Project
3
4 =. (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
5 .=l.
6           .>+-=
7 _;:,     .>    :=|. This program is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; either version 2 of the License,
12     ._= =}       : or (at your option) any later version.
13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This program is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.=       =       ; Library General Public License for more
20++=   -.     .`     .: details.
21 :     =  ...= . :.=-
22 -.   .:....=;==+<; You should have received a copy of the GNU
23  -_. . .   )=.  = Library General Public License along with
24    --        :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA.
28
29*/
30
31#ifndef OVERSATILEVIEW_H
32#define OVERSATILEVIEW_H
33
34/* QT */
35
36#include <qwidgetstack.h>
37#include <qiconview.h>
38
39/* OPIE */
40
41#include <qpe/qpeapplication.h>
42
43/* FORWARDS */
44
45class QHeader;
46class QIconSet;
47class QIconViewItem;
48class OListView;
49class QListViewItem;
50class QPopupMenu;
51class QString;
52
53#ifndef QT_NO_DRAGANDDROP
54class QIconDragItem;
55#endif
56
57class OVersatileView : public QWidgetStack
58{
59 Q_OBJECT
60
61 friend class OVersatileViewItem;
62
63 //==============================================================================================//
64 // OVersatileView High Level API
65 //==============================================================================================//
66
67 public:
68 OVersatileView( QWidget* parent = 0, const char* name = 0, int mode = 0 );
69 ~OVersatileView();
70
71 QPopupMenu* contextMenu() const;
72
73 void setSynchronization( bool sync );
74 bool synchronization();
75
76 enum ViewMode { Tree = 0, Icons };
77 int viewMode();
78
79 QIconView* iconView() const;
80 OListView* listView() const;
81
82 enum WarningPolicy { None = 0, Warn, WarnReturn };
83
84 void setWarningPolicy( int ) const; // warn, if calling a method which doesn't apply to the current viewmode
85 bool warningPolicy() const;
86
87 void setDefaultPixmaps( int mode, QPixmap& leaf, QPixmap& opened, QPixmap& closed );
88
89 public slots:
90 void setViewMode( int mode );
91 void setIconViewMode();
92 void setTreeViewMode();
93
94 protected:
95 virtual bool isValidViewMode( int mode ) const;
96 virtual void popupContextMenu( OVersatileViewItem* item, const QPoint& pos, int col = 0 );
97
98 private:
99 int _viewmode;
100 bool _synchronization;
101 mutable int _warningpolicy;
102
103 OListView* _listview;
104 QIconView* _iconview;
105
106 QPixmap _treeleaf;
107 QPixmap _treeopened;
108 QPixmap _treeclosed;
109
110 QPixmap _iconleaf;
111 QPixmap _iconopened;
112 QPixmap _iconclosed;
113
114 QPopupMenu* _contextmenu;
115
116 int _iconstyle;
117 int _treestyle;
118
119 private slots:
120
121 void contextMenuRequested( QListViewItem*, const QPoint&, int );
122 void contextMenuRequested( QIconViewItem*, const QPoint& );
123
124 // type converting signal forwarders
125
126 void selectionChanged( QListViewItem * );
127 void currentChanged( QListViewItem * );
128 void clicked( QListViewItem * );
129 void pressed( QListViewItem * );
130 void doubleClicked( QListViewItem * );
131 void returnPressed( QListViewItem * );
132 void onItem( QListViewItem * );
133
134 void selectionChanged( QIconViewItem * );
135 void currentChanged( QIconViewItem * );
136 void clicked( QIconViewItem * );
137 void pressed( QIconViewItem * );
138 void doubleClicked( QIconViewItem * );
139 void returnPressed( QIconViewItem * );
140 void onItem( QIconViewItem * );
141
142 void expanded( QListViewItem * item ); // QListView
143 void collapsed( QListViewItem * item ); // QListView
144
145 signals:
146
147 void contextMenuRequested( OVersatileViewItem * item, const QPoint& pos, int col );
148
149 /*#ifndef QT_NO_DRAGANDDROP
150 void dropped( QDropEvent *e, const QValueList<QIconDragItem> &lst ); // QIconView
151 #endif
152 void itemRenamed( OVersatileViewItem *item, const QString & ); // QIconView
153 void itemRenamed( OVersatileViewItem *item ); // QIconView
154 */
155
156 //==============================================================================================//
157 // "Derived" API - Case 1: Methods existing either only in QListView or only in QIconView
158 //==============================================================================================//
159
160public:
161
162 /*
163 enum Arrangement { // QIconView
164 LeftToRight = 0,
165 TopToBottom
166 };
167 enum ResizeMode { // QIconView
168 Fixed = 0,
169 Adjust
170 };
171 enum ItemTextPos { // QIconView
172 Bottom = 0,
173 Right
174 };
175 */
176
177 //
178 // only in QListView
179 //
180
181 int treeStepSize() const; // QListView
182 virtual void setTreeStepSize( int ); // QListView
183
184 QHeader * header() const; // QListView
185
186 virtual int addColumn( const QString &label, int size = -1); // QListView
187 virtual int addColumn( const QIconSet& iconset, const QString &label, int size = -1); // QListView
188 void removeColumn( int index ); // #### make virtual in next major release! // QListView
189 virtual void setColumnText( int column, const QString &label ); // QListView
190 virtual void setColumnText( int column, const QIconSet& iconset, const QString &label ); // QListView
191 QString columnText( int column ) const; // QListView
192 virtual void setColumnWidth( int column, int width ); // QListView
193 int columnWidth( int column ) const; // QListView
194 enum WidthMode { Manual, Maximum }; // QListView
195 virtual void setColumnWidthMode( int column, WidthMode ); // QListView
196 WidthMode columnWidthMode( int column ) const; // QListView
197 int columns() const; // QListView
198
199 virtual void setColumnAlignment( int, int ); // QListView
200 int columnAlignment( int ) const; // QListView
201
202 OVersatileViewItem * itemAt( const QPoint & screenPos ) const; // QListView
203 QRect itemRect( const OVersatileViewItem * ) const; // QListView
204 int itemPos( const OVersatileViewItem * ); // QListView
205
206 bool isSelected( const OVersatileViewItem * ) const; // QListView // also in QIconViewItem but not in QIconView *shrug*
207
208 virtual void setMultiSelection( bool enable ); // QListView
209 bool isMultiSelection() const; // QListView
210
211 OVersatileViewItem * selectedItem() const; // QListView
212 virtual void setOpen( OVersatileViewItem *, bool ); // QListView
213 bool isOpen( const OVersatileViewItem * ) const; // QListView
214
215 OVersatileViewItem * firstChild() const; // QListView
216 int childCount() const; // QListView
217
218 virtual void setAllColumnsShowFocus( bool ); // QListView
219 bool allColumnsShowFocus() const; // QListView
220
221 virtual void setItemMargin( int ); // QListView
222 int itemMargin() const; // QListView
223
224 virtual void setRootIsDecorated( bool ); // QListView
225 bool rootIsDecorated() const; // QListView
226
227 void setShowSortIndicator( bool show ); // QListView
228 bool showSortIndicator() const; // QListView
229
230 int index( const OVersatileViewItem *item ) const; // QIconView
231
232 public slots:
233 void triggerUpdate(); // QListView
234
235 signals:
236 void expanded( OVersatileViewItem *item ); // QListView
237 void collapsed( OVersatileViewItem *item ); // QListView
238
239 //
240 // only in QIconView
241 //
242
243 public:
244 uint count() const; // QIconView
245
246 OVersatileViewItem *firstItem() const; // QIconView
247 OVersatileViewItem *lastItem() const; // QIconView
248
249 OVersatileViewItem *findItem( const QPoint &pos ) const; // QIconView
250 OVersatileViewItem *findItem( const QString &text ) const; // QIconView
251
252 OVersatileViewItem* findFirstVisibleItem( const QRect &r ) const; // QIconView
253 OVersatileViewItem* findLastVisibleItem( const QRect &r ) const; // QIconView
254
255 virtual void setGridX( int rx ); // QIconView
256 virtual void setGridY( int ry ); // QIconView
257 int gridX() const; // QIconView
258 int gridY() const; // QIconView
259 virtual void setSpacing( int sp ); // QIconView
260 int spacing() const; // QIconView
261 virtual void setItemTextPos( QIconView::ItemTextPos pos ); // QIconView
262 QIconView::ItemTextPos itemTextPos() const; // QIconView
263 virtual void setItemTextBackground( const QBrush &b ); // QIconView
264 QBrush itemTextBackground() const; // QIconView
265 virtual void setArrangement( QIconView::Arrangement am ); // QIconView
266 QIconView::Arrangement arrangement() const; // QIconView
267 virtual void setResizeMode( QIconView::ResizeMode am ); // QIconView
268 QIconView::ResizeMode resizeMode() const; // QIconView
269 virtual void setMaxItemWidth( int w ); // QIconView
270 int maxItemWidth() const; // QIconView
271 virtual void setMaxItemTextLength( int w ); // QIconView
272 int maxItemTextLength() const; // QIconView
273 virtual void setAutoArrange( bool b ); // QIconView
274 bool autoArrange() const; // QIconView
275 virtual void setShowToolTips( bool b ); // QIconView
276 bool showToolTips() const; // QIconView
277
278 bool sorting() const; // QIconView
279 bool sortDirection() const; // QIconView
280
281 virtual void setItemsMovable( bool b ); // QIconView
282 bool itemsMovable() const; // QIconView
283 virtual void setWordWrapIconText( bool b ); // QIconView
284 bool wordWrapIconText() const; // QIconView
285
286 public slots:
287 virtual void arrangeItemsInGrid( const QSize &grid, bool update = TRUE ); // QIconView
288 virtual void arrangeItemsInGrid( bool update = TRUE ); // QIconView
289 virtual void updateContents(); // QIconView
290
291 signals:
292 /*#ifndef QT_NO_DRAGANDDROP
293 void dropped( QDropEvent *e, const QValueList<QIconDragItem> &lst ); // QIconView
294 #endif
295 */
296 void moved(); // QIconView
297 void itemRenamed( OVersatileViewItem *item, const QString & ); // QIconView
298 void itemRenamed( OVersatileViewItem *item ); // QIconView
299
300 //==============================================================================================//
301 // "Derived" API - Case 2: Methods existing in QListView and QIconView with the same signatures
302 //==============================================================================================//
303
304 public:
305 enum SelectionMode {
306 Single = 0,
307 Multi,
308 Extended,
309 NoSelection
310 };
311
312 virtual void clear();
313
314 virtual void setFont( const QFont & );
315 virtual void setPalette( const QPalette & );
316
317 virtual void takeItem( OVersatileViewItem * );
318
319 void setSelectionMode( SelectionMode mode );
320 SelectionMode selectionMode() const;
321
322 virtual void selectAll( bool select );
323 virtual void clearSelection();
324 virtual void invertSelection();
325
326 void ensureItemVisible( const OVersatileViewItem * );
327 virtual void repaintItem( const OVersatileViewItem * ) const;
328
329 virtual void setCurrentItem( OVersatileViewItem * );
330 OVersatileViewItem * currentItem() const;
331
332 // bool eventFilter( QObject * o, QEvent * ); // use QWidgetStack implementation
333
334 // QSize minimumSizeHint() const; // use QWidgetStack implementation
335 // QSizePolicy sizePolicy() const; // use QWidgetStack implementation
336 // QSize sizeHint() const; // use QWidgetStack implementation
337
338 signals:
339 void selectionChanged();
340 void selectionChanged( OVersatileViewItem * );
341 void currentChanged( OVersatileViewItem * );
342 void clicked( OVersatileViewItem * );
343 void pressed( OVersatileViewItem * );
344
345 void doubleClicked( OVersatileViewItem * );
346 void returnPressed( OVersatileViewItem * );
347
348 void onItem( OVersatileViewItem * );
349 void onViewport();
350
351 //==============================================================================================//
352 // "Derived" API - Case 2: Methods existing in QListView and QIconView with differing signatures
353 //==============================================================================================//
354
355 /*
356
357 public:
358 virtual void insertItem( OVersatileViewItem * ); // QListView
359 virtual void insertItem( OVersatileViewItem *item, OVersatileViewItem *after = 0L ); // QIconView
360
361 virtual void setSelected( OVersatileViewItem *, bool ); // QListView
362 virtual void setSelected( OVersatileViewItem *item, bool s, bool cb = FALSE ); // QIconView
363
364 virtual void setSorting( int column, bool increasing = TRUE ); // QListView
365 void setSorting( bool sort, bool ascending = TRUE ); // QIconView
366
367 void sort(); // #### make virtual in next major release // QListView
368 virtual void sort( bool ascending = TRUE ); // QIconView
369
370 */
371
372 signals:
373 void clicked( OVersatileViewItem *, const QPoint &, int ); // QListView
374 void clicked( OVersatileViewItem *, const QPoint & ); // QIconView
375
376 void pressed( OVersatileViewItem *, const QPoint &, int ); // QListView
377 void pressed( OVersatileViewItem *, const QPoint & ); // QIconView
378
379 void rightButtonClicked( OVersatileViewItem* item, const QPoint& pos ); // QIconView
380 void rightButtonClicked( OVersatileViewItem *, const QPoint&, int ); // QListView
381
382 void rightButtonPressed( OVersatileViewItem* item, const QPoint& pos ); // QIconView
383 void rightButtonPressed( OVersatileViewItem *, const QPoint&, int ); // QListView
384
385 void mouseButtonPressed( int, OVersatileViewItem *, const QPoint& , int ); // QListView
386 void mouseButtonPressed( int button, OVersatileViewItem* item, const QPoint& pos ); // QIconView
387
388 void mouseButtonClicked( int, OVersatileViewItem *, const QPoint&, int ); // QListView
389 void mouseButtonClicked( int button, OVersatileViewItem* item, const QPoint& pos ); // QIconView
390
391};
392
393#endif
394