summaryrefslogtreecommitdiff
path: root/libopie2/opieui
authormickeyl <mickeyl>2003-05-01 14:00:37 (UTC)
committer mickeyl <mickeyl>2003-05-01 14:00:37 (UTC)
commit95e533a6ac257d3b95cd8905660008fb7dcd33f1 (patch) (unidiff)
treec671954f59eaa70db2285f9abe49fd8b4512dd12 /libopie2/opieui
parent1d721ddb247e9000e29fba3150e0cce5f59f543e (diff)
downloadopie-95e533a6ac257d3b95cd8905660008fb7dcd33f1.zip
opie-95e533a6ac257d3b95cd8905660008fb7dcd33f1.tar.gz
opie-95e533a6ac257d3b95cd8905660008fb7dcd33f1.tar.bz2
- restructure opieui example directory
- start work on ONamedListViewItem providing a slightly higher level interface
Diffstat (limited to 'libopie2/opieui') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opieui/olistview.cpp109
-rw-r--r--libopie2/opieui/olistview.h173
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
@@ -218,24 +218,28 @@ OListViewItem::OListViewItem(QListView *parent)
218 init(); 218 init();
219} 219}
220 220
221
221OListViewItem::OListViewItem(QListViewItem *parent) 222OListViewItem::OListViewItem(QListViewItem *parent)
222 : QListViewItem(parent) 223 : QListViewItem(parent)
223{ 224{
224 init(); 225 init();
225} 226}
226 227
228
227OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) 229OListViewItem::OListViewItem(QListView *parent, QListViewItem *after)
228 : QListViewItem(parent, after) 230 : QListViewItem(parent, after)
229{ 231{
230 init(); 232 init();
231} 233}
232 234
235
233OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) 236OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after)
234 : QListViewItem(parent, after) 237 : QListViewItem(parent, after)
235{ 238{
236 init(); 239 init();
237} 240}
238 241
242
239OListViewItem::OListViewItem(QListView *parent, 243OListViewItem::OListViewItem(QListView *parent,
240 QString label1, QString label2, QString label3, QString label4, 244 QString label1, QString label2, QString label3, QString label4,
241 QString label5, QString label6, QString label7, QString label8) 245 QString label5, QString label6, QString label7, QString label8)
@@ -244,6 +248,7 @@ OListViewItem::OListViewItem(QListView *parent,
244 init(); 248 init();
245} 249}
246 250
251
247OListViewItem::OListViewItem(QListViewItem *parent, 252OListViewItem::OListViewItem(QListViewItem *parent,
248 QString label1, QString label2, QString label3, QString label4, 253 QString label1, QString label2, QString label3, QString label4,
249 QString label5, QString label6, QString label7, QString label8) 254 QString label5, QString label6, QString label7, QString label8)
@@ -252,6 +257,7 @@ OListViewItem::OListViewItem(QListViewItem *parent,
252 init(); 257 init();
253} 258}
254 259
260
255OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, 261OListViewItem::OListViewItem(QListView *parent, QListViewItem *after,
256 QString label1, QString label2, QString label3, QString label4, 262 QString label1, QString label2, QString label3, QString label4,
257 QString label5, QString label6, QString label7, QString label8) 263 QString label5, QString label6, QString label7, QString label8)
@@ -260,6 +266,7 @@ OListViewItem::OListViewItem(QListView *parent, QListViewItem *after,
260 init(); 266 init();
261} 267}
262 268
269
263OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, 270OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after,
264 QString label1, QString label2, QString label3, QString label4, 271 QString label1, QString label2, QString label3, QString label4,
265 QString label5, QString label6, QString label7, QString label8) 272 QString label5, QString label6, QString label7, QString label8)
@@ -268,21 +275,25 @@ OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after,
268 init(); 275 init();
269} 276}
270 277
278
271OListViewItem::~OListViewItem() 279OListViewItem::~OListViewItem()
272{ 280{
273} 281}
274 282
283
275void OListViewItem::init() 284void OListViewItem::init()
276{ 285{
277 m_known = false; 286 m_known = false;
278} 287}
279 288
289
280const QColor &OListViewItem::backgroundColor() 290const QColor &OListViewItem::backgroundColor()
281{ 291{
282 return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : 292 return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() :
283 listView()->viewport()->colorGroup().base(); 293 listView()->viewport()->colorGroup().base();
284} 294}
285 295
296
286bool OListViewItem::isAlternate() 297bool OListViewItem::isAlternate()
287{ 298{
288 OListView *lv = static_cast<OListView*>( listView() ); 299 OListView *lv = static_cast<OListView*>( listView() );
@@ -326,6 +337,7 @@ bool OListViewItem::isAlternate()
326 return m_odd; 337 return m_odd;
327} 338}
328 339
340
329void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) 341void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment)
330{ 342{
331 QColorGroup _cg = cg; 343 QColorGroup _cg = cg;
@@ -348,11 +360,13 @@ void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, in
348 p->drawLine( width-1, 0, width-1, height() ); 360 p->drawLine( width-1, 0, width-1, height() );
349} 361}
350 362
363
351OListViewItem* OListViewItem::childFactory() 364OListViewItem* OListViewItem::childFactory()
352{ 365{
353 return new OListViewItem( this ); 366 return new OListViewItem( this );
354} 367}
355 368
369
356#ifndef QT_NO_DATASTREAM 370#ifndef QT_NO_DATASTREAM
357void OListViewItem::serializeTo( QDataStream& s ) const 371void OListViewItem::serializeTo( QDataStream& s ) const
358{ 372{
@@ -385,6 +399,8 @@ void OListViewItem::serializeTo( QDataStream& s ) const
385 399
386 qDebug( "OListviewItem stored." ); 400 qDebug( "OListviewItem stored." );
387} 401}
402
403
388void OListViewItem::serializeFrom( QDataStream& s ) 404void OListViewItem::serializeFrom( QDataStream& s )
389{ 405{
390 #warning Caution... the binary format is still under construction... 406 #warning Caution... the binary format is still under construction...
@@ -411,13 +427,106 @@ void OListViewItem::serializeFrom( QDataStream& s )
411 qDebug( "OListViewItem loaded." ); 427 qDebug( "OListViewItem loaded." );
412} 428}
413 429
430
414QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) 431QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi )
415{ 432{
416 lvi.serializeTo( s ); 433 lvi.serializeTo( s );
417} 434}
418 435
436
419QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) 437QDataStream& operator>>( QDataStream& s, OListViewItem& lvi )
420{ 438{
421 lvi.serializeFrom( s ); 439 lvi.serializeFrom( s );
422} 440}
423#endif // QT_NO_DATASTREAM 441#endif // QT_NO_DATASTREAM
442
443
444/*======================================================================================
445 * ONamedListView
446 *======================================================================================*/
447
448ONamedListView::ONamedListView( QWidget *parent, const char *name )
449 :OListView( parent, name )
450{
451}
452
453
454ONamedListView::~ONamedListView()
455{
456}
457
458
459void 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
473ONamedListViewItem::ONamedListViewItem( QListView* parent, const QStringList& texts )
474 :OListViewItem( parent )
475{
476 setText( texts );
477}
478
479
480ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, const QStringList& texts )
481 :OListViewItem( parent )
482{
483 setText( texts );
484}
485
486
487ONamedListViewItem::ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts )
488 :OListViewItem( parent, after )
489{
490 setText( texts );
491}
492
493
494ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts )
495 :OListViewItem( parent, after )
496{
497 setText( texts );
498}
499
500
501ONamedListViewItem::~ONamedListViewItem()
502{
503}
504
505
506void 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
518void 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
@@ -38,13 +38,18 @@
38 38
39class OListViewItem; 39class 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
44 * for the width of the widget ( >= Qt 3 only ) and persistence capabilities. 50 * for the width of the widget ( >= Qt 3 only ) and persistence capabilities.
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{
@@ -52,83 +57,65 @@ class OListViewItem;
52 /** 57 /**
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 );
134#endif 121#endif
@@ -141,22 +128,27 @@ class OListViewItem;
141 128
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 */
147QDataStream& operator<<( QDataStream& s, const OListView& lv ); 134QDataStream& 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 */
152QDataStream& operator>>( QDataStream& s, OListView& lv ); 139QDataStream& 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
157class OListViewItem: public QListViewItem 146class 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 );
162 OListViewItem( QListView * parent, QListViewItem * after ); 154 OListViewItem( QListView * parent, QListViewItem * after );
@@ -185,20 +177,33 @@ class OListViewItem: public QListViewItem
185 QString = QString::null, QString = QString::null, 177 QString = QString::null, QString = QString::null,
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 /**
204 * serialize this object to or from a @ref QDataStream 209 * serialize this object to or from a @ref QDataStream
@@ -220,16 +225,86 @@ class OListViewItem: public QListViewItem
220 225
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 */
227QDataStream& operator<<( QDataStream &s, const OListViewItem& lvi ); 232QDataStream& 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 */
232QDataStream& operator>>( QDataStream &s, OListViewItem& lvi ); 237QDataStream& 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 */
251class 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 */
282class 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