summaryrefslogtreecommitdiff
path: root/libopie2/opieui
Unidiff
Diffstat (limited to 'libopie2/opieui') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/olistview.cpp153
-rw-r--r--libopie2/opieui/olistview.h71
2 files changed, 213 insertions, 11 deletions
diff --git a/libopie2/opieui/olistview.cpp b/libopie2/opieui/olistview.cpp
index 84617f8..0ee2fde 100644
--- a/libopie2/opieui/olistview.cpp
+++ b/libopie2/opieui/olistview.cpp
@@ -2,3 +2,3 @@
2                 This file is part of the Opie Project 2                 This file is part of the Opie Project
3 =. (C) 2003 Michael 'Mickey' Lauer <mickey@Vanille.de> 3 =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de>
4 .=l. 4 .=l.
@@ -176,3 +176,3 @@ void OListView::serializeFrom( QDataStream& s )
176 s >> cols; 176 s >> cols;
177 qDebug( "read number of columns = %d", cols ); 177 odebug << "read number of columns = " << cols << oendl;
178 178
@@ -190,3 +190,3 @@ void OListView::serializeFrom( QDataStream& s )
190 s >> items; 190 s >> items;
191 qDebug( "read number of items = %d", items ); 191 odebug << "read number of items = " << items << oendl;
192 192
@@ -202,2 +202,26 @@ void OListView::serializeFrom( QDataStream& s )
202 202
203
204void OListView::expand()
205{
206 odebug << "OListView::expand" << oendl;
207
208 QListViewItemIterator it( this );
209 while ( it.current() ) {
210 it.current()->setOpen( true );
211 ++it;
212 }
213}
214
215
216void OListView::collapse()
217{
218 odebug << "OListView::collapse" << oendl;
219 QListViewItemIterator it( this );
220 while ( it.current() ) {
221 it.current()->setOpen( false );
222 ++it;
223 }
224}
225
226
203QDataStream& operator<<( QDataStream& s, const OListView& lv ) 227QDataStream& operator<<( QDataStream& s, const OListView& lv )
@@ -447,2 +471,125 @@ QDataStream& operator>>( QDataStream& s, OListViewItem& lvi )
447/*====================================================================================== 471/*======================================================================================
472 * OCheckListItem
473 *======================================================================================*/
474
475OCheckListItem::OCheckListItem( QCheckListItem* parent, const QString& text, Type t )
476 :QCheckListItem( parent, text, t )
477{
478 init();
479}
480
481
482OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, Type t)
483 :QCheckListItem( parent, text, t )
484{
485 init();
486}
487
488
489OCheckListItem::OCheckListItem( QListView* parent, const QString& text, Type t )
490 :QCheckListItem( parent, text, t )
491{
492 init();
493}
494
495
496OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, const QPixmap& p )
497 :QCheckListItem( parent, text, p )
498{
499 init();
500}
501
502
503OCheckListItem::OCheckListItem( QListView* parent, const QString& text, const QPixmap& p )
504 :QCheckListItem( parent, text, p )
505{
506 init();
507}
508
509
510OCheckListItem::~OCheckListItem()
511{
512}
513
514void OCheckListItem::init()
515{
516 m_known = false;
517}
518
519
520const QColor &OCheckListItem::backgroundColor()
521{
522 return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() :
523 listView()->viewport()->colorGroup().base();
524}
525
526
527bool OCheckListItem::isAlternate()
528{
529 OListView *lv = static_cast<OListView*>( listView() );
530
531 // check if the item above is an OCheckListItem
532 OCheckListItem *above = static_cast<OCheckListItem*>( itemAbove() );
533 /*if (! itemAbove()->inherits( "OCheckListItem" )) return false;*/
534
535 // check if we have a valid alternate background color
536 if (!(lv && lv->alternateBackground().isValid())) return false;
537
538 m_known = above ? above->m_known : true;
539 if (m_known)
540 {
541 m_odd = above ? !above->m_odd : false;
542 }
543 else
544 {
545 OCheckListItem *item;
546 bool previous = true;
547 if (parent())
548 {
549 item = static_cast<OCheckListItem *>(parent());
550 if ( item /*&& item->inherits( "OCheckListItem" )*/ ) previous = item->m_odd;
551 item = static_cast<OCheckListItem *>(parent()->firstChild());
552 /* if ( !item.inherits( "OCheckListItem" ) item = 0; */
553 }
554 else
555 {
556 item = static_cast<OCheckListItem *>(lv->firstChild());
557 }
558
559 while(item)
560 {
561 item->m_odd = previous = !previous;
562 item->m_known = true;
563 item = static_cast<OCheckListItem *>(item->nextSibling());
564 /* if (!item.inherits( "OCheckListItem" ) ) break; */
565 }
566 }
567 return m_odd;
568}
569
570
571void OCheckListItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment)
572{
573 QColorGroup _cg = cg;
574 const QPixmap *pm = listView()->viewport()->backgroundPixmap();
575 if (pm && !pm->isNull())
576 {
577 _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) );
578 p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() );
579 }
580 else if ( isAlternate() )
581 {
582 _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() );
583 }
584 QCheckListItem::paintCell( p, _cg, column, width, alignment );
585
586 //FIXME: Use styling here!
587
588 const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator();
589 p->setPen( pen );
590 p->drawLine( width-1, 0, width-1, height() );
591}
592
593
594/*======================================================================================
448 * ONamedListView 595 * ONamedListView
diff --git a/libopie2/opieui/olistview.h b/libopie2/opieui/olistview.h
index a00b43a..59b0973 100644
--- a/libopie2/opieui/olistview.h
+++ b/libopie2/opieui/olistview.h
@@ -2,4 +2,3 @@
2                 This file is part of the Opie Project 2                 This file is part of the Opie Project
3 3 =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@vanille.de>
4 =. (C) 2003 Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de>
5 .=l. 4 .=l.
@@ -53,3 +52,3 @@ class OListViewItem;
53 * 52 *
54 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 53 * @author Michael 'Mickey' Lauer <mickey@vanille.de>
55 */ 54 */
@@ -124,7 +123,17 @@ class OListView: public QListView
124 123
125protected slots: 124 public slots:
126 /** 125 /**
126 * Expand all items
127 */
128 void expand();
129 /**
130 * Collapse all items
131 */
132 void collapse();
133
134 protected slots:
135 /**
127 * expand the current OListViewItem 136 * expand the current OListViewItem
128 */ 137 */
129 void expand(QListViewItem*); 138 void expand(QListViewItem*);
130 139
@@ -155,2 +164,3 @@ class OListViewItem: public QListViewItem
155{ 164{
165 friend class OCheckListItem;
156 public: 166 public:
@@ -252,2 +262,47 @@ QDataStream& operator>>( QDataStream& stream, OListViewItem& item );
252 262
263
264/*======================================================================================
265 * OCheckListItem
266 *======================================================================================*/
267
268class OCheckListItem : public QCheckListItem
269{
270 public:
271
272 OCheckListItem( QCheckListItem *parent, const QString &text,
273 Type = Controller );
274 OCheckListItem( QListViewItem *parent, const QString &text,
275 Type = Controller );
276 OCheckListItem( QListView *parent, const QString &text,
277 Type = Controller );
278 OCheckListItem( QListViewItem *parent, const QString &text,
279 const QPixmap & );
280 OCheckListItem( QListView *parent, const QString &text,
281 const QPixmap & );
282 ~OCheckListItem();
283 /**
284 * @returns the background color of the list item.
285 */
286 const QColor& backgroundColor();
287 /**
288 * @returns true, if the item is at an odd position and
289 * thus have to be painted with the alternate background color.
290 */
291 bool isAlternate();
292 /**
293 * @note: Reimplemented for internal purposes - the API is not affected
294 *
295 */
296 void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int alignment );
297 /**
298 * Perform object initialization.
299 */
300 void init();
301
302 private:
303 bool m_known;
304 bool m_odd;
305};
306
307
253/*====================================================================================== 308/*======================================================================================
@@ -263,3 +318,3 @@ class ONamedListViewItem;
263 * 318 *
264 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 319 * @author Michael 'Mickey' Lauer <mickey@vanille.de>
265 */ 320 */
@@ -312,3 +367,3 @@ class ONamedListView: public OListView
312 * 367 *
313 * @author Michael 'Mickey' Lauer <mickey@tm.informatik.uni-frankfurt.de> 368 * @author Michael 'Mickey' Lauer <mickey@vanille.de>
314 */ 369 */