Diffstat (limited to 'libopie2/opieui/olistview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | libopie2/opieui/olistview.cpp | 153 |
1 files changed, 150 insertions, 3 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 | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
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. |
5 | .>+-= | 5 | .>+-= |
@@ -175,5 +175,5 @@ void OListView::serializeFrom( QDataStream& s ) | |||
175 | int cols; | 175 | int cols; |
176 | s >> cols; | 176 | s >> cols; |
177 | qDebug( "read number of columns = %d", cols ); | 177 | odebug << "read number of columns = " << cols << oendl; |
178 | 178 | ||
179 | while ( columns() < cols ) addColumn( QString::null ); | 179 | while ( columns() < cols ) addColumn( QString::null ); |
@@ -189,5 +189,5 @@ void OListView::serializeFrom( QDataStream& s ) | |||
189 | int items; | 189 | int items; |
190 | s >> items; | 190 | s >> items; |
191 | qDebug( "read number of items = %d", items ); | 191 | odebug << "read number of items = " << items << oendl; |
192 | 192 | ||
193 | for ( int i = 0; i < items; ++i ) | 193 | for ( int i = 0; i < items; ++i ) |
@@ -201,4 +201,28 @@ void OListView::serializeFrom( QDataStream& s ) | |||
201 | } | 201 | } |
202 | 202 | ||
203 | |||
204 | void 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 | |||
216 | void 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 | |||
203 | QDataStream& operator<<( QDataStream& s, const OListView& lv ) | 227 | QDataStream& operator<<( QDataStream& s, const OListView& lv ) |
204 | { | 228 | { |
@@ -446,4 +470,127 @@ QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) | |||
446 | 470 | ||
447 | /*====================================================================================== | 471 | /*====================================================================================== |
472 | * OCheckListItem | ||
473 | *======================================================================================*/ | ||
474 | |||
475 | OCheckListItem::OCheckListItem( QCheckListItem* parent, const QString& text, Type t ) | ||
476 | :QCheckListItem( parent, text, t ) | ||
477 | { | ||
478 | init(); | ||
479 | } | ||
480 | |||
481 | |||
482 | OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, Type t) | ||
483 | :QCheckListItem( parent, text, t ) | ||
484 | { | ||
485 | init(); | ||
486 | } | ||
487 | |||
488 | |||
489 | OCheckListItem::OCheckListItem( QListView* parent, const QString& text, Type t ) | ||
490 | :QCheckListItem( parent, text, t ) | ||
491 | { | ||
492 | init(); | ||
493 | } | ||
494 | |||
495 | |||
496 | OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, const QPixmap& p ) | ||
497 | :QCheckListItem( parent, text, p ) | ||
498 | { | ||
499 | init(); | ||
500 | } | ||
501 | |||
502 | |||
503 | OCheckListItem::OCheckListItem( QListView* parent, const QString& text, const QPixmap& p ) | ||
504 | :QCheckListItem( parent, text, p ) | ||
505 | { | ||
506 | init(); | ||
507 | } | ||
508 | |||
509 | |||
510 | OCheckListItem::~OCheckListItem() | ||
511 | { | ||
512 | } | ||
513 | |||
514 | void OCheckListItem::init() | ||
515 | { | ||
516 | m_known = false; | ||
517 | } | ||
518 | |||
519 | |||
520 | const QColor &OCheckListItem::backgroundColor() | ||
521 | { | ||
522 | return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : | ||
523 | listView()->viewport()->colorGroup().base(); | ||
524 | } | ||
525 | |||
526 | |||
527 | bool 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 | |||
571 | void 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 |
449 | *======================================================================================*/ | 596 | *======================================================================================*/ |