-rw-r--r-- | libopie2/opieui/olistview.cpp | 109 | ||||
-rw-r--r-- | libopie2/opieui/olistview.h | 177 |
2 files changed, 235 insertions, 51 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 | |||
@@ -219,4 +219,5 @@ OListViewItem::OListViewItem(QListView *parent) | |||
219 | } | 219 | } |
220 | 220 | ||
221 | |||
221 | OListViewItem::OListViewItem(QListViewItem *parent) | 222 | OListViewItem::OListViewItem(QListViewItem *parent) |
222 | : QListViewItem(parent) | 223 | : QListViewItem(parent) |
@@ -225,4 +226,5 @@ OListViewItem::OListViewItem(QListViewItem *parent) | |||
225 | } | 226 | } |
226 | 227 | ||
228 | |||
227 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) | 229 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) |
228 | : QListViewItem(parent, after) | 230 | : QListViewItem(parent, after) |
@@ -231,4 +233,5 @@ OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) | |||
231 | } | 233 | } |
232 | 234 | ||
235 | |||
233 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) | 236 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) |
234 | : QListViewItem(parent, after) | 237 | : QListViewItem(parent, after) |
@@ -237,4 +240,5 @@ OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) | |||
237 | } | 240 | } |
238 | 241 | ||
242 | |||
239 | OListViewItem::OListViewItem(QListView *parent, | 243 | OListViewItem::OListViewItem(QListView *parent, |
240 | QString label1, QString label2, QString label3, QString label4, | 244 | QString label1, QString label2, QString label3, QString label4, |
@@ -245,4 +249,5 @@ OListViewItem::OListViewItem(QListView *parent, | |||
245 | } | 249 | } |
246 | 250 | ||
251 | |||
247 | OListViewItem::OListViewItem(QListViewItem *parent, | 252 | OListViewItem::OListViewItem(QListViewItem *parent, |
248 | QString label1, QString label2, QString label3, QString label4, | 253 | QString label1, QString label2, QString label3, QString label4, |
@@ -253,4 +258,5 @@ OListViewItem::OListViewItem(QListViewItem *parent, | |||
253 | } | 258 | } |
254 | 259 | ||
260 | |||
255 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, | 261 | OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, |
256 | QString label1, QString label2, QString label3, QString label4, | 262 | QString label1, QString label2, QString label3, QString label4, |
@@ -261,4 +267,5 @@ OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, | |||
261 | } | 267 | } |
262 | 268 | ||
269 | |||
263 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, | 270 | OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, |
264 | QString label1, QString label2, QString label3, QString label4, | 271 | QString label1, QString label2, QString label3, QString label4, |
@@ -269,8 +276,10 @@ OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, | |||
269 | } | 276 | } |
270 | 277 | ||
278 | |||
271 | OListViewItem::~OListViewItem() | 279 | OListViewItem::~OListViewItem() |
272 | { | 280 | { |
273 | } | 281 | } |
274 | 282 | ||
283 | |||
275 | void OListViewItem::init() | 284 | void OListViewItem::init() |
276 | { | 285 | { |
@@ -278,4 +287,5 @@ void OListViewItem::init() | |||
278 | } | 287 | } |
279 | 288 | ||
289 | |||
280 | const QColor &OListViewItem::backgroundColor() | 290 | const QColor &OListViewItem::backgroundColor() |
281 | { | 291 | { |
@@ -284,4 +294,5 @@ const QColor &OListViewItem::backgroundColor() | |||
284 | } | 294 | } |
285 | 295 | ||
296 | |||
286 | bool OListViewItem::isAlternate() | 297 | bool OListViewItem::isAlternate() |
287 | { | 298 | { |
@@ -327,4 +338,5 @@ bool OListViewItem::isAlternate() | |||
327 | } | 338 | } |
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) |
330 | { | 342 | { |
@@ -349,4 +361,5 @@ void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, in | |||
349 | } | 361 | } |
350 | 362 | ||
363 | |||
351 | OListViewItem* OListViewItem::childFactory() | 364 | OListViewItem* OListViewItem::childFactory() |
352 | { | 365 | { |
@@ -354,4 +367,5 @@ OListViewItem* OListViewItem::childFactory() | |||
354 | } | 367 | } |
355 | 368 | ||
369 | |||
356 | #ifndef QT_NO_DATASTREAM | 370 | #ifndef QT_NO_DATASTREAM |
357 | void OListViewItem::serializeTo( QDataStream& s ) const | 371 | void OListViewItem::serializeTo( QDataStream& s ) const |
@@ -386,4 +400,6 @@ void OListViewItem::serializeTo( QDataStream& s ) const | |||
386 | qDebug( "OListviewItem stored." ); | 400 | qDebug( "OListviewItem stored." ); |
387 | } | 401 | } |
402 | |||
403 | |||
388 | void OListViewItem::serializeFrom( QDataStream& s ) | 404 | void OListViewItem::serializeFrom( QDataStream& s ) |
389 | { | 405 | { |
@@ -412,4 +428,5 @@ void OListViewItem::serializeFrom( QDataStream& s ) | |||
412 | } | 428 | } |
413 | 429 | ||
430 | |||
414 | QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) | 431 | QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) |
415 | { | 432 | { |
@@ -417,4 +434,5 @@ QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) | |||
417 | } | 434 | } |
418 | 435 | ||
436 | |||
419 | QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) | 437 | QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) |
420 | { | 438 | { |
@@ -422,2 +440,93 @@ QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) | |||
422 | } | 440 | } |
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 | |||
@@ -39,5 +39,11 @@ | |||
39 | class OListViewItem; | 39 | 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 |
43 | * like an alternate background for odd rows, an autostretch mode | 49 | * like an alternate background for odd rows, an autostretch mode |
@@ -45,7 +51,6 @@ class OListViewItem; | |||
45 | * | 51 | * |
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 | */ |
49 | class OListView: public QListView | 54 | class OListView: public QListView |
50 | { | 55 | { |
51 | public: | 56 | public: |
@@ -53,81 +58,63 @@ class OListViewItem; | |||
53 | * Constructor. | 58 | * Constructor. |
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. |
57 | */ | 62 | */ |
58 | OListView ( QWidget *parent = 0, const char *name = 0 ); | 63 | OListView( QWidget* parent = 0, const char* name = 0 ); |
59 | |||
60 | /** | 64 | /** |
61 | * Destructor. | 65 | * Destructor. |
62 | */ | 66 | */ |
63 | virtual ~OListView(); | 67 | virtual ~OListView(); |
64 | |||
65 | /** | 68 | /** |
66 | * Let the last column fit exactly all the available width. | 69 | * Let the last column fit exactly all the available width. |
67 | */ | 70 | */ |
68 | void setFullWidth( bool fullWidth ); | 71 | void setFullWidth( bool fullWidth ); |
69 | |||
70 | /** | 72 | /** |
71 | * Returns whether the last column is set to fit the available width. | 73 | * Returns whether the last column is set to fit the available width. |
72 | */ | 74 | */ |
73 | bool fullWidth() const; | 75 | bool fullWidth() const; |
74 | |||
75 | /** | 76 | /** |
76 | * Reimplemented for full width support | 77 | * Reimplemented for full width support |
77 | */ | 78 | */ |
78 | virtual int addColumn( const QString& label, int width = -1 ); | 79 | virtual int addColumn( const QString& label, int width = -1 ); |
79 | |||
80 | /** | 80 | /** |
81 | * Reimplemented for full width support | 81 | * Reimplemented for full width support |
82 | */ | 82 | */ |
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 | /** |
86 | * Reimplemented for full width support | 85 | * Reimplemented for full width support |
87 | */ | 86 | */ |
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 | /** |
112 | * @return the column separator pen | 104 | * @return the column separator pen |
113 | */ | 105 | */ |
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 | */ |
133 | virtual void serializeFrom( QDataStream& s ); | 120 | virtual void serializeFrom( QDataStream& s ); |
@@ -142,20 +129,25 @@ class OListViewItem; | |||
142 | #ifndef QT_NO_DATASTREAM | 129 | #ifndef QT_NO_DATASTREAM |
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 | ||
157 | class OListViewItem: public QListViewItem | 146 | class OListViewItem: public QListViewItem |
158 | { | 147 | { |
159 | public: | 148 | public: |
149 | /** | ||
150 | * Constructors. | ||
151 | */ | ||
160 | OListViewItem( QListView * parent ); | 152 | OListViewItem( QListView * parent ); |
161 | OListViewItem( QListViewItem * parent ); | 153 | OListViewItem( QListViewItem * parent ); |
@@ -186,18 +178,31 @@ class OListViewItem: public QListViewItem | |||
186 | QString = QString::null, QString = QString::null, | 178 | QString = QString::null, QString = QString::null, |
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 |
203 | /** | 208 | /** |
@@ -221,15 +226,85 @@ class OListViewItem: public QListViewItem | |||
221 | #ifndef QT_NO_DATASTREAM | 226 | #ifndef QT_NO_DATASTREAM |
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 |