summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-08-26 09:49:39 (UTC)
committer mickeyl <mickeyl>2004-08-26 09:49:39 (UTC)
commitf64f691f57b134a839b4913e9a2f524790916f51 (patch) (unidiff)
tree4b8f5b6c066e9ad53a033ee16d42c8bb26556121
parent98061531d572e3ded13ec7f8a1a6085362eaa50e (diff)
downloadopie-f64f691f57b134a839b4913e9a2f524790916f51.zip
opie-f64f691f57b134a839b4913e9a2f524790916f51.tar.gz
opie-f64f691f57b134a839b4913e9a2f524790916f51.tar.bz2
fix bogus NOP as pointed out by zecke
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opieui/olistview.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/libopie2/opieui/olistview.cpp b/libopie2/opieui/olistview.cpp
index 0b3bdea..b90c786 100644
--- a/libopie2/opieui/olistview.cpp
+++ b/libopie2/opieui/olistview.cpp
@@ -1,764 +1,764 @@
1/* 1/*
2                 This file is part of the Opie Project 2                 This file is part of the Opie Project
3 =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de> 3 =. (C) 2003-2004 Michael 'Mickey' Lauer <mickey@Vanille.de>
4 .=l. 4 .=l.
5           .>+-= 5           .>+-=
6 _;:,     .>    :=|. This program is free software; you can 6 _;:,     .>    :=|. This program is free software; you can
7.> <`_,   >  .   <= redistribute it and/or modify it under 7.> <`_,   >  .   <= redistribute it and/or modify it under
8:`=1 )Y*s>-.--   : the terms of the GNU Library General Public 8:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
9.="- .-=="i,     .._ License as published by the Free Software 9.="- .-=="i,     .._ License as published by the Free Software
10 - .   .-<_>     .<> Foundation; either version 2 of the License, 10 - .   .-<_>     .<> Foundation; either version 2 of the License,
11     ._= =}       : or (at your option) any later version. 11     ._= =}       : or (at your option) any later version.
12    .%`+i>       _;_. 12    .%`+i>       _;_.
13    .i_,=:_.      -<s. This program is distributed in the hope that 13    .i_,=:_.      -<s. This program is distributed in the hope that
14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 14     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
15    : ..    .:,     . . . without even the implied warranty of 15    : ..    .:,     . . . without even the implied warranty of
16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 16    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU 17  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
18..}^=.=       =       ; Library General Public License for more 18..}^=.=       =       ; Library General Public License for more
19++=   -.     .`     .: details. 19++=   -.     .`     .: details.
20 :     =  ...= . :.=- 20 :     =  ...= . :.=-
21 -.   .:....=;==+<; You should have received a copy of the GNU 21 -.   .:....=;==+<; You should have received a copy of the GNU
22  -_. . .   )=.  = Library General Public License along with 22  -_. . .   )=.  = Library General Public License along with
23    --        :-=` this library; see the file COPYING.LIB. 23    --        :-=` this library; see the file COPYING.LIB.
24 If not, write to the Free Software Foundation, 24 If not, write to the Free Software Foundation,
25 Inc., 59 Temple Place - Suite 330, 25 Inc., 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA. 26 Boston, MA 02111-1307, USA.
27 27
28*/ 28*/
29 29
30/* QT */ 30/* QT */
31 31
32#include <qpixmap.h> 32#include <qpixmap.h>
33 33
34/* OPIE */ 34/* OPIE */
35 35
36#include <opie2/odebug.h> 36#include <opie2/odebug.h>
37#include <opie2/olistview.h> 37#include <opie2/olistview.h>
38 38
39using namespace Opie::Core; 39using namespace Opie::Core;
40 40
41 41
42namespace Opie { 42namespace Opie {
43namespace Ui { 43namespace Ui {
44/*====================================================================================== 44/*======================================================================================
45 * OListView 45 * OListView
46 *======================================================================================*/ 46 *======================================================================================*/
47 47
48OListView::OListView( QWidget *parent, const char *name, WFlags fl ) 48OListView::OListView( QWidget *parent, const char *name, WFlags fl )
49 :QListView( parent, name, fl ) 49 :QListView( parent, name, fl )
50{ 50{
51 //FIXME: get from global settings and calculate ==> see oglobalsettings.* 51 //FIXME: get from global settings and calculate ==> see oglobalsettings.*
52 52
53 m_alternateBackground = QColor( 238, 246, 255 ); 53 m_alternateBackground = QColor( 238, 246, 255 );
54 m_columnSeparator = QPen( QColor( 150, 160, 170 ), 0, DotLine ); 54 m_columnSeparator = QPen( QColor( 150, 160, 170 ), 0, DotLine );
55 m_fullWidth = true; 55 m_fullWidth = true;
56 connect( this, SIGNAL(expanded(QListViewItem*)), SLOT(expand(QListViewItem*))); 56 connect( this, SIGNAL(expanded(QListViewItem*)), SLOT(expand(QListViewItem*)));
57} 57}
58 58
59OListView::~OListView() 59OListView::~OListView()
60{ 60{
61} 61}
62 62
63void OListView::setFullWidth( bool fullWidth ) 63void OListView::setFullWidth( bool fullWidth )
64{ 64{
65 m_fullWidth = m_fullWidth; 65 m_fullWidth = fullWidth;
66 #if QT_VERSION > 290 66 #if QT_VERSION > 290
67 header()->setStretchEnabled( fullWidth, columns()-1 ); 67 header()->setStretchEnabled( fullWidth, columns()-1 );
68 #endif 68 #endif
69} 69}
70 70
71bool OListView::fullWidth() const 71bool OListView::fullWidth() const
72{ 72{
73 return m_fullWidth; 73 return m_fullWidth;
74} 74}
75 75
76int OListView::addColumn( const QString& label, int width ) 76int OListView::addColumn( const QString& label, int width )
77{ 77{
78 int result = QListView::addColumn( label, width ); 78 int result = QListView::addColumn( label, width );
79 #if QT_VERSION > 290 79 #if QT_VERSION > 290
80 if (m_fullWidth) { 80 if (m_fullWidth) {
81 header()->setStretchEnabled( false, columns()-2 ); 81 header()->setStretchEnabled( false, columns()-2 );
82 header()->setStretchEnabled( true, columns()-1 ); 82 header()->setStretchEnabled( true, columns()-1 );
83 } 83 }
84 #endif 84 #endif
85 return result; 85 return result;
86} 86}
87 87
88int OListView::addColumn( const QIconSet& iconset, const QString& label, int width ) 88int OListView::addColumn( const QIconSet& iconset, const QString& label, int width )
89{ 89{
90 int result = QListView::addColumn( iconset, label, width ); 90 int result = QListView::addColumn( iconset, label, width );
91 #if QT_VERSION > 290 91 #if QT_VERSION > 290
92 if (m_fullWidth) { 92 if (m_fullWidth) {
93 header()->setStretchEnabled( false, columns()-2 ); 93 header()->setStretchEnabled( false, columns()-2 );
94 header()->setStretchEnabled( true, columns()-1 ); 94 header()->setStretchEnabled( true, columns()-1 );
95 } 95 }
96 #endif 96 #endif
97 return result; 97 return result;
98} 98}
99 99
100void OListView::removeColumn( int index ) 100void OListView::removeColumn( int index )
101{ 101{
102 QListView::removeColumn(index); 102 QListView::removeColumn(index);
103 #if QT_VERSION > 290 103 #if QT_VERSION > 290
104 if ( m_fullWidth && index == columns() ) 104 if ( m_fullWidth && index == columns() )
105 { 105 {
106 header()->setStretchEnabled( true, columns()-1 ); 106 header()->setStretchEnabled( true, columns()-1 );
107 } 107 }
108 #endif 108 #endif
109} 109}
110 110
111const QColor& OListView::alternateBackground() const 111const QColor& OListView::alternateBackground() const
112{ 112{
113 return m_alternateBackground; 113 return m_alternateBackground;
114} 114}
115 115
116void OListView::setAlternateBackground( const QColor &c ) 116void OListView::setAlternateBackground( const QColor &c )
117{ 117{
118 m_alternateBackground = c; 118 m_alternateBackground = c;
119 repaint(); 119 repaint();
120} 120}
121 121
122const QPen& OListView::columnSeparator() const 122const QPen& OListView::columnSeparator() const
123{ 123{
124 return m_columnSeparator; 124 return m_columnSeparator;
125} 125}
126 126
127void OListView::setColumnSeparator( const QPen& p ) 127void OListView::setColumnSeparator( const QPen& p )
128{ 128{
129 m_columnSeparator = p; 129 m_columnSeparator = p;
130 repaint(); 130 repaint();
131} 131}
132 132
133void OListView::expand(QListViewItem *item) 133void OListView::expand(QListViewItem *item)
134{ 134{
135 ((OListViewItem*)item)->expand(); 135 ((OListViewItem*)item)->expand();
136} 136}
137 137
138OListViewItem* OListView::childFactory() 138OListViewItem* OListView::childFactory()
139{ 139{
140 return new OListViewItem( this ); 140 return new OListViewItem( this );
141} 141}
142 142
143#ifndef QT_NO_DATASTREAM 143#ifndef QT_NO_DATASTREAM
144void OListView::serializeTo( QDataStream& s ) const 144void OListView::serializeTo( QDataStream& s ) const
145{ 145{
146 #warning Caution... the binary format is still under construction... 146 #warning Caution... the binary format is still under construction...
147 odebug << "storing OListView..." << oendl; 147 odebug << "storing OListView..." << oendl;
148 148
149 // store number of columns and the labels 149 // store number of columns and the labels
150 s << columns(); 150 s << columns();
151 for ( int i = 0; i < columns(); ++i ) 151 for ( int i = 0; i < columns(); ++i )
152 s << columnText( i ); 152 s << columnText( i );
153 153
154 // calculate the number of top-level items to serialize 154 // calculate the number of top-level items to serialize
155 int items = 0; 155 int items = 0;
156 QListViewItem* item = firstChild(); 156 QListViewItem* item = firstChild();
157 while ( item ) 157 while ( item )
158 { 158 {
159 item = item->nextSibling(); 159 item = item->nextSibling();
160 items++; 160 items++;
161 } 161 }
162 162
163 // store number of items and the items itself 163 // store number of items and the items itself
164 s << items; 164 s << items;
165 item = firstChild(); 165 item = firstChild();
166 for ( int i = 0; i < items; ++i ) 166 for ( int i = 0; i < items; ++i )
167 { 167 {
168 s << *static_cast<OListViewItem*>( item ); 168 s << *static_cast<OListViewItem*>( item );
169 item = item->nextSibling(); 169 item = item->nextSibling();
170 } 170 }
171 171
172 odebug << "OListview stored." << oendl; 172 odebug << "OListview stored." << oendl;
173} 173}
174 174
175void OListView::serializeFrom( QDataStream& s ) 175void OListView::serializeFrom( QDataStream& s )
176{ 176{
177 #warning Caution... the binary format is still under construction... 177 #warning Caution... the binary format is still under construction...
178 odebug << "loading OListView..." << oendl; 178 odebug << "loading OListView..." << oendl;
179 179
180 int cols; 180 int cols;
181 s >> cols; 181 s >> cols;
182 odebug << "read number of columns = " << cols << oendl; 182 odebug << "read number of columns = " << cols << oendl;
183 183
184 while ( columns() < cols ) addColumn( QString::null ); 184 while ( columns() < cols ) addColumn( QString::null );
185 185
186 for ( int i = 0; i < cols; ++i ) 186 for ( int i = 0; i < cols; ++i )
187 { 187 {
188 QString coltext; 188 QString coltext;
189 s >> coltext; 189 s >> coltext;
190 odebug << "read text '" << coltext << "' for column " << i << "" << oendl; 190 odebug << "read text '" << coltext << "' for column " << i << "" << oendl;
191 setColumnText( i, coltext ); 191 setColumnText( i, coltext );
192 } 192 }
193 193
194 int items; 194 int items;
195 s >> items; 195 s >> items;
196 odebug << "read number of items = " << items << oendl; 196 odebug << "read number of items = " << items << oendl;
197 197
198 for ( int i = 0; i < items; ++i ) 198 for ( int i = 0; i < items; ++i )
199 { 199 {
200 OListViewItem* item = childFactory(); 200 OListViewItem* item = childFactory();
201 s >> *item; 201 s >> *item;
202 } 202 }
203 203
204 odebug << "OListView loaded." << oendl; 204 odebug << "OListView loaded." << oendl;
205 205
206} 206}
207 207
208 208
209void OListView::expand() 209void OListView::expand()
210{ 210{
211 odebug << "OListView::expand" << oendl; 211 odebug << "OListView::expand" << oendl;
212 212
213 QListViewItemIterator it( this ); 213 QListViewItemIterator it( this );
214 while ( it.current() ) { 214 while ( it.current() ) {
215 it.current()->setOpen( true ); 215 it.current()->setOpen( true );
216 ++it; 216 ++it;
217 } 217 }
218} 218}
219 219
220 220
221void OListView::collapse() 221void OListView::collapse()
222{ 222{
223 odebug << "OListView::collapse" << oendl; 223 odebug << "OListView::collapse" << oendl;
224 QListViewItemIterator it( this ); 224 QListViewItemIterator it( this );
225 while ( it.current() ) { 225 while ( it.current() ) {
226 it.current()->setOpen( false ); 226 it.current()->setOpen( false );
227 ++it; 227 ++it;
228 } 228 }
229} 229}
230 230
231 231
232QDataStream& operator<<( QDataStream& s, const OListView& lv ) 232QDataStream& operator<<( QDataStream& s, const OListView& lv )
233{ 233{
234 lv.serializeTo( s ); 234 lv.serializeTo( s );
235} 235}
236 236
237QDataStream& operator>>( QDataStream& s, OListView& lv ) 237QDataStream& operator>>( QDataStream& s, OListView& lv )
238{ 238{
239 lv.serializeFrom( s ); 239 lv.serializeFrom( s );
240} 240}
241#endif // QT_NO_DATASTREAM 241#endif // QT_NO_DATASTREAM
242 242
243/*====================================================================================== 243/*======================================================================================
244 * OListViewItem 244 * OListViewItem
245 *======================================================================================*/ 245 *======================================================================================*/
246 246
247OListViewItem::OListViewItem(QListView *parent) 247OListViewItem::OListViewItem(QListView *parent)
248 : QListViewItem(parent) 248 : QListViewItem(parent)
249{ 249{
250 init(); 250 init();
251} 251}
252 252
253 253
254OListViewItem::OListViewItem(QListViewItem *parent) 254OListViewItem::OListViewItem(QListViewItem *parent)
255 : QListViewItem(parent) 255 : QListViewItem(parent)
256{ 256{
257 init(); 257 init();
258} 258}
259 259
260 260
261OListViewItem::OListViewItem(QListView *parent, QListViewItem *after) 261OListViewItem::OListViewItem(QListView *parent, QListViewItem *after)
262 : QListViewItem(parent, after) 262 : QListViewItem(parent, after)
263{ 263{
264 init(); 264 init();
265} 265}
266 266
267 267
268OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after) 268OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after)
269 : QListViewItem(parent, after) 269 : QListViewItem(parent, after)
270{ 270{
271 init(); 271 init();
272} 272}
273 273
274 274
275OListViewItem::OListViewItem(QListView *parent, 275OListViewItem::OListViewItem(QListView *parent,
276 QString label1, QString label2, QString label3, QString label4, 276 QString label1, QString label2, QString label3, QString label4,
277 QString label5, QString label6, QString label7, QString label8) 277 QString label5, QString label6, QString label7, QString label8)
278 : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) 278 : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8)
279{ 279{
280 init(); 280 init();
281} 281}
282 282
283 283
284OListViewItem::OListViewItem(QListViewItem *parent, 284OListViewItem::OListViewItem(QListViewItem *parent,
285 QString label1, QString label2, QString label3, QString label4, 285 QString label1, QString label2, QString label3, QString label4,
286 QString label5, QString label6, QString label7, QString label8) 286 QString label5, QString label6, QString label7, QString label8)
287 : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8) 287 : QListViewItem(parent, label1, label2, label3, label4, label5, label6, label7, label8)
288{ 288{
289 init(); 289 init();
290} 290}
291 291
292 292
293OListViewItem::OListViewItem(QListView *parent, QListViewItem *after, 293OListViewItem::OListViewItem(QListView *parent, QListViewItem *after,
294 QString label1, QString label2, QString label3, QString label4, 294 QString label1, QString label2, QString label3, QString label4,
295 QString label5, QString label6, QString label7, QString label8) 295 QString label5, QString label6, QString label7, QString label8)
296 : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) 296 : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8)
297{ 297{
298 init(); 298 init();
299} 299}
300 300
301 301
302OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after, 302OListViewItem::OListViewItem(QListViewItem *parent, QListViewItem *after,
303 QString label1, QString label2, QString label3, QString label4, 303 QString label1, QString label2, QString label3, QString label4,
304 QString label5, QString label6, QString label7, QString label8) 304 QString label5, QString label6, QString label7, QString label8)
305 : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8) 305 : QListViewItem(parent, after, label1, label2, label3, label4, label5, label6, label7, label8)
306{ 306{
307 init(); 307 init();
308} 308}
309 309
310 310
311OListViewItem::~OListViewItem() 311OListViewItem::~OListViewItem()
312{ 312{
313} 313}
314 314
315 315
316void OListViewItem::init() 316void OListViewItem::init()
317{ 317{
318 m_known = false; 318 m_known = false;
319} 319}
320 320
321 321
322const QColor &OListViewItem::backgroundColor() 322const QColor &OListViewItem::backgroundColor()
323{ 323{
324 return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : 324 return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() :
325 listView()->viewport()->colorGroup().base(); 325 listView()->viewport()->colorGroup().base();
326} 326}
327 327
328 328
329bool OListViewItem::isAlternate() 329bool OListViewItem::isAlternate()
330{ 330{
331 OListView *lv = static_cast<OListView*>( listView() ); 331 OListView *lv = static_cast<OListView*>( listView() );
332 332
333 // check if the item above is an OListViewItem 333 // check if the item above is an OListViewItem
334 OListViewItem *above = static_cast<OListViewItem*>( itemAbove() ); 334 OListViewItem *above = static_cast<OListViewItem*>( itemAbove() );
335 /*if (! itemAbove()->inherits( "OListViewItem" )) return false;*/ 335 /*if (! itemAbove()->inherits( "OListViewItem" )) return false;*/
336 336
337 // check if we have a valid alternate background color 337 // check if we have a valid alternate background color
338 if (!(lv && lv->alternateBackground().isValid())) return false; 338 if (!(lv && lv->alternateBackground().isValid())) return false;
339 339
340 m_known = above ? above->m_known : true; 340 m_known = above ? above->m_known : true;
341 if (m_known) 341 if (m_known)
342 { 342 {
343 m_odd = above ? !above->m_odd : false; 343 m_odd = above ? !above->m_odd : false;
344 } 344 }
345 else 345 else
346 { 346 {
347 OListViewItem *item; 347 OListViewItem *item;
348 bool previous = true; 348 bool previous = true;
349 if (parent()) 349 if (parent())
350 { 350 {
351 item = static_cast<OListViewItem *>(parent()); 351 item = static_cast<OListViewItem *>(parent());
352 if ( item /*&& item->inherits( "OListViewItem" )*/ ) previous = item->m_odd; 352 if ( item /*&& item->inherits( "OListViewItem" )*/ ) previous = item->m_odd;
353 item = static_cast<OListViewItem *>(parent()->firstChild()); 353 item = static_cast<OListViewItem *>(parent()->firstChild());
354 /* if ( !item.inherits( "OListViewItem" ) item = 0; */ 354 /* if ( !item.inherits( "OListViewItem" ) item = 0; */
355 } 355 }
356 else 356 else
357 { 357 {
358 item = static_cast<OListViewItem *>(lv->firstChild()); 358 item = static_cast<OListViewItem *>(lv->firstChild());
359 } 359 }
360 360
361 while(item) 361 while(item)
362 { 362 {
363 item->m_odd = previous = !previous; 363 item->m_odd = previous = !previous;
364 item->m_known = true; 364 item->m_known = true;
365 item = static_cast<OListViewItem *>(item->nextSibling()); 365 item = static_cast<OListViewItem *>(item->nextSibling());
366 /* if (!item.inherits( "OListViewItem" ) ) break; */ 366 /* if (!item.inherits( "OListViewItem" ) ) break; */
367 } 367 }
368 } 368 }
369 return m_odd; 369 return m_odd;
370} 370}
371 371
372 372
373void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) 373void OListViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment)
374{ 374{
375 QColorGroup _cg = cg; 375 QColorGroup _cg = cg;
376 const QPixmap *pm = listView()->viewport()->backgroundPixmap(); 376 const QPixmap *pm = listView()->viewport()->backgroundPixmap();
377 if (pm && !pm->isNull()) 377 if (pm && !pm->isNull())
378 { 378 {
379 _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) ); 379 _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) );
380 p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); 380 p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() );
381 } 381 }
382 else if ( isAlternate() ) 382 else if ( isAlternate() )
383 { 383 {
384 _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() ); 384 _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() );
385 } 385 }
386 QListViewItem::paintCell( p, _cg, column, width, alignment ); 386 QListViewItem::paintCell( p, _cg, column, width, alignment );
387 387
388 //FIXME: Use styling here! 388 //FIXME: Use styling here!
389 389
390 const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator(); 390 const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator();
391 p->setPen( pen ); 391 p->setPen( pen );
392 p->drawLine( width-1, 0, width-1, height() ); 392 p->drawLine( width-1, 0, width-1, height() );
393} 393}
394 394
395 395
396OListViewItem* OListViewItem::childFactory() 396OListViewItem* OListViewItem::childFactory()
397{ 397{
398 return new OListViewItem( this ); 398 return new OListViewItem( this );
399} 399}
400 400
401 401
402#ifndef QT_NO_DATASTREAM 402#ifndef QT_NO_DATASTREAM
403void OListViewItem::serializeTo( QDataStream& s ) const 403void OListViewItem::serializeTo( QDataStream& s ) const
404{ 404{
405 #warning Caution... the binary format is still under construction... 405 #warning Caution... the binary format is still under construction...
406 odebug << "storing OListViewItem..." << oendl; 406 odebug << "storing OListViewItem..." << oendl;
407 407
408 // store item text 408 // store item text
409 for ( int i = 0; i < listView()->columns(); ++i ) 409 for ( int i = 0; i < listView()->columns(); ++i )
410 { 410 {
411 s << text( i ); 411 s << text( i );
412 } 412 }
413 413
414 // calculate the number of children to serialize 414 // calculate the number of children to serialize
415 int items = 0; 415 int items = 0;
416 QListViewItem* item = firstChild(); 416 QListViewItem* item = firstChild();
417 while ( item ) 417 while ( item )
418 { 418 {
419 item = item->nextSibling(); 419 item = item->nextSibling();
420 items++; 420 items++;
421 } 421 }
422 422
423 // store number of items and the items itself 423 // store number of items and the items itself
424 s << items; 424 s << items;
425 item = firstChild(); 425 item = firstChild();
426 for ( int i = 0; i < items; ++i ) 426 for ( int i = 0; i < items; ++i )
427 { 427 {
428 s << *static_cast<OListViewItem*>( item ); 428 s << *static_cast<OListViewItem*>( item );
429 item = item->nextSibling(); 429 item = item->nextSibling();
430 } 430 }
431 431
432 odebug << "OListviewItem stored." << oendl; 432 odebug << "OListviewItem stored." << oendl;
433} 433}
434 434
435 435
436void OListViewItem::serializeFrom( QDataStream& s ) 436void OListViewItem::serializeFrom( QDataStream& s )
437{ 437{
438 #warning Caution... the binary format is still under construction... 438 #warning Caution... the binary format is still under construction...
439 odebug << "loading OListViewItem..." << oendl; 439 odebug << "loading OListViewItem..." << oendl;
440 440
441 for ( int i = 0; i < listView()->columns(); ++i ) 441 for ( int i = 0; i < listView()->columns(); ++i )
442 { 442 {
443 QString coltext; 443 QString coltext;
444 s >> coltext; 444 s >> coltext;
445 odebug << "read text '" << coltext << "' for column " << i << "" << oendl; 445 odebug << "read text '" << coltext << "' for column " << i << "" << oendl;
446 setText( i, coltext ); 446 setText( i, coltext );
447 } 447 }
448 448
449 int items; 449 int items;
450 s >> items; 450 s >> items;
451 odebug << "read number of items = " << items << "" << oendl; 451 odebug << "read number of items = " << items << "" << oendl;
452 452
453 for ( int i = 0; i < items; ++i ) 453 for ( int i = 0; i < items; ++i )
454 { 454 {
455 OListViewItem* item = childFactory(); 455 OListViewItem* item = childFactory();
456 s >> (*item); 456 s >> (*item);
457 } 457 }
458 458
459 odebug << "OListViewItem loaded." << oendl; 459 odebug << "OListViewItem loaded." << oendl;
460} 460}
461 461
462 462
463QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi ) 463QDataStream& operator<<( QDataStream& s, const OListViewItem& lvi )
464{ 464{
465 lvi.serializeTo( s ); 465 lvi.serializeTo( s );
466} 466}
467 467
468 468
469QDataStream& operator>>( QDataStream& s, OListViewItem& lvi ) 469QDataStream& operator>>( QDataStream& s, OListViewItem& lvi )
470{ 470{
471 lvi.serializeFrom( s ); 471 lvi.serializeFrom( s );
472} 472}
473#endif // QT_NO_DATASTREAM 473#endif // QT_NO_DATASTREAM
474 474
475 475
476/*====================================================================================== 476/*======================================================================================
477 * OCheckListItem 477 * OCheckListItem
478 *======================================================================================*/ 478 *======================================================================================*/
479 479
480OCheckListItem::OCheckListItem( QCheckListItem* parent, const QString& text, Type t ) 480OCheckListItem::OCheckListItem( QCheckListItem* parent, const QString& text, Type t )
481 :QCheckListItem( parent, text, t ) 481 :QCheckListItem( parent, text, t )
482{ 482{
483 init(); 483 init();
484} 484}
485 485
486 486
487OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, Type t) 487OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, Type t)
488 :QCheckListItem( parent, text, t ) 488 :QCheckListItem( parent, text, t )
489{ 489{
490 init(); 490 init();
491} 491}
492 492
493 493
494OCheckListItem::OCheckListItem( QListView* parent, const QString& text, Type t ) 494OCheckListItem::OCheckListItem( QListView* parent, const QString& text, Type t )
495 :QCheckListItem( parent, text, t ) 495 :QCheckListItem( parent, text, t )
496{ 496{
497 init(); 497 init();
498} 498}
499 499
500 500
501OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, const QPixmap& p ) 501OCheckListItem::OCheckListItem( QListViewItem* parent, const QString& text, const QPixmap& p )
502 :QCheckListItem( parent, text, p ) 502 :QCheckListItem( parent, text, p )
503{ 503{
504 init(); 504 init();
505} 505}
506 506
507 507
508OCheckListItem::OCheckListItem( QListView* parent, const QString& text, const QPixmap& p ) 508OCheckListItem::OCheckListItem( QListView* parent, const QString& text, const QPixmap& p )
509 :QCheckListItem( parent, text, p ) 509 :QCheckListItem( parent, text, p )
510{ 510{
511 init(); 511 init();
512} 512}
513 513
514 514
515OCheckListItem::~OCheckListItem() 515OCheckListItem::~OCheckListItem()
516{ 516{
517} 517}
518 518
519void OCheckListItem::init() 519void OCheckListItem::init()
520{ 520{
521 m_known = false; 521 m_known = false;
522} 522}
523 523
524 524
525const QColor &OCheckListItem::backgroundColor() 525const QColor &OCheckListItem::backgroundColor()
526{ 526{
527 return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() : 527 return isAlternate() ? static_cast<OListView*>(listView())->alternateBackground() :
528 listView()->viewport()->colorGroup().base(); 528 listView()->viewport()->colorGroup().base();
529} 529}
530 530
531 531
532bool OCheckListItem::isAlternate() 532bool OCheckListItem::isAlternate()
533{ 533{
534 OListView *lv = static_cast<OListView*>( listView() ); 534 OListView *lv = static_cast<OListView*>( listView() );
535 535
536 // check if the item above is an OCheckListItem 536 // check if the item above is an OCheckListItem
537 OCheckListItem *above = static_cast<OCheckListItem*>( itemAbove() ); 537 OCheckListItem *above = static_cast<OCheckListItem*>( itemAbove() );
538 /*if (! itemAbove()->inherits( "OCheckListItem" )) return false;*/ 538 /*if (! itemAbove()->inherits( "OCheckListItem" )) return false;*/
539 539
540 // check if we have a valid alternate background color 540 // check if we have a valid alternate background color
541 if (!(lv && lv->alternateBackground().isValid())) return false; 541 if (!(lv && lv->alternateBackground().isValid())) return false;
542 542
543 m_known = above ? above->m_known : true; 543 m_known = above ? above->m_known : true;
544 if (m_known) 544 if (m_known)
545 { 545 {
546 m_odd = above ? !above->m_odd : false; 546 m_odd = above ? !above->m_odd : false;
547 } 547 }
548 else 548 else
549 { 549 {
550 OCheckListItem *item; 550 OCheckListItem *item;
551 bool previous = true; 551 bool previous = true;
552 if (parent()) 552 if (parent())
553 { 553 {
554 item = static_cast<OCheckListItem *>(parent()); 554 item = static_cast<OCheckListItem *>(parent());
555 if ( item /*&& item->inherits( "OCheckListItem" )*/ ) previous = item->m_odd; 555 if ( item /*&& item->inherits( "OCheckListItem" )*/ ) previous = item->m_odd;
556 item = static_cast<OCheckListItem *>(parent()->firstChild()); 556 item = static_cast<OCheckListItem *>(parent()->firstChild());
557 /* if ( !item.inherits( "OCheckListItem" ) item = 0; */ 557 /* if ( !item.inherits( "OCheckListItem" ) item = 0; */
558 } 558 }
559 else 559 else
560 { 560 {
561 item = static_cast<OCheckListItem *>(lv->firstChild()); 561 item = static_cast<OCheckListItem *>(lv->firstChild());
562 } 562 }
563 563
564 while(item) 564 while(item)
565 { 565 {
566 item->m_odd = previous = !previous; 566 item->m_odd = previous = !previous;
567 item->m_known = true; 567 item->m_known = true;
568 item = static_cast<OCheckListItem *>(item->nextSibling()); 568 item = static_cast<OCheckListItem *>(item->nextSibling());
569 /* if (!item.inherits( "OCheckListItem" ) ) break; */ 569 /* if (!item.inherits( "OCheckListItem" ) ) break; */
570 } 570 }
571 } 571 }
572 return m_odd; 572 return m_odd;
573} 573}
574 574
575 575
576void OCheckListItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) 576void OCheckListItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment)
577{ 577{
578 QColorGroup _cg = cg; 578 QColorGroup _cg = cg;
579 const QPixmap *pm = listView()->viewport()->backgroundPixmap(); 579 const QPixmap *pm = listView()->viewport()->backgroundPixmap();
580 if (pm && !pm->isNull()) 580 if (pm && !pm->isNull())
581 { 581 {
582 _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) ); 582 _cg.setBrush( QColorGroup::Base, QBrush(backgroundColor(), *pm) );
583 p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() ); 583 p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() );
584 } 584 }
585 else if ( isAlternate() ) 585 else if ( isAlternate() )
586 { 586 {
587 _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() ); 587 _cg.setColor( QColorGroup::Base, static_cast<OListView*>( listView() )->alternateBackground() );
588 } 588 }
589 QCheckListItem::paintCell( p, _cg, column, width, alignment ); 589 QCheckListItem::paintCell( p, _cg, column, width, alignment );
590 590
591 //FIXME: Use styling here! 591 //FIXME: Use styling here!
592 592
593 const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator(); 593 const QPen& pen = static_cast<OListView*>( listView() )->columnSeparator();
594 p->setPen( pen ); 594 p->setPen( pen );
595 p->drawLine( width-1, 0, width-1, height() ); 595 p->drawLine( width-1, 0, width-1, height() );
596} 596}
597 597
598 598
599/*====================================================================================== 599/*======================================================================================
600 * ONamedListView 600 * ONamedListView
601 *======================================================================================*/ 601 *======================================================================================*/
602 602
603ONamedListView::ONamedListView( QWidget *parent, const char *name ) 603ONamedListView::ONamedListView( QWidget *parent, const char *name )
604 :OListView( parent, name ) 604 :OListView( parent, name )
605{ 605{
606} 606}
607 607
608 608
609ONamedListView::~ONamedListView() 609ONamedListView::~ONamedListView()
610{ 610{
611} 611}
612 612
613 613
614void ONamedListView::addColumns( const QStringList& columns ) 614void ONamedListView::addColumns( const QStringList& columns )
615{ 615{
616 for ( QStringList::ConstIterator it = columns.begin(); it != columns.end(); ++it ) 616 for ( QStringList::ConstIterator it = columns.begin(); it != columns.end(); ++it )
617 { 617 {
618 odebug << "adding column " << *it << "" << oendl; 618 odebug << "adding column " << *it << "" << oendl;
619 addColumn( *it ); 619 addColumn( *it );
620 } 620 }
621} 621}
622 622
623 623
624int ONamedListView::findColumn( const QString& text ) const 624int ONamedListView::findColumn( const QString& text ) const
625{ 625{
626 //FIXME: If used excessively, this will slow down performance of updates 626 //FIXME: If used excessively, this will slow down performance of updates
627 //FIXME: because of the linear search over all column texts. 627 //FIXME: because of the linear search over all column texts.
628 //FIXME: I will optimize later by using a hash map. 628 //FIXME: I will optimize later by using a hash map.
629 for ( int i = 0; i < columns(); ++i ) 629 for ( int i = 0; i < columns(); ++i )
630 if ( columnText( i ) == text ) 630 if ( columnText( i ) == text )
631 return i; 631 return i;
632 return -1; 632 return -1;
633} 633}
634 634
635 635
636ONamedListViewItem* ONamedListView::find( int column, const QString& text, int recurse ) const 636ONamedListViewItem* ONamedListView::find( int column, const QString& text, int recurse ) const
637{ 637{
638 return find( (ONamedListViewItem*) firstChild(), column, text, recurse ); 638 return find( (ONamedListViewItem*) firstChild(), column, text, recurse );
639} 639}
640 640
641 641
642ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, int column, const QString& text, int recurse ) const 642ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, int column, const QString& text, int recurse ) const
643{ 643{
644 ONamedListViewItem* result; 644 ONamedListViewItem* result;
645 while ( item && item->text( column ) != text ) 645 while ( item && item->text( column ) != text )
646 { 646 {
647 odebug << "checked " << item->text( column ) << "" << oendl; 647 odebug << "checked " << item->text( column ) << "" << oendl;
648 648
649 if ( recurse < 0 || recurse > 0 ) 649 if ( recurse < 0 || recurse > 0 )
650 { 650 {
651 odebug << "recursion is " << recurse << " - recursing into..." << oendl; 651 odebug << "recursion is " << recurse << " - recursing into..." << oendl;
652 result = find( (ONamedListViewItem*) item->firstChild(), column, text, recurse-1 ); 652 result = find( (ONamedListViewItem*) item->firstChild(), column, text, recurse-1 );
653 if ( result ) return result; 653 if ( result ) return result;
654 } 654 }
655 655
656 656
657 item = (ONamedListViewItem*) item->itemBelow(); 657 item = (ONamedListViewItem*) item->itemBelow();
658 } 658 }
659 if ( item && item->text( column ) == text ) 659 if ( item && item->text( column ) == text )
660 return item; 660 return item;
661 else 661 else
662 return 0; 662 return 0;
663} 663}
664 664
665 665
666ONamedListViewItem* ONamedListView::find( const QString& column, const QString& text, int recurse ) const 666ONamedListViewItem* ONamedListView::find( const QString& column, const QString& text, int recurse ) const
667{ 667{
668 int col = findColumn( column ); 668 int col = findColumn( column );
669 if ( col != -1 ) 669 if ( col != -1 )
670 return find( (ONamedListViewItem*) firstChild(), col, text, recurse ); 670 return find( (ONamedListViewItem*) firstChild(), col, text, recurse );
671 else 671 else
672 return 0; 672 return 0;
673} 673}
674 674
675 675
676ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, const QString& column, const QString& text, int recurse ) const 676ONamedListViewItem* ONamedListView::find( ONamedListViewItem* item, const QString& column, const QString& text, int recurse ) const
677{ 677{
678 int col = findColumn( column ); 678 int col = findColumn( column );
679 if ( col != -1 ) 679 if ( col != -1 )
680 return find( item, col, text, recurse ); 680 return find( item, col, text, recurse );
681 else 681 else
682 return 0; 682 return 0;
683} 683}
684 684
685 685
686/*====================================================================================== 686/*======================================================================================
687 * ONamedListViewItem 687 * ONamedListViewItem
688 *======================================================================================*/ 688 *======================================================================================*/
689 689
690ONamedListViewItem::ONamedListViewItem( QListView* parent, const QStringList& texts ) 690ONamedListViewItem::ONamedListViewItem( QListView* parent, const QStringList& texts )
691 :OListViewItem( parent ) 691 :OListViewItem( parent )
692{ 692{
693 setText( texts ); 693 setText( texts );
694} 694}
695 695
696 696
697ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, const QStringList& texts ) 697ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, const QStringList& texts )
698 :OListViewItem( parent ) 698 :OListViewItem( parent )
699{ 699{
700 setText( texts ); 700 setText( texts );
701} 701}
702 702
703 703
704ONamedListViewItem::ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts ) 704ONamedListViewItem::ONamedListViewItem( QListView* parent, QListViewItem* after, const QStringList& texts )
705 :OListViewItem( parent, after ) 705 :OListViewItem( parent, after )
706{ 706{
707 setText( texts ); 707 setText( texts );
708} 708}
709 709
710 710
711ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts ) 711ONamedListViewItem::ONamedListViewItem( QListViewItem* parent, QListViewItem* after, const QStringList& texts )
712 :OListViewItem( parent, after ) 712 :OListViewItem( parent, after )
713{ 713{
714 setText( texts ); 714 setText( texts );
715} 715}
716 716
717 717
718ONamedListViewItem::~ONamedListViewItem() 718ONamedListViewItem::~ONamedListViewItem()
719{ 719{
720} 720}
721 721
722 722
723void ONamedListViewItem::setText( const QStringList& texts ) 723void ONamedListViewItem::setText( const QStringList& texts )
724{ 724{
725 int col = 0; 725 int col = 0;
726 for ( QStringList::ConstIterator it = texts.begin(); it != texts.end(); ++it ) 726 for ( QStringList::ConstIterator it = texts.begin(); it != texts.end(); ++it )
727 { 727 {
728 odebug << "setting column " << col << " = text " << *it << "" << oendl; 728 odebug << "setting column " << col << " = text " << *it << "" << oendl;
729 OListViewItem::setText( col++, *it ); 729 OListViewItem::setText( col++, *it );
730 } 730 }
731 731
732} 732}
733 733
734 734
735void ONamedListViewItem::setText( const QString& column, const QString& text ) 735void ONamedListViewItem::setText( const QString& column, const QString& text )
736{ 736{
737 //FIXME: If used excessively, this will slow down performance of updates 737 //FIXME: If used excessively, this will slow down performance of updates
738 //FIXME: because of the linear search over all column texts. 738 //FIXME: because of the linear search over all column texts.
739 //FIXME: I will optimize later by using a hash map. 739 //FIXME: I will optimize later by using a hash map.
740 int col = ( (ONamedListView*) listView() )->findColumn( column ); 740 int col = ( (ONamedListView*) listView() )->findColumn( column );
741 if ( col != -1 ) 741 if ( col != -1 )
742 OListViewItem::setText( col, text ); 742 OListViewItem::setText( col, text );
743 else 743 else
744 owarn << "ONamedListViewItem::setText(): Warning! Columntext '" << column << "' not found." << oendl; 744 owarn << "ONamedListViewItem::setText(): Warning! Columntext '" << column << "' not found." << oendl;
745} 745}
746 746
747 747
748ONamedListViewItem* ONamedListViewItem::find( int column, const QString& text, int recurse ) const 748ONamedListViewItem* ONamedListViewItem::find( int column, const QString& text, int recurse ) const
749{ 749{
750 return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), column, text, recurse ); 750 return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), column, text, recurse );
751} 751}
752 752
753 753
754ONamedListViewItem* ONamedListViewItem::find( const QString& column, const QString& text, int recurse ) const 754ONamedListViewItem* ONamedListViewItem::find( const QString& column, const QString& text, int recurse ) const
755{ 755{
756 int col = ( (ONamedListView*) listView() )->findColumn( column ); 756 int col = ( (ONamedListView*) listView() )->findColumn( column );
757 if ( col != -1 ) 757 if ( col != -1 )
758 return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), col, text, recurse ); 758 return ( (ONamedListView*) listView() )->find( (ONamedListViewItem*) firstChild(), col, text, recurse );
759 else 759 else
760 return 0; 760 return 0;
761} 761}
762 762
763} 763}
764} 764}