-rw-r--r-- | libopie2/opieui/olistview.cpp | 109 | ||||
-rw-r--r-- | libopie2/opieui/olistview.h | 173 |
2 files changed, 233 insertions, 49 deletions
diff --git a/libopie2/opieui/olistview.cpp b/libopie2/opieui/olistview.cpp index 2b2f09a..8f97cc6 100644 --- a/libopie2/opieui/olistview.cpp +++ b/libopie2/opieui/olistview.cpp | |||
@@ -220,2 +220,3 @@ OListViewItem::OListViewItem(QListView *parent) | |||
220 | 220 | ||
221 | |||
221 | OListViewItem::OListViewItem(QListViewItem *parent) | 222 | OListViewItem::OListViewItem(QListViewItem *parent) |
@@ -226,2 +227,3 @@ OListViewItem::OListViewItem(QListViewItem *parent) | |||
226 | 227 | ||
228 | |||
227 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) | 229 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) |
@@ -232,2 +234,3 @@ OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) | |||
232 | 234 | ||
235 | |||
233 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) | 236 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) |
@@ -238,2 +241,3 @@ OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) | |||
238 | 241 | ||
242 | |||
239 | OListViewItem::OListViewItem(QListView *parent, | 243 | OListViewItem::OListViewItem(QListView *parent, |
@@ -246,2 +250,3 @@ OListViewItem::OListViewItem(QListView *parent, | |||
246 | 250 | ||
251 | |||
247 | OListViewItem::OListViewItem(QListViewItem *parent, | 252 | OListViewItem::OListViewItem(QListViewItem *parent, |
@@ -254,2 +259,3 @@ OListViewItem::OListViewItem(QListViewItem *parent, | |||
254 | 259 | ||
260 | |||
255 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, | 261 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, |
@@ -262,2 +268,3 @@ OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, | |||
262 | 268 | ||
269 | |||
263 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, | 270 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, |
@@ -270,2 +277,3 @@ OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, | |||
270 | 277 | ||
278 | |||
271 | OListViewItem::~OListViewItem() | 279 | OListViewItem::~OListViewItem() |
@@ -274,2 +282,3 @@ OListViewItem::~OListViewItem() | |||
274 | 282 | ||
283 | |||
275 | void OListViewItem::init() | 284 | void OListViewItem::init() |
@@ -279,2 +288,3 @@ void OListViewItem::init() | |||
279 | 288 | ||
289 | |||
280 | const QColor &OListViewItem::backgroundColor() | 290 | const QColor &OListViewItem::backgroundColor() |
@@ -285,2 +295,3 @@ const QColor &OListViewItem::backgroundColor() | |||
285 | 295 | ||
296 | |||
286 | bool OListViewItem::isAlternate() | 297 | bool OListViewItem::isAlternate() |
@@ -328,2 +339,3 @@ bool OListViewItem::isAlternate() | |||
328 | 339 | ||
340 | |||
329 | void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) | 341 | void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) |
@@ -350,2 +362,3 @@ void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, in | |||
350 | 362 | ||
363 | |||
351 | OListViewItem* OListViewItem::childFactory() | 364 | OListViewItem* OListViewItem::childFactory() |
@@ -355,2 +368,3 @@ OListViewItem* OListViewItem::childFactory() | |||
355 | 368 | ||
369 | |||
356 | #ifndef QT_NO_DATASTREAM | 370 | #ifndef QT_NO_DATASTREAM |
@@ -387,2 +401,4 @@ void OListViewItem::serializeTo( QDataStream& s ) const | |||
387 | } | 401 | } |
402 | |||
403 | |||
388 | void OListViewItem::serializeFrom( QDataStream& s ) | 404 | void OListViewItem::serializeFrom( QDataStream& s ) |
@@ -413,2 +429,3 @@ void OListViewItem::serializeFrom( QDataStream& s ) | |||
413 | 429 | ||
430 | |||
414 | QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) | 431 | QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) |
@@ -418,2 +435,3 @@ QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) | |||
418 | 435 | ||
436 | |||
419 | QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) | 437 | QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) |
@@ -423 +441,92 @@ QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) | |||
423 | #endif // QT_NO_DATASTREAM | 441 | #endif // QT_NO_DATASTREAM |
442 | |||
443 | |||
444 | /*====================================================================================== | ||
445 | * ONamedListView | ||
446 | *======================================================================================*/ | ||
447 | |||
448 | ONamedListView::ONamedListView( QWidget *parent, const char *name ) | ||
449 | :OListView( parent, name ) | ||
450 | { | ||
451 | } | ||
452 | |||
453 | |||
454 | ONamedListView::~ONamedListView() | ||
455 | { | ||
456 | } | ||
457 | |||
458 | |||
459 | void ONamedListView::addColumns( const QStringList& columns ) | ||
460 | { | ||
461 | for ( QStringList::ConstIterator it = columns.begin(); it != columns.end(); ++it ) | ||
462 | { | ||
463 | qDebug( "adding column %s", (const char*) *it ); | ||
464 | addColumn( *it ); | ||
465 | } | ||
466 | } | ||
467 | |||
468 | |||
469 | /*====================================================================================== | ||
470 | * ONamedListViewItem | ||
471 | *======================================================================================*/ | ||
472 | |||
473 | ONamedListViewItem::ONamedListViewItem( QListView* parent, const QStringList& texts ) | ||
474 | :OListViewItem( parent ) | ||
475 | { | ||
476 | setText( texts ); | ||
477 | } | ||
478 | |||
479 | |||
480 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, const QStringList& texts ) | ||
481 | :OListViewItem( parent ) | ||
482 | { | ||
483 | setText( texts ); | ||
484 | } | ||
485 | |||
486 | |||
487 | ONamedListViewItem::ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts ) | ||
488 | :OListViewItem( parent, after ) | ||
489 | { | ||
490 | setText( texts ); | ||
491 | } | ||
492 | |||
493 | |||
494 | ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts ) | ||
495 | :OListViewItem( parent, after ) | ||
496 | { | ||
497 | setText( texts ); | ||
498 | } | ||
499 | |||
500 | |||
501 | ONamedListViewItem::~ONamedListViewItem() | ||
502 | { | ||
503 | } | ||
504 | |||
505 | |||
506 | void ONamedListViewItem::setText( const QStringList& texts ) | ||
507 | { | ||
508 | int col = 0; | ||
509 | for ( QStringList::ConstIterator it = texts.begin(); it != texts.end(); ++it ) | ||
510 | { | ||
511 | qDebug( "setting column %d = text %s", col, (const char*) *it ); | ||
512 | OListViewItem::setText( col++, *it ); | ||
513 | } | ||
514 | |||
515 | } | ||
516 | |||
517 | |||
518 | void ONamedListViewItem::setText( const QString& column, const QString& text ) | ||
519 | { | ||
520 | //FIXME: If used excessively, this will slow down performance of updates | ||
521 | //FIXME: because of the linear search over all column texts. | ||
522 | //FIXME: I will optimize later by using a hash map. | ||
523 | for ( int i = 0; i < listView()->columns(); ++i ) | ||
524 | { | ||
525 | if ( listView()->columnText( i ) == column ) | ||
526 | { | ||
527 | OListViewItem::setText( i, text ); | ||
528 | return; | ||
529 | } | ||
530 | } | ||
531 | qWarning( "ONamedListViewItem::setText(): Warning! Columntext '%s' not found.", (const char*) column ); | ||
532 | } | ||
diff --git a/libopie2/opieui/olistview.h b/libopie2/opieui/olistview.h index b62e278..99770bf 100644 --- a/libopie2/opieui/olistview.h +++ b/libopie2/opieui/olistview.h | |||
@@ -40,3 +40,9 @@ class OListViewItem; | |||
40 | 40 | ||
41 | /*====================================================================================== | ||
42 | * OListView | ||
43 | *======================================================================================*/ | ||
44 | |||
41 | /** | 45 | /** |
46 | * @brief A list/tree widget. | ||
47 | * | ||
42 | * A @ref QListView variant featuring visual and functional enhancements | 48 | * A @ref QListView variant featuring visual and functional enhancements |
@@ -46,3 +52,2 @@ class OListViewItem; | |||
46 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | 52 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> |
47 | * @short OListView list/tree widget. | ||
48 | */ | 53 | */ |
@@ -54,3 +59,3 @@ class OListViewItem; | |||
54 | * | 59 | * |
55 | * The parameters @p parent and @p name are handled by | 60 | * The parameters @a parent and @a name are handled by |
56 | * @ref QListView, as usual. | 61 | * @ref QListView, as usual. |
@@ -58,3 +63,2 @@ class OListViewItem; | |||
58 | OListView ( QWidget *parent = 0, const char *name = 0 ); | 63 | OListView ( QWidget *parent = 0, const char *name = 0 ); |
59 | |||
60 | /** | 64 | /** |
@@ -63,3 +67,2 @@ class OListViewItem; | |||
63 | virtual ~OListView(); | 67 | virtual ~OListView(); |
64 | |||
65 | /** | 68 | /** |
@@ -68,3 +71,2 @@ class OListViewItem; | |||
68 | void setFullWidth( bool fullWidth ); | 71 | void setFullWidth( bool fullWidth ); |
69 | |||
70 | /** | 72 | /** |
@@ -73,3 +75,2 @@ class OListViewItem; | |||
73 | bool fullWidth() const; | 75 | bool fullWidth() const; |
74 | |||
75 | /** | 76 | /** |
@@ -78,3 +79,2 @@ class OListViewItem; | |||
78 | virtual int addColumn( const QString& label, int width = -1 ); | 79 | virtual int addColumn( const QString& label, int width = -1 ); |
79 | |||
80 | /** | 80 | /** |
@@ -83,3 +83,2 @@ class OListViewItem; | |||
83 | virtual int addColumn( const QIconSet& iconset, const QString& label, int width = -1 ); | 83 | virtual int addColumn( const QIconSet& iconset, const QString& label, int width = -1 ); |
84 | |||
85 | /** | 84 | /** |
@@ -88,24 +87,17 @@ class OListViewItem; | |||
88 | virtual void removeColumn(int index); | 87 | virtual void removeColumn(int index); |
89 | |||
90 | /** | 88 | /** |
91 | * sets the alternate background background color. | 89 | * Set the alternate background background @a color. |
90 | * Set to an invalid color to disable alternate colors. | ||
92 | * This only has an effect if the items are OListViewItems | 91 | * This only has an effect if the items are OListViewItems |
93 | * | ||
94 | * @param c the color to use for every other item. Set to an invalid | ||
95 | * color to disable alternate colors. | ||
96 | */ | 92 | */ |
97 | void setAlternateBackground( const QColor &c ); | 93 | void setAlternateBackground( const QColor& color ); |
98 | |||
99 | /** | 94 | /** |
100 | * sets the column separator pen. | 95 | * Sets the column separator @a pen. |
101 | * | ||
102 | * @param p the pen used to draw the column separator. | ||
103 | */ | 96 | */ |
104 | void setColumnSeparator( const QPen &p ); | 97 | void setColumnSeparator( const QPen& pen ); |
105 | 98 | ||
106 | /** | 99 | /** |
107 | * @return the alternate background color | 100 | * @returns the alternate background color |
108 | */ | 101 | */ |
109 | const QColor& alternateBackground() const; | 102 | const QColor& alternateBackground() const; |
110 | |||
111 | /** | 103 | /** |
@@ -114,19 +106,14 @@ class OListViewItem; | |||
114 | const QPen& columnSeparator() const; | 106 | const QPen& columnSeparator() const; |
115 | |||
116 | /** | 107 | /** |
117 | * create a list view item as child of this object | 108 | * Create a list view item as child of this object |
118 | * @return the new object | 109 | * @returns the new object |
119 | */ | 110 | */ |
120 | virtual OListViewItem* childFactory(); | 111 | virtual OListViewItem* childFactory(); |
121 | |||
122 | #ifndef QT_NO_DATASTREAM | 112 | #ifndef QT_NO_DATASTREAM |
123 | /** | 113 | /** |
124 | * serialize this object to a @ref QDataStream | 114 | * Serialize this object to @ref QDataStream @a stream |
125 | * @param s the stream used to serialize this object. | ||
126 | */ | 115 | */ |
127 | virtual void serializeTo( QDataStream& s ) const; | 116 | virtual void serializeTo( QDataStream& stream ) const; |
128 | |||
129 | /** | 117 | /** |
130 | * serialize this object from a @ref QDataStream | 118 | * Serialize this object from a @ref QDataStream @a stream |
131 | * @param s the stream used to serialize this object. | ||
132 | */ | 119 | */ |
@@ -143,14 +130,16 @@ class OListViewItem; | |||
143 | /** | 130 | /** |
144 | * \relates QListView | 131 | * @relates OListView |
145 | * Writes a listview to the stream and returns a reference to the stream. | 132 | * Writes @a listview to the @a stream and returns a reference to the stream. |
146 | */ | 133 | */ |
147 | QDataStream& operator<<( QDataStream& s, const OListView& lv ); | 134 | QDataStream& operator<<( QDataStream& stream, const OListView& listview ); |
148 | /** | 135 | /** |
149 | * \relates QListView | 136 | * @relates OListView |
150 | * Reads a listview from the stream and returns a reference to the stream. | 137 | * Reads @a listview from the @a stream and returns a reference to the stream. |
151 | */ | 138 | */ |
152 | QDataStream& operator>>( QDataStream& s, OListView& lv ); | 139 | QDataStream& operator>>( QDataStream& stream, OListView& listview ); |
153 | #endif // QT_NO_DATASTREAM | 140 | #endif // QT_NO_DATASTREAM |
154 | 141 | ||
155 | //****************************** OListViewItem ****************************************************************** | 142 | /*====================================================================================== |
143 | * OListViewItem | ||
144 | *======================================================================================*/ | ||
156 | 145 | ||
@@ -159,2 +148,5 @@ class OListViewItem: public QListViewItem | |||
159 | public: | 148 | public: |
149 | /** | ||
150 | * Constructors. | ||
151 | */ | ||
160 | OListViewItem( QListView * parent ); | 152 | OListViewItem( QListView * parent ); |
@@ -187,16 +179,29 @@ class OListViewItem: public QListViewItem | |||
187 | QString = QString::null, QString = QString::null ); | 179 | QString = QString::null, QString = QString::null ); |
188 | 180 | /** | |
181 | * Destructor. | ||
182 | */ | ||
189 | virtual ~OListViewItem(); | 183 | virtual ~OListViewItem(); |
190 | 184 | /** | |
185 | * @returns the background color of the list item. | ||
186 | */ | ||
191 | const QColor& backgroundColor(); | 187 | const QColor& backgroundColor(); |
188 | /** | ||
189 | * @returns true, if the item is at an odd position and | ||
190 | * thus have to be painted with the alternate background color. | ||
191 | */ | ||
192 | bool isAlternate(); | 192 | bool isAlternate(); |
193 | /** | ||
194 | * @note: Reimplemented for internal purposes - the API is not affected | ||
195 | * | ||
196 | */ | ||
193 | void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int alignment ); | 197 | void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int alignment ); |
198 | /** | ||
199 | * Perform object initialization. | ||
200 | */ | ||
194 | void init(); | 201 | void init(); |
195 | |||
196 | /** | 202 | /** |
197 | * create a list view item as child of this object | 203 | * create a list view item as child of this object |
198 | * @return the new object | 204 | * @returns the new object |
199 | */ | 205 | */ |
200 | virtual OListViewItem* childFactory(); | 206 | virtual OListViewItem* childFactory(); |
201 | |||
202 | #ifndef QT_NO_DATASTREAM | 207 | #ifndef QT_NO_DATASTREAM |
@@ -222,14 +227,84 @@ class OListViewItem: public QListViewItem | |||
222 | /** | 227 | /** |
223 | * \relates QListViewItem | 228 | * @relates QListViewItem |
224 | * Writes a listview item and all subitems recursively to the stream | 229 | * Writes listview @a item and all subitems recursively to @a stream |
225 | * and returns a reference to the stream. | 230 | * and returns a reference to the stream. |
226 | */ | 231 | */ |
227 | QDataStream& operator<<( QDataStream &s, const OListViewItem& lvi ); | 232 | QDataStream& operator<<( QDataStream& stream, const OListViewItem& item ); |
228 | /** | 233 | /** |
229 | * \relates QListViewItem | 234 | * @relates QListViewItem |
230 | * Reads a listview item from the stream and returns a reference to the stream. | 235 | * Reads listview @a item from @a stream and returns a reference to the stream. |
231 | */ | 236 | */ |
232 | QDataStream& operator>>( QDataStream &s, OListViewItem& lvi ); | 237 | QDataStream& operator>>( QDataStream& stream, OListViewItem& item ); |
233 | #endif // QT_NO_DATASTREAM | 238 | #endif // QT_NO_DATASTREAM |
234 | 239 | ||
240 | /*====================================================================================== | ||
241 | * ONamedListView | ||
242 | *======================================================================================*/ | ||
243 | |||
244 | /** | ||
245 | * @brief An OListView variant with named columns. | ||
246 | * | ||
247 | * This class provides a higher-level interface to the columns in an OListView. | ||
248 | * | ||
249 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | ||
250 | */ | ||
251 | class ONamedListView: public OListView | ||
252 | { | ||
253 | public: | ||
254 | /** | ||
255 | * Constructor. | ||
256 | * | ||
257 | * The parameters @a parent and @a name are handled by | ||
258 | * @ref OListView, as usual. | ||
259 | */ | ||
260 | ONamedListView( QWidget* parent = 0, const char* name = 0 ); | ||
261 | /** | ||
262 | * Destructor. | ||
263 | */ | ||
264 | virtual ~ONamedListView(); | ||
265 | /** | ||
266 | * Add a number of @a columns to the listview. | ||
267 | */ | ||
268 | virtual void addColumns( const QStringList& columns ); | ||
269 | }; | ||
270 | |||
271 | /*====================================================================================== | ||
272 | * ONamedListViewItem | ||
273 | *======================================================================================*/ | ||
274 | |||
275 | /** | ||
276 | * @brief An OListView variant with named columns. | ||
277 | * | ||
278 | * This class provides a higher-level interface to the columns in an OListViewItem. | ||
279 | * | ||
280 | * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> | ||
281 | */ | ||
282 | class ONamedListViewItem: public OListViewItem | ||
283 | { | ||
284 | public: | ||
285 | /** | ||
286 | * Constructor. Accepts the same parameters as a @ref OListViewItem, | ||
287 | * plus a @ref QStringList which holds an arbitrary number of @a texts. | ||
288 | */ | ||
289 | ONamedListViewItem( QListView* parent, const QStringList& texts ); | ||
290 | ONamedListViewItem( QListViewItem* parent, const QStringList& texts ); | ||
291 | ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts ); | ||
292 | ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts ); | ||
293 | /** | ||
294 | * Destructor. | ||
295 | */ | ||
296 | virtual ~ONamedListViewItem(); | ||
297 | /** | ||
298 | * Sets the text in column @a column to @a text. | ||
299 | * This method differs from @ref QListViewItem::setText() in that it | ||
300 | * accepts a string as column indicator instead of an int. | ||
301 | */ | ||
302 | virtual void setText( const QString& column, const QString& text ); | ||
303 | /** | ||
304 | * Sets a number of @a texts for this item. | ||
305 | */ | ||
306 | virtual void setText( const QStringList& texts ); | ||
307 | }; | ||
308 | |||
309 | |||
235 | #endif // OLISTVIEW_H | 310 | #endif // OLISTVIEW_H |