summaryrefslogtreecommitdiff
authoreilers <eilers>2002-11-27 15:21:06 (UTC)
committer eilers <eilers>2002-11-27 15:21:06 (UTC)
commit4b20972da142bbdea42c682025ab5303c35a5a92 (patch) (unidiff)
tree934acaec747a495188a7d3c1e125ecc0776b68c6
parent4d7272423782dc2f9f7dbde36b848f55eb323c79 (diff)
downloadopie-4b20972da142bbdea42c682025ab5303c35a5a92.zip
opie-4b20972da142bbdea42c682025ab5303c35a5a92.tar.gz
opie-4b20972da142bbdea42c682025ab5303c35a5a92.tar.bz2
Extremely improved table update
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/abtable.cpp55
-rw-r--r--core/pim/addressbook/abtable.h3
-rw-r--r--core/pim/addressbook/abview.cpp72
-rw-r--r--core/pim/addressbook/abview.h3
-rw-r--r--core/pim/addressbook/addressbook.cpp46
5 files changed, 109 insertions, 70 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp
index e333b17..00335ae 100644
--- a/core/pim/addressbook/abtable.cpp
+++ b/core/pim/addressbook/abtable.cpp
@@ -94,247 +94,258 @@ QWidget *AbPickItem::createEditor() const
94 AbTable* t = static_cast<AbTable*>(table()); 94 AbTable* t = static_cast<AbTable*>(table());
95 QStringList c = t->choiceNames(); 95 QStringList c = t->choiceNames();
96 int cur = 0; 96 int cur = 0;
97 for (QStringList::ConstIterator it = c.begin(); it!=c.end(); ++it) { 97 for (QStringList::ConstIterator it = c.begin(); it!=c.end(); ++it) {
98 if ( *it == text() ) 98 if ( *it == text() )
99 cur = combo->count(); 99 cur = combo->count();
100 combo->insertItem(*it); 100 combo->insertItem(*it);
101 } 101 }
102 combo->setCurrentItem(cur); 102 combo->setCurrentItem(cur);
103 return combo; 103 return combo;
104} 104}
105 105
106void AbPickItem::setContentFromEditor( QWidget *w ) 106void AbPickItem::setContentFromEditor( QWidget *w )
107{ 107{
108 if ( w->inherits("QComboBox") ) 108 if ( w->inherits("QComboBox") )
109 setText( ( (QComboBox*)w )->currentText() ); 109 setText( ( (QComboBox*)w )->currentText() );
110 else 110 else
111 QTableItem::setContentFromEditor( w ); 111 QTableItem::setContentFromEditor( w );
112} 112}
113 113
114/*! 114/*!
115 \class AbTable abtable.h 115 \class AbTable abtable.h
116 116
117 \brief QTable based class for showing a list of entries 117 \brief QTable based class for showing a list of entries
118*/ 118*/
119 119
120AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name ) 120AbTable::AbTable( const QValueList<int> order, QWidget *parent, const char *name )
121 : QTable( parent, name ), 121 : QTable( parent, name ),
122 lastSortCol( -1 ), 122 lastSortCol( -1 ),
123 asc( TRUE ), 123 asc( TRUE ),
124 intFields( order ), 124 intFields( order ),
125 enablePainting( true ), 125 enablePainting( true ),
126 columnVisible( true ) 126 columnVisible( true ),
127 countNested( 0 )
127{ 128{
128 qWarning("C'tor start"); 129 qWarning("C'tor start");
129 130
130 setSelectionMode( NoSelection ); 131 setSelectionMode( NoSelection );
131 init(); 132 init();
132 setSorting( TRUE ); 133 setSorting( TRUE );
133 connect( this, SIGNAL(clicked(int,int,int,const QPoint &)), 134 connect( this, SIGNAL(clicked(int,int,int,const QPoint &)),
134 this, SLOT(itemClicked(int,int)) ); 135 this, SLOT(itemClicked(int,int)) );
135 136
136 contactList.clear(); 137 contactList.clear();
137 qWarning("C'tor end"); 138 qWarning("C'tor end");
138} 139}
139 140
140AbTable::~AbTable() 141AbTable::~AbTable()
141{ 142{
142} 143}
143 144
144void AbTable::init() 145void AbTable::init()
145{ 146{
146 // :SX showChar = '\0'; 147 // :SX showChar = '\0';
147 setNumRows( 0 ); 148 setNumRows( 0 );
148 setNumCols( 2 ); 149 setNumCols( 2 );
149 150
150 horizontalHeader()->setLabel( 0, tr( "Full Name" )); 151 horizontalHeader()->setLabel( 0, tr( "Full Name" ));
151 horizontalHeader()->setLabel( 1, tr( "Contact" )); 152 horizontalHeader()->setLabel( 1, tr( "Contact" ));
152 setLeftMargin( 0 ); 153 setLeftMargin( 0 );
153 verticalHeader()->hide(); 154 verticalHeader()->hide();
154 columnVisible = true; 155 columnVisible = true;
155} 156}
156 157
157void AbTable::setContacts( const OContactAccess::List& viewList ) 158void AbTable::setContacts( const OContactAccess::List& viewList )
158{ 159{
159 qWarning("AbTable::setContacts()"); 160 qWarning("AbTable::setContacts()");
160 161
161 clear(); 162 clear();
162 m_viewList = viewList; 163 m_viewList = viewList;
163 164
164 setSorting( false ); 165 setSorting( false );
165 setUpdatesEnabled( FALSE ); 166 setPaintingEnabled( FALSE );
166 167
167 OContactAccess::List::Iterator it; 168 OContactAccess::List::Iterator it;
168 setNumRows( m_viewList.count() ); 169 setNumRows( m_viewList.count() );
169 int row = 0; 170 int row = 0;
170 for ( it = m_viewList.begin(); it != m_viewList.end(); ++it ) 171 for ( it = m_viewList.begin(); it != m_viewList.end(); ++it )
171 insertIntoTable( *it, row++ ); 172 insertIntoTable( *it, row++ );
172 173
173 setUpdatesEnabled( TRUE );
174
175 setSorting( true ); 174 setSorting( true );
176 175
177 resort(); 176 resort();
178 177
179 updateVisible(); 178 updateVisible();
180 179
180 setPaintingEnabled( TRUE );
181
181} 182}
182 183
183bool AbTable::selectContact( int UID ) 184bool AbTable::selectContact( int UID )
184{ 185{
185 qWarning( "AbTable::selectContact( %d )", UID ); 186 qWarning( "AbTable::selectContact( %d )", UID );
186 int rows = numRows(); 187 int rows = numRows();
187 AbTableItem *abi; 188 AbTableItem *abi;
188 OContact* foundContact = 0l; 189 OContact* foundContact = 0l;
189 bool found = false; 190 bool found = false;
190 191
192 setPaintingEnabled( FALSE );
191 for ( int r = 0; r < rows; ++r ) { 193 for ( int r = 0; r < rows; ++r ) {
192 abi = static_cast<AbTableItem*>( item(r, 0) ); 194 abi = static_cast<AbTableItem*>( item(r, 0) );
193 foundContact = &contactList[abi]; 195 foundContact = &contactList[abi];
194 if ( foundContact -> uid() == UID ){ 196 if ( foundContact -> uid() == UID ){
195 ensureCellVisible( r, 0 ); 197 ensureCellVisible( r, 0 );
196 setCurrentCell( r, 0 ); 198 setCurrentCell( r, 0 );
197 found = true; 199 found = true;
198 break; 200 break;
199 } 201 }
200 } 202 }
201 203
202 if ( !found ){ 204 if ( !found ){
203 ensureCellVisible( 0,0 ); 205 ensureCellVisible( 0,0 );
204 setCurrentCell( 0, 0 ); 206 setCurrentCell( 0, 0 );
205 } 207 }
206 208
209 setPaintingEnabled( TRUE );
210
207 return true; 211 return true;
208} 212}
209 213
210void AbTable::insertIntoTable( const OContact& cnt, int row ) 214void AbTable::insertIntoTable( const OContact& cnt, int row )
211{ 215{
212 // qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row ); 216 qWarning( "void AbTable::insertIntoTable( const OContact& cnt, %d )", row );
213 QString strName, 217 QString strName,
214 strContact; 218 strContact;
215 219
216 strName = findContactName( cnt ); 220 strName = findContactName( cnt );
217 strContact = findContactContact( cnt, row ); 221 strContact = findContactContact( cnt, row );
218 222
219 AbTableItem *ati; 223 AbTableItem *ati;
220 ati = new AbTableItem( this, QTableItem::Never, strName, strContact); 224 ati = new AbTableItem( this, QTableItem::Never, strName, strContact);
221 contactList.insert( ati, cnt ); 225 contactList.insert( ati, cnt );
222 setItem( row, 0, ati ); 226 setItem( row, 0, ati );
223 ati = new AbTableItem( this, QTableItem::Never, strContact, strName); 227 ati = new AbTableItem( this, QTableItem::Never, strContact, strName);
224 setItem( row, 1, ati ); 228 setItem( row, 1, ati );
225 229
226 //### cannot do this; table only has two columns at this point 230 //### cannot do this; table only has two columns at this point
227 // setItem( row, 2, new AbPickItem( this ) ); 231 // setItem( row, 2, new AbPickItem( this ) );
228 232
229} 233}
230 234
231 235
232 236
233void AbTable::columnClicked( int col ) 237void AbTable::columnClicked( int col )
234{ 238{
235 if ( !sorting() ) 239 if ( !sorting() )
236 return; 240 return;
237 241
238 if ( lastSortCol == -1 ) 242 if ( lastSortCol == -1 )
239 lastSortCol = col; 243 lastSortCol = col;
240 244
241 if ( col == lastSortCol ) { 245 if ( col == lastSortCol ) {
242 asc = !asc; 246 asc = !asc;
243 } else { 247 } else {
244 lastSortCol = col; 248 lastSortCol = col;
245 asc = TRUE; 249 asc = TRUE;
246 } 250 }
247 //QMessageBox::information( this, "resort", "columnClicked" ); 251 //QMessageBox::information( this, "resort", "columnClicked" );
248 resort(); 252 resort();
249} 253}
250 254
251void AbTable::resort() 255void AbTable::resort()
252{ 256{
253 qWarning( "void AbTable::resort()" ); 257 qWarning( "void AbTable::resort()" );
258 setPaintingEnabled( FALSE );
254 if ( sorting() ) { 259 if ( sorting() ) {
255 if ( lastSortCol == -1 ) 260 if ( lastSortCol == -1 )
256 lastSortCol = 0; 261 lastSortCol = 0;
257 sortColumn( lastSortCol, asc, TRUE ); 262 sortColumn( lastSortCol, asc, TRUE );
258 //QMessageBox::information( this, "resort", "resort" ); 263 //QMessageBox::information( this, "resort", "resort" );
259 updateVisible(); 264 updateVisible();
260 } 265 }
266 setPaintingEnabled( TRUE );
261} 267}
262 268
263OContact AbTable::currentEntry() 269OContact AbTable::currentEntry()
264{ 270{
265 qWarning( "OContact AbTable::currentEntry()" ); 271 qWarning( "OContact AbTable::currentEntry()" );
266 OContact cnt; 272 OContact cnt;
267 AbTableItem *abItem; 273 AbTableItem *abItem;
268 abItem = static_cast<AbTableItem*>(item( currentRow(), 0 )); 274 abItem = static_cast<AbTableItem*>(item( currentRow(), 0 ));
269 if ( abItem ) { 275 if ( abItem ) {
270 cnt = contactList[abItem]; 276 cnt = contactList[abItem];
271 //cnt = contactList[currentRow()]; 277 //cnt = contactList[currentRow()];
272 } 278 }
273 return cnt; 279 return cnt;
274} 280}
275 281
276int AbTable::currentEntry_UID() 282int AbTable::currentEntry_UID()
277{ 283{
278 return ( currentEntry().uid() ); 284 return ( currentEntry().uid() );
279} 285}
280 286
281void AbTable::clear() 287void AbTable::clear()
282{ 288{
283 qWarning( "void AbTable::clear()" ); 289 qWarning( "void AbTable::clear()" );
284 contactList.clear(); 290 contactList.clear();
291
292 setPaintingEnabled( FALSE );
285 for ( int r = 0; r < numRows(); ++r ) { 293 for ( int r = 0; r < numRows(); ++r ) {
286 for ( int c = 0; c < numCols(); ++c ) { 294 for ( int c = 0; c < numCols(); ++c ) {
287 if ( cellWidget( r, c ) ) 295 if ( cellWidget( r, c ) )
288 clearCellWidget( r, c ); 296 clearCellWidget( r, c );
289 clearCell( r, c ); 297 clearCell( r, c );
290 } 298 }
291 } 299 }
292 setNumRows( 0 ); 300 setNumRows( 0 );
301 setPaintingEnabled( TRUE );
293} 302}
294 303
295// Refresh updates column 2 if the contactsettings changed 304// Refresh updates column 2 if the contactsettings changed
296void AbTable::refresh() 305void AbTable::refresh()
297{ 306{
298 qWarning( "void AbTable::refresh()" ); 307 qWarning( "void AbTable::refresh()" );
299 int rows = numRows(); 308 int rows = numRows();
300 QString value; 309 QString value;
301 AbTableItem *abi; 310 AbTableItem *abi;
302 311
312 setPaintingEnabled( FALSE );
303 for ( int r = 0; r < rows; ++r ) { 313 for ( int r = 0; r < rows; ++r ) {
304 abi = static_cast<AbTableItem*>( item(r, 0) ); 314 abi = static_cast<AbTableItem*>( item(r, 0) );
305 value = findContactContact( contactList[abi], r ); 315 value = findContactContact( contactList[abi], r );
306 static_cast<AbTableItem*>( item(r, 1) )->setItem( value, abi->text() ); 316 static_cast<AbTableItem*>( item(r, 1) )->setItem( value, abi->text() );
307 } 317 }
308 resort(); 318 resort();
319 setPaintingEnabled( TRUE );
309} 320}
310 321
311void AbTable::keyPressEvent( QKeyEvent *e ) 322void AbTable::keyPressEvent( QKeyEvent *e )
312{ 323{
313 char key = toupper( e->ascii() ); 324 char key = toupper( e->ascii() );
314 325
315 if ( key >= 'A' && key <= 'Z' ) 326 if ( key >= 'A' && key <= 'Z' )
316 moveTo( key ); 327 moveTo( key );
317 328
318 qWarning("Received key .."); 329 qWarning("Received key ..");
319 switch( e->key() ) { 330 switch( e->key() ) {
320 case Qt::Key_Space: 331 case Qt::Key_Space:
321 case Qt::Key_Return: 332 case Qt::Key_Return:
322 case Qt::Key_Enter: 333 case Qt::Key_Enter:
323 emit signalSwitch(); 334 emit signalSwitch();
324 break; 335 break;
325 // case Qt::Key_Up: 336 // case Qt::Key_Up:
326 // qWarning("a"); 337 // qWarning("a");
327 // emit signalKeyUp(); 338 // emit signalKeyUp();
328 // break; 339 // break;
329 // case Qt::Key_Down: 340 // case Qt::Key_Down:
330 // qWarning("b"); 341 // qWarning("b");
331 // emit signalKeyDown(); 342 // emit signalKeyDown();
332 // break; 343 // break;
333 default: 344 default:
334 QTable::keyPressEvent( e ); 345 QTable::keyPressEvent( e );
335 } 346 }
336 347
337} 348}
338 349
339void AbTable::moveTo( char c ) 350void AbTable::moveTo( char c )
340{ 351{
@@ -425,76 +436,80 @@ void QTable::paintEmptyArea( QPainter *p, int cx, int cy, int cw, int ch )
425 // And draw the rectangles (transformed as needed) 436 // And draw the rectangles (transformed as needed)
426 QArray<QRect> r = reg.rects(); 437 QArray<QRect> r = reg.rects();
427 for (unsigned int i=0; i<r.count(); i++) 438 for (unsigned int i=0; i<r.count(); i++)
428 p->fillRect( r[i], colorGroup().brush( QColorGroup::Base ) ); 439 p->fillRect( r[i], colorGroup().brush( QColorGroup::Base ) );
429} 440}
430#endif 441#endif
431#endif 442#endif
432 443
433 444
434// int AbTable::rowHeight( int ) const 445// int AbTable::rowHeight( int ) const
435// { 446// {
436// return 18; 447// return 18;
437// } 448// }
438 449
439// int AbTable::rowPos( int row ) const 450// int AbTable::rowPos( int row ) const
440// { 451// {
441// return 18*row; 452// return 18*row;
442// } 453// }
443 454
444// int AbTable::rowAt( int pos ) const 455// int AbTable::rowAt( int pos ) const
445// { 456// {
446// return QMIN( pos/18, numRows()-1 ); 457// return QMIN( pos/18, numRows()-1 );
447// } 458// }
448 459
449 460
450 461
451void AbTable::fitColumns() 462void AbTable::fitColumns()
452{ 463{
453 qWarning( "void AbTable::fitColumns()" ); 464 qWarning( "void AbTable::fitColumns()" );
454 int contentsWidth = visibleWidth() / 2; // :SX Why too low 465 int contentsWidth = visibleWidth() / 2; // :SX Why too low
455 // Fix to better value 466 // Fix to better value
456 // contentsWidth = 130; 467 // contentsWidth = 130;
468
469 setPaintingEnabled( FALSE );
457 470
458 if ( columnVisible == false ){ 471 if ( columnVisible == false ){
459 showColumn(0); 472 showColumn(0);
460 columnVisible = true; 473 columnVisible = true;
461 } 474 }
462 475
463 qWarning("Width: %d", contentsWidth); 476 qWarning("Width: %d", contentsWidth);
464 477
465 setColumnWidth( 0, contentsWidth ); 478 setColumnWidth( 0, contentsWidth );
466 adjustColumn(1); 479 adjustColumn(1);
467 if ( columnWidth(1) < contentsWidth ) 480 if ( columnWidth(1) < contentsWidth )
468 setColumnWidth( 1, contentsWidth ); 481 setColumnWidth( 1, contentsWidth );
482
483 setPaintingEnabled( TRUE );
469} 484}
470 485
471void AbTable::show() 486void AbTable::show()
472{ 487{
473 qWarning( "void AbTable::show()" ); 488 qWarning( "void AbTable::show()" );
474 realignTable(); 489 realignTable();
475 QTable::show(); 490 QTable::show();
476} 491}
477 492
478void AbTable::setChoiceNames( const QStringList& list) 493void AbTable::setChoiceNames( const QStringList& list)
479{ 494{
480 choicenames = list; 495 choicenames = list;
481 if ( choicenames.isEmpty() ) { 496 if ( choicenames.isEmpty() ) {
482 // hide pick column 497 // hide pick column
483 setNumCols( 2 ); 498 setNumCols( 2 );
484 } else { 499 } else {
485 // show pick column 500 // show pick column
486 setNumCols( 3 ); 501 setNumCols( 3 );
487 setColumnWidth( 2, fontMetrics().width(tr( "Pick" ))+8 ); 502 setColumnWidth( 2, fontMetrics().width(tr( "Pick" ))+8 );
488 horizontalHeader()->setLabel( 2, tr( "Pick" )); 503 horizontalHeader()->setLabel( 2, tr( "Pick" ));
489 } 504 }
490 fitColumns(); 505 fitColumns();
491} 506}
492 507
493void AbTable::itemClicked(int,int col) 508void AbTable::itemClicked(int,int col)
494{ 509{
495 qWarning( "AbTable::itemClicked(int, col:%d)", col); 510 qWarning( "AbTable::itemClicked(int, col:%d)", col);
496 if ( col == 2 ) { 511 if ( col == 2 ) {
497 return; 512 return;
498 } else { 513 } else {
499 qWarning ("Emitting signalSwitch()"); 514 qWarning ("Emitting signalSwitch()");
500 emit signalSwitch(); 515 emit signalSwitch();
@@ -504,111 +519,129 @@ void AbTable::itemClicked(int,int col)
504QStringList AbTable::choiceNames() const 519QStringList AbTable::choiceNames() const
505{ 520{
506 return choicenames; 521 return choicenames;
507} 522}
508 523
509void AbTable::setChoiceSelection( const QValueList<int>& list ) 524void AbTable::setChoiceSelection( const QValueList<int>& list )
510{ 525{
511 intFields = list; 526 intFields = list;
512} 527}
513 528
514QStringList AbTable::choiceSelection(int /*index*/) const 529QStringList AbTable::choiceSelection(int /*index*/) const
515{ 530{
516 QStringList r; 531 QStringList r;
517 /* ###### 532 /* ######
518 533
519 QString selname = choicenames.at(index); 534 QString selname = choicenames.at(index);
520 for (each row) { 535 for (each row) {
521 OContact *c = contactForRow(row); 536 OContact *c = contactForRow(row);
522 if ( text(row,2) == selname ) { 537 if ( text(row,2) == selname ) {
523 r.append(c->email); 538 r.append(c->email);
524 } 539 }
525 } 540 }
526 541
527 */ 542 */
528 return r; 543 return r;
529} 544}
530 545
531 546
532 547
533 548
534void AbTable::updateVisible() 549void AbTable::updateVisible()
535{ 550{
551 qWarning("void AbTable::updateVisible()");
552
536 int visible, 553 int visible,
537 totalRows, 554 totalRows,
538 row, 555 row,
539 selectedRow = 0; 556 selectedRow = 0;
540 557
541 visible = 0; 558 visible = 0;
542 559
543 realignTable();
544
545 setPaintingEnabled( FALSE ); 560 setPaintingEnabled( FALSE );
546 561
562 realignTable();
563
547 totalRows = numRows(); 564 totalRows = numRows();
548 for ( row = 0; row < totalRows; row++ ) { 565 for ( row = 0; row < totalRows; row++ ) {
549 if ( rowHeight(row) == 0 ) { 566 if ( rowHeight(row) == 0 ) {
550 showRow( row ); 567 showRow( row );
551 adjustRow( row ); 568 adjustRow( row );
552 if ( isSelected( row,0 ) || isSelected( row,1 ) ) 569 if ( isSelected( row,0 ) || isSelected( row,1 ) )
553 selectedRow = row; 570 selectedRow = row;
554 } 571 }
555 visible++; 572 visible++;
556 } 573 }
557 574
558 if ( selectedRow ) 575 if ( selectedRow )
559 setCurrentCell( selectedRow, 0 ); 576 setCurrentCell( selectedRow, 0 );
560 577
561 if ( !visible ) 578 if ( !visible )
562 setCurrentCell( -1, 0 ); 579 setCurrentCell( -1, 0 );
563 580
564 setPaintingEnabled( TRUE ); 581 setPaintingEnabled( TRUE );
565 582
566 583
567} 584}
568 585
569 586
570void AbTable::setPaintingEnabled( bool e ) 587void AbTable::setPaintingEnabled( bool e )
571{ 588{
572 if ( e != enablePainting ) { 589 qWarning("IN void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested );
573 if ( !enablePainting ) { 590
591 if ( e ) {
592 if ( countNested > 0 )
593 --countNested;
594 if ( ! countNested ){
595 setUpdatesEnabled( true );
574 enablePainting = true; 596 enablePainting = true;
575 rowHeightChanged( 0 ); 597 rowHeightChanged( 0 );
576 viewport()->update(); 598 viewport()->update();
577 } else {
578 enablePainting = false;
579 } 599 }
600 } else {
601 ++countNested;
602 enablePainting = false;
603 setUpdatesEnabled( false );
580 } 604 }
605 qWarning("OUT void AbTable::setPaintingEnabled( %d )->Nested: %d", e, countNested );
581} 606}
582 607
608void AbTable::viewportPaintEvent( QPaintEvent* e ) {
609 qWarning(" void AbTable::viewportPaintEvent( QPaintEvent* e ) -> %d", enablePainting);
610 if ( enablePainting )
611 QTable::viewportPaintEvent( e );
612}
613
614
615
583void AbTable::rowHeightChanged( int row ) 616void AbTable::rowHeightChanged( int row )
584{ 617{
585 if ( enablePainting ) 618 if ( enablePainting )
586 QTable::rowHeightChanged( row ); 619 QTable::rowHeightChanged( row );
587} 620}
588QString AbTable::findContactContact( const OContact &entry, int /* row */ ) 621QString AbTable::findContactContact( const OContact &entry, int /* row */ )
589{ 622{
590 QString value; 623 QString value;
591 value = ""; 624 value = "";
592 for ( QValueList<int>::ConstIterator it = intFields.begin(); 625 for ( QValueList<int>::ConstIterator it = intFields.begin();
593 it != intFields.end(); ++it ) { 626 it != intFields.end(); ++it ) {
594 switch ( *it ) { 627 switch ( *it ) {
595 default: 628 default:
596 break; 629 break;
597 case Qtopia::Title: 630 case Qtopia::Title:
598 value = entry.title(); 631 value = entry.title();
599 break; 632 break;
600 case Qtopia::Suffix: 633 case Qtopia::Suffix:
601 value = entry.suffix(); 634 value = entry.suffix();
602 break; 635 break;
603 case Qtopia::FileAs: 636 case Qtopia::FileAs:
604 value = entry.fileAs(); 637 value = entry.fileAs();
605 break; 638 break;
606 case Qtopia::DefaultEmail: 639 case Qtopia::DefaultEmail:
607 value = entry.defaultEmail(); 640 value = entry.defaultEmail();
608 case Qtopia::Emails: 641 case Qtopia::Emails:
609 value = entry.emails(); 642 value = entry.emails();
610 break; 643 break;
611 case Qtopia::HomeStreet: 644 case Qtopia::HomeStreet:
612 value = entry.homeStreet(); 645 value = entry.homeStreet();
613 break; 646 break;
614 case Qtopia::HomeCity: 647 case Qtopia::HomeCity:
diff --git a/core/pim/addressbook/abtable.h b/core/pim/addressbook/abtable.h
index 83bd5a7..9825665 100644
--- a/core/pim/addressbook/abtable.h
+++ b/core/pim/addressbook/abtable.h
@@ -56,81 +56,82 @@ public:
56 56
57private: 57private:
58 QGuardedPtr<QComboBox> cb; 58 QGuardedPtr<QComboBox> cb;
59}; 59};
60 60
61class AbTable : public QTable 61class AbTable : public QTable
62{ 62{
63 Q_OBJECT 63 Q_OBJECT
64 64
65public: 65public:
66 AbTable( const QValueList<int> ordered, QWidget *parent, const char *name=0 ); 66 AbTable( const QValueList<int> ordered, QWidget *parent, const char *name=0 );
67 ~AbTable(); 67 ~AbTable();
68 68
69 // Set the contacts shown in the table 69 // Set the contacts shown in the table
70 void setContacts( const OContactAccess::List& viewList ); 70 void setContacts( const OContactAccess::List& viewList );
71 // Selects a contact of a specific UID 71 // Selects a contact of a specific UID
72 bool selectContact( int UID ); 72 bool selectContact( int UID );
73 73
74 // Get the current selected entry 74 // Get the current selected entry
75 OContact currentEntry(); 75 OContact currentEntry();
76 76
77 // Get the UID of the current selected Entry 77 // Get the UID of the current selected Entry
78 int currentEntry_UID(); 78 int currentEntry_UID();
79 79
80 QString findContactName( const OContact &entry ); 80 QString findContactName( const OContact &entry );
81 81
82 void init(); 82 void init();
83 void clear(); 83 void clear();
84 void refresh(); 84 void refresh();
85 85
86 void show(); 86 void show();
87 void setPaintingEnabled( bool e ); 87 void setPaintingEnabled( bool e );
88 void viewportPaintEvent( QPaintEvent* e);
88 89
89 // addresspicker mode (What's that ? se) 90 // addresspicker mode (What's that ? se)
90 void setChoiceNames( const QStringList& list); 91 void setChoiceNames( const QStringList& list);
91 QStringList choiceNames() const; 92 QStringList choiceNames() const;
92 void setChoiceSelection( const QValueList<int>& list ); 93 void setChoiceSelection( const QValueList<int>& list );
93 QStringList choiceSelection(int index) const; 94 QStringList choiceSelection(int index) const;
94 95
95signals: 96signals:
96 void signalSwitch(); 97 void signalSwitch();
97 void signalEditor(); 98 void signalEditor();
98 void signalKeyDown(); 99 void signalKeyDown();
99 void signalKeyUp(); 100 void signalKeyUp();
100 101
101protected: 102protected:
102 virtual void keyPressEvent( QKeyEvent *e ); 103 virtual void keyPressEvent( QKeyEvent *e );
103 104
104// int rowHeight( int ) const; 105// int rowHeight( int ) const;
105// int rowPos( int row ) const; 106// int rowPos( int row ) const;
106// virtual int rowAt( int pos ) const; 107// virtual int rowAt( int pos ) const;
107 108
108 109
109protected slots: 110protected slots:
110 void moveTo( char ); 111 void moveTo( char );
111 virtual void columnClicked( int col ); 112 virtual void columnClicked( int col );
112 void itemClicked(int,int col); 113 void itemClicked(int,int col);
113 void rowHeightChanged( int row ); 114 void rowHeightChanged( int row );
114 115
115private: 116private:
116 void insertIntoTable( const OContact &cnt, int row ); 117 void insertIntoTable( const OContact &cnt, int row );
117 QString findContactContact( const OContact &entry, int row ); 118 QString findContactContact( const OContact &entry, int row );
118 void fitColumns(); 119 void fitColumns();
119 void resizeRows(); 120 void resizeRows();
120 void realignTable(); 121 void realignTable();
121 void resort(); 122 void resort();
122 void updateVisible(); 123 void updateVisible();
123 124
124 int lastSortCol; 125 int lastSortCol;
125 bool asc; 126 bool asc;
126 QMap<AbTableItem*, OContact> contactList; 127 QMap<AbTableItem*, OContact> contactList;
127 QValueList<int> intFields; 128 QValueList<int> intFields;
128 QStringList choicenames; 129 QStringList choicenames;
129 bool enablePainting; 130 bool enablePainting;
130
131 bool columnVisible; 131 bool columnVisible;
132 int countNested;
132 133
133 OContactAccess::List m_viewList; 134 OContactAccess::List m_viewList;
134 135
135}; 136};
136#endif // ABTABLE_H 137#endif // ABTABLE_H
diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp
index 8d22129..3af7663 100644
--- a/core/pim/addressbook/abview.cpp
+++ b/core/pim/addressbook/abview.cpp
@@ -1,32 +1,48 @@
1/**********************************************************************
2** Copyright (c) 2002 Stefan Eilers (eilers.stefan@epost.de)
3**
4** This file is part of Qt Palmtop Environment.
5**
6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13**
14**
15**********************************************************************/
16
1#include "abview.h" 17#include "abview.h"
2 18
3#include <qlayout.h> 19#include <qlayout.h>
4 20
5#include <qpe/global.h> 21#include <qpe/global.h>
6 22
7#include <opie/ocontactaccessbackend_vcard.h> 23#include <opie/ocontactaccessbackend_vcard.h>
8 24
9 25
10// Is defined in LibQPE 26// Is defined in LibQPE
11extern QString categoryFileName(); 27extern QString categoryFileName();
12 28
13QString addressbookPersonalVCardName() 29QString addressbookPersonalVCardName()
14{ 30{
15 QString filename = Global::applicationFileName("addressbook", 31 QString filename = Global::applicationFileName("addressbook",
16 "businesscard.vcf"); 32 "businesscard.vcf");
17 return filename; 33 return filename;
18} 34}
19 35
20 36
21AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ): 37AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ):
22 QWidget(parent), 38 QWidget(parent),
23 mCat(0), 39 mCat(0),
24 m_inSearch( false ), 40 m_inSearch( false ),
25 m_inPersonal( false ), 41 m_inPersonal( false ),
26 m_curr_category( -1 ), 42 m_curr_category( -1 ),
27 m_curr_View( TableView ), 43 m_curr_View( TableView ),
28 m_prev_View( TableView ), 44 m_prev_View( TableView ),
29 m_curr_Contact ( 0 ), 45 m_curr_Contact ( 0 ),
30 m_contactdb ( 0l ), 46 m_contactdb ( 0l ),
31 m_storedDB ( 0l ), 47 m_storedDB ( 0l ),
32 m_viewStack( 0l ), 48 m_viewStack( 0l ),
@@ -108,128 +124,122 @@ void AbView::replaceEntry( const OContact &contact )
108 124
109OContact AbView::currentEntry() 125OContact AbView::currentEntry()
110{ 126{
111 switch ( (int) m_curr_View ) { 127 switch ( (int) m_curr_View ) {
112 case TableView: 128 case TableView:
113 return ( m_abTable -> currentEntry() ); 129 return ( m_abTable -> currentEntry() );
114 break; 130 break;
115 case CardView: 131 case CardView:
116 return ( m_ablabel -> currentEntry() ); 132 return ( m_ablabel -> currentEntry() );
117 break; 133 break;
118 } 134 }
119 return OContact(); 135 return OContact();
120} 136}
121 137
122bool AbView::save() 138bool AbView::save()
123{ 139{
124 qWarning("abView:Save data"); 140 qWarning("abView:Save data");
125 141
126 return m_contactdb->save(); 142 return m_contactdb->save();
127} 143}
128 144
129void AbView::load() 145void AbView::load()
130{ 146{
131 qWarning("abView:Load data"); 147 qWarning("abView:Load data");
132 148
133 if ( m_inPersonal ) 149 if ( m_inPersonal )
134 m_list = m_contactdb->allRecords(); 150 m_list = m_contactdb->allRecords();
135 else 151 else
136 m_list = m_contactdb->sorted( true, 0, 0, 0 ); 152 m_list = m_contactdb->sorted( true, 0, 0, 0 );
137 153
138 clearForCategory(); 154 clearForCategory();
139 155
140 // Feed all views with new lists
141 updateListinViews();
142
143 qWarning ("Number of contacts: %d", m_list.count()); 156 qWarning ("Number of contacts: %d", m_list.count());
144 157
145 updateView(); 158 updateView();
146 159
147} 160}
148 161
149void AbView::reload() 162void AbView::reload()
150{ 163{
151 qWarning( "void AbView::reload()" ); 164 qWarning( "void AbView::reload()" );
152 165
153 m_contactdb->reload(); 166 m_contactdb->reload();
154 load(); 167 load();
155} 168}
156 169
157void AbView::clear() 170void AbView::clear()
158{ 171{
159 // :SX 172 // :SX
160} 173}
161 174
162void AbView::setShowByCategory( Views view, const QString& cat ) 175void AbView::setShowByCategory( const QString& cat )
163{ 176{
164 qWarning("AbView::setShowCategory( Views view, const QString& cat )"); 177 qWarning("AbView::setShowCategory( const QString& cat )");
165
166 // if ( view == PersonalView ){
167 // if ( ! m_inPersonal )
168 // showPersonal( true );
169
170 // }else{
171 // if ( m_inPersonal )
172 // showPersonal( false );
173
174 // m_curr_View = view;
175 // }
176 178
177 int intCat = 0; 179 int intCat = 0;
178 180
179 // All (cat == NULL) will be stored as -1 181 // All (cat == NULL) will be stored as -1
180 if ( cat.isNull() ) 182 if ( cat.isNull() )
181 intCat = -1; 183 intCat = -1;
182 else 184 else
183 intCat = mCat.id("Contacts", cat ); 185 intCat = mCat.id("Contacts", cat );
184 186
185 // If we just change the view, we don't have to reload any data.. 187 // Just do anything if we really change the category
186 // This speeds up a lot of things ! 188 if ( intCat != m_curr_category ){
187 if ( intCat == m_curr_category ){
188 qWarning ("Just change the View (Category is: %d)", m_curr_category);
189 m_prev_View = m_curr_View;
190 m_curr_View = view;
191
192 updateView();
193 }else{
194 qWarning ("Categories: Selected %s.. Number: %d", cat.latin1(), m_curr_category); 189 qWarning ("Categories: Selected %s.. Number: %d", cat.latin1(), m_curr_category);
195 190
196 m_curr_View = view;
197 m_curr_category = intCat; 191 m_curr_category = intCat;
198 emit signalClearLetterPicker(); 192 emit signalClearLetterPicker();
199 193
200 load(); 194 load();
201 } 195 }
202 196
203} 197}
198
199void AbView::setShowToView( Views view )
200{
201 qWarning("void AbView::setShowToView( View %d )", view);
202
203 qWarning ("Change the View (Category is: %d)", m_curr_category);
204
205 if ( m_curr_View != view ){
206 m_prev_View = m_curr_View;
207 m_curr_View = view;
208
209 updateView();
210 }
211
212}
213
204void AbView::setShowByLetter( char c ) 214void AbView::setShowByLetter( char c )
205{ 215{
206 qWarning("void AbView::setShowByLetter( %c )", c ); 216 qWarning("void AbView::setShowByLetter( %c )", c );
207 OContact query; 217 OContact query;
208 if ( c == 0 ){ 218 if ( c == 0 ){
209 load(); 219 load();
210 return; 220 return;
211 }else{ 221 }else{
212 query.setLastName( QString("%1*").arg(c) ); 222 query.setLastName( QString("%1*").arg(c) );
213 m_list = m_contactdb->queryByExample( query, OContactAccess::WildCards ); 223 m_list = m_contactdb->queryByExample( query, OContactAccess::WildCards );
214 clearForCategory(); 224 clearForCategory();
215 m_curr_Contact = 0; 225 m_curr_Contact = 0;
216 } 226 }
217 updateView(); 227 updateView();
218} 228}
219 229
220void AbView::setListOrder( const QValueList<int>& ordered ) 230void AbView::setListOrder( const QValueList<int>& ordered )
221{ 231{
222 m_orderedFields = ordered; 232 m_orderedFields = ordered;
223 updateView(); 233 updateView();
224} 234}
225 235
226 236
227QString AbView::showCategory() const 237QString AbView::showCategory() const
228{ 238{
229 return mCat.label( "Contacts", m_curr_category ); 239 return mCat.label( "Contacts", m_curr_category );
230} 240}
231 241
232void AbView::showPersonal( bool personal ) 242void AbView::showPersonal( bool personal )
233{ 243{
234 qWarning ("void AbView::showPersonal( %d )", personal); 244 qWarning ("void AbView::showPersonal( %d )", personal);
235 245
@@ -372,74 +382,78 @@ bool AbView::contactCompare( const OContact &cnt, int category )
372 382
373 qWarning ("Number of categories: %d", cats.count() ); 383 qWarning ("Number of categories: %d", cats.count() );
374 384
375 returnMe = false; 385 returnMe = false;
376 if ( cats.count() == 0 && category == 0 ) 386 if ( cats.count() == 0 && category == 0 )
377 // Contacts with no category will just shown on "All" and "Unfiled" 387 // Contacts with no category will just shown on "All" and "Unfiled"
378 returnMe = true; 388 returnMe = true;
379 else { 389 else {
380 int i; 390 int i;
381 for ( i = 0; i < int(cats.count()); i++ ) { 391 for ( i = 0; i < int(cats.count()); i++ ) {
382 qWarning("Comparing %d with %d",cats[i],category ); 392 qWarning("Comparing %d with %d",cats[i],category );
383 if ( cats[i] == category ) { 393 if ( cats[i] == category ) {
384 returnMe = true; 394 returnMe = true;
385 break; 395 break;
386 } 396 }
387 } 397 }
388 } 398 }
389 qWarning ("Return: %d", returnMe); 399 qWarning ("Return: %d", returnMe);
390 return returnMe; 400 return returnMe;
391} 401}
392 402
393// In Some rare cases we have to update all lists.. 403// In Some rare cases we have to update all lists..
394void AbView::updateListinViews() 404void AbView::updateListinViews()
395{ 405{
396 m_abTable -> setContacts( m_list ); 406 m_abTable -> setContacts( m_list );
397 m_ablabel -> setContacts( m_list ); 407 m_ablabel -> setContacts( m_list );
398} 408}
399 409
400void AbView::updateView() 410void AbView::updateView()
401{ 411{
402 qWarning("AbView::updateView()"); 412 qWarning("AbView::updateView()");
403 413
414 // Feed all views with new lists
415 updateListinViews();
416
404 if ( m_viewStack -> visibleWidget() ){ 417 if ( m_viewStack -> visibleWidget() ){
405 m_viewStack -> visibleWidget() -> clearFocus(); 418 m_viewStack -> visibleWidget() -> clearFocus();
406 } 419 }
407 420
408 // If we switching the view, we have to store some information 421 // If we switching the view, we have to store some information
409 if ( m_list.count() ){ 422 if ( m_list.count() ){
410 switch ( (int) m_prev_View ) { 423 switch ( (int) m_prev_View ) {
411 case TableView: 424 case TableView:
412 m_curr_Contact = m_abTable -> currentEntry_UID(); 425 m_curr_Contact = m_abTable -> currentEntry_UID();
413 break; 426 break;
414 case CardView: 427 case CardView:
415 m_curr_Contact = m_ablabel -> currentEntry_UID(); 428 m_curr_Contact = m_ablabel -> currentEntry_UID();
416 break; 429 break;
417 } 430 }
418 emit signalViewSwitched ( (int) m_curr_View );
419 }else 431 }else
420 m_curr_Contact = 0; 432 m_curr_Contact = 0;
421 433
434 // Inform the world that the view is changed
435 if ( m_curr_View != m_prev_View )
436 emit signalViewSwitched ( (int) m_curr_View );
437
422 m_prev_View = m_curr_View; 438 m_prev_View = m_curr_View;
423 439
424 // Switch to new View 440 // Switch to new View
425 switch ( (int) m_curr_View ) { 441 switch ( (int) m_curr_View ) {
426 case TableView: 442 case TableView:
427 m_abTable -> setChoiceSelection( m_orderedFields ); 443 m_abTable -> setChoiceSelection( m_orderedFields );
428 m_abTable -> setContacts( m_list );
429 if ( m_curr_Contact != 0 ) 444 if ( m_curr_Contact != 0 )
430 m_abTable -> selectContact ( m_curr_Contact ); 445 m_abTable -> selectContact ( m_curr_Contact );
431 m_abTable -> setFocus(); 446 m_abTable -> setFocus();
432 break; 447 break;
433 case CardView: 448 case CardView:
434 m_ablabel -> setContacts( m_list );
435 if ( m_curr_Contact != 0 ) 449 if ( m_curr_Contact != 0 )
436 m_ablabel -> selectContact( m_curr_Contact ); 450 m_ablabel -> selectContact( m_curr_Contact );
437 m_ablabel -> setFocus(); 451 m_ablabel -> setFocus();
438 break; 452 break;
439 } 453 }
440 454
441 // Raise the current View 455 // Raise the current View
442 m_viewStack -> raiseWidget( m_curr_View ); 456 m_viewStack -> raiseWidget( m_curr_View );
443} 457}
444 458
445 459
diff --git a/core/pim/addressbook/abview.h b/core/pim/addressbook/abview.h
index 201b521..2c10cfa 100644
--- a/core/pim/addressbook/abview.h
+++ b/core/pim/addressbook/abview.h
@@ -1,64 +1,65 @@
1#ifndef _ABVIEW_H_ 1#ifndef _ABVIEW_H_
2#define _ABVIEW_H_ 2#define _ABVIEW_H_
3 3
4#include <qwidget.h> 4#include <qwidget.h>
5#include <qwidgetstack.h> 5#include <qwidgetstack.h>
6 6
7#include <qpe/categories.h> 7#include <qpe/categories.h>
8#include <opie/ocontact.h> 8#include <opie/ocontact.h>
9#include <opie/ocontactaccess.h> 9#include <opie/ocontactaccess.h>
10 10
11#include "contacteditor.h" 11#include "contacteditor.h"
12#include "abtable.h" 12#include "abtable.h"
13#include "ablabel.h" 13#include "ablabel.h"
14 14
15class AbView: public QWidget 15class AbView: public QWidget
16{ 16{
17 Q_OBJECT 17 Q_OBJECT
18 18
19public: 19public:
20 enum Views{ TableView=0, CardView, PersonalView }; 20 enum Views{ TableView=0, CardView, PersonalView };
21 21
22 AbView( QWidget* parent, const QValueList<int>& ordered ); 22 AbView( QWidget* parent, const QValueList<int>& ordered );
23 ~AbView(); 23 ~AbView();
24 24
25 bool save(); 25 bool save();
26 void load(); 26 void load();
27 void reload(); 27 void reload();
28 void clear(); 28 void clear();
29 29
30 void setView( Views view ); 30 void setView( Views view );
31 void showPersonal( bool personal ); 31 void showPersonal( bool personal );
32 void setShowByCategory( Views view, const QString& cat ); 32 void setShowByCategory( const QString& cat );
33 void setShowToView( Views view );
33 void setShowByLetter( char c ); 34 void setShowByLetter( char c );
34 void setListOrder( const QValueList<int>& ordered ); 35 void setListOrder( const QValueList<int>& ordered );
35 36
36 // Add Entry and put to current 37 // Add Entry and put to current
37 void addEntry( const OContact &newContact ); 38 void addEntry( const OContact &newContact );
38 void removeEntry( const int UID ); 39 void removeEntry( const int UID );
39 void replaceEntry( const OContact &contact ); 40 void replaceEntry( const OContact &contact );
40 OContact currentEntry(); 41 OContact currentEntry();
41 42
42 void inSearch() { m_inSearch = true; } 43 void inSearch() { m_inSearch = true; }
43 void offSearch(); 44 void offSearch();
44 45
45 QString showCategory() const; 46 QString showCategory() const;
46 QStringList categories(); 47 QStringList categories();
47 48
48signals: 49signals:
49 void signalNotFound(); 50 void signalNotFound();
50 void signalClearLetterPicker(); 51 void signalClearLetterPicker();
51 void signalViewSwitched ( int ); 52 void signalViewSwitched ( int );
52 53
53public slots: 54public slots:
54 void slotDoFind( const QString &str, bool caseSensitive, bool useRegExp, 55 void slotDoFind( const QString &str, bool caseSensitive, bool useRegExp,
55 bool backwards, QString category = QString::null ); 56 bool backwards, QString category = QString::null );
56 void slotSwitch(); 57 void slotSwitch();
57 58
58private: 59private:
59 void updateListinViews(); 60 void updateListinViews();
60 void updateView(); 61 void updateView();
61 void clearForCategory(); 62 void clearForCategory();
62 bool contactCompare( const OContact &cnt, int category ); 63 bool contactCompare( const OContact &cnt, int category );
63 void parseName( const QString& name, QString *first, QString *middle, 64 void parseName( const QString& name, QString *first, QString *middle,
64 QString * last ); 65 QString * last );
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 3b2e4b8..5d588da 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -792,169 +792,159 @@ void AddressbookWindow::slotSave()
792 save(); 792 save();
793} 793}
794#endif 794#endif
795 795
796 796
797void AddressbookWindow::slotNotFound() 797void AddressbookWindow::slotNotFound()
798{ 798{
799 qWarning("Got notfound signal !"); 799 qWarning("Got notfound signal !");
800 QMessageBox::information( this, tr( "Not Found" ), 800 QMessageBox::information( this, tr( "Not Found" ),
801 tr( "Unable to find a contact for this \n search pattern!" ) ); 801 tr( "Unable to find a contact for this \n search pattern!" ) );
802 802
803 803
804} 804}
805void AddressbookWindow::slotWrapAround() 805void AddressbookWindow::slotWrapAround()
806{ 806{
807 qWarning("Got wrap signal !"); 807 qWarning("Got wrap signal !");
808 // if ( doNotifyWrapAround ) 808 // if ( doNotifyWrapAround )
809 // QMessageBox::information( this, tr( "End of list" ), 809 // QMessageBox::information( this, tr( "End of list" ),
810 // tr( "End of list. Wrap around now...!" ) + "\n" ); 810 // tr( "End of list. Wrap around now...!" ) + "\n" );
811 811
812} 812}
813 813
814void AddressbookWindow::slotSetCategory( int c ) 814void AddressbookWindow::slotSetCategory( int c )
815{ 815{
816 qWarning( "void AddressbookWindow::slotSetCategory( %d ) from %d", c, catMenu->count() ); 816 qWarning( "void AddressbookWindow::slotSetCategory( %d ) from %d", c, catMenu->count() );
817 817
818 QString cat, book; 818 QString cat, book;
819 AbView::Views view = AbView::TableView; 819 AbView::Views view = AbView::TableView;
820 820
821 if ( c <= 0 ) 821 if ( c <= 0 )
822 return; 822 return;
823 823
824 // Checkmark Book Menu Item Selected 824 // Switch view
825 if ( c < 3 ) 825 if ( c < 3 )
826 for ( unsigned int i = 1; i < 3; i++ ) 826 for ( unsigned int i = 1; i < 3; i++ ){
827 catMenu->setItemChecked( i, c == (int)i ); 827 if ( catMenu )
828 // Checkmark Category Menu Item Selected 828 catMenu->setItemChecked( i, c == (int)i );
829 }
829 else 830 else
831 // Checkmark Category Menu Item Selected
830 for ( unsigned int i = 3; i < catMenu->count(); i++ ) 832 for ( unsigned int i = 3; i < catMenu->count(); i++ )
831 catMenu->setItemChecked( i, c == (int)i ); 833 catMenu->setItemChecked( i, c == (int)i );
832 834
835 // Now switch to the selected category
833 for ( unsigned int i = 1; i < catMenu->count(); i++ ) { 836 for ( unsigned int i = 1; i < catMenu->count(); i++ ) {
834 if (catMenu->isItemChecked( i )) { 837 if (catMenu->isItemChecked( i )) {
835 if ( i == 1 ){ // default List view 838 if ( i == 1 ){ // default List view
836 book = QString::null; 839 book = QString::null;
837 view = AbView::TableView; 840 view = AbView::TableView;
838 }else if ( i == 2 ){ 841 }else if ( i == 2 ){
839 book = tr( "Cards" ); 842 book = tr( "Cards" );
840 view = AbView::CardView; 843 view = AbView::CardView;
841 // }else if ( i == 3 ){ 844 // }else if ( i == 3 ){
842 // book = tr( "Personal" ); 845 // book = tr( "Personal" );
843 // view = AbView:: PersonalView; 846 // view = AbView:: PersonalView;
844 }else if ( i == 3 ){ // default All Categories 847 }else if ( i == 3 ){ // default All Categories
845 cat = QString::null; 848 cat = QString::null;
846 }else if ( i == (unsigned int)catMenu->count() - 1 ){ // last menu option (seperator is counted, too) will be Unfiled 849 }else if ( i == (unsigned int)catMenu->count() - 1 ){ // last menu option (seperator is counted, too) will be Unfiled
847 cat = "Unfiled"; 850 cat = "Unfiled";
848 qWarning ("Unfiled selected!!!"); 851 qWarning ("Unfiled selected!!!");
849 }else{ 852 }else{
850 cat = m_abView->categories()[i - 4]; 853 cat = m_abView->categories()[i - 4];
851 } 854 }
852 } 855 }
853 } 856 }
854 857
858 // Switch to the selected View
855 slotViewSwitched( view ); 859 slotViewSwitched( view );
856 860
857 m_abView -> setShowByCategory( view, cat ); 861 // Tell the view about the selected category
862 m_abView -> setShowByCategory( cat );
858 863
859 if ( book.isEmpty() ) 864 if ( book.isEmpty() )
860 book = "List"; 865 book = "List";
861 if ( cat.isEmpty() ) 866 if ( cat.isEmpty() )
862 cat = "All"; 867 cat = "All";
863 868
864 setCaption( tr( "Contacts" ) + " - " + book + " - " + tr( cat ) ); 869 setCaption( tr( "Contacts" ) + " - " + book + " - " + tr( cat ) );
865} 870}
866 871
867void AddressbookWindow::slotViewSwitched( int view ) 872void AddressbookWindow::slotViewSwitched( int view )
868{ 873{
869 qWarning( "void AddressbookWindow::slotViewSwitched( %d )", view ); 874 qWarning( "void AddressbookWindow::slotViewSwitched( %d )", view );
870 int menu = 0; 875 int menu = 0;
876
877 // Switch to selected view
871 switch ( view ){ 878 switch ( view ){
872 case AbView::TableView: 879 case AbView::TableView:
873 menu = 1; 880 menu = 1;
874 m_tableViewButton->setOn(true); 881 m_tableViewButton->setOn(true);
875 m_cardViewButton->setOn(false); 882 m_cardViewButton->setOn(false);
876 break; 883 break;
877 case AbView::CardView: 884 case AbView::CardView:
878 menu = 2; 885 menu = 2;
879 m_tableViewButton->setOn(false); 886 m_tableViewButton->setOn(false);
880 m_cardViewButton->setOn(true); 887 m_cardViewButton->setOn(true);
881 break; 888 break;
882 // case AbView::PersonalView:
883 // menu = 3;
884 // break;
885 // case AbView::CompanyBook:
886 // menu = 3;
887 // break;
888 // case AbView::EmailBook:
889 // menu = 4;
890 // break;
891 } 889 }
892 for ( unsigned int i = 1; i < 3; i++ ){ 890 for ( unsigned int i = 1; i < 3; i++ ){
893 if ( catMenu ) 891 if ( catMenu )
894 catMenu->setItemChecked( i, menu == (int)i ); 892 catMenu->setItemChecked( i, menu == (int)i );
895 } 893 }
894
895 // Tell the view about the selected view
896 m_abView -> setShowToView ( (AbView::Views) view );
897
896} 898}
897 899
898 900
899void AddressbookWindow::slotListView() 901void AddressbookWindow::slotListView()
900{ 902{
901 emit slotSetCategory( AbView::TableView +1 ); 903 slotViewSwitched( AbView::TableView );
902} 904}
903 905
904void AddressbookWindow::slotCardView() 906void AddressbookWindow::slotCardView()
905{ 907{
906 emit slotSetCategory( AbView::CardView +1 ); 908 slotViewSwitched( AbView::CardView );
907} 909}
908 910
909void AddressbookWindow::slotSetLetter( char c ) { 911void AddressbookWindow::slotSetLetter( char c ) {
910 912
911 m_abView->setShowByLetter( c ); 913 m_abView->setShowByLetter( c );
912 914
913} 915}
914 916
915 917
916void AddressbookWindow::populateCategories() 918void AddressbookWindow::populateCategories()
917{ 919{
918 catMenu->clear(); 920 catMenu->clear();
919 921
920 int id, rememberId; 922 int id, rememberId;
921 id = 1; 923 id = 1;
922 rememberId = 0; 924 rememberId = 0;
923 925
924 catMenu->insertItem( Resource::loadPixmap( "datebook/weeklst" ), tr( "List" ), id++ ); 926 catMenu->insertItem( Resource::loadPixmap( "datebook/weeklst" ), tr( "List" ), id++ );
925 catMenu->insertItem( Resource::loadPixmap( "day" ), tr( "Cards" ), id++ ); 927 catMenu->insertItem( Resource::loadPixmap( "day" ), tr( "Cards" ), id++ );
926 // catMenu->insertItem( tr( "Personal" ), id++ ); 928 // catMenu->insertItem( tr( "Personal" ), id++ );
927 catMenu->insertSeparator(); 929 catMenu->insertSeparator();
928 930
929 catMenu->insertItem( tr( "All" ), id++ ); 931 catMenu->insertItem( tr( "All" ), id++ );
930 QStringList categories = m_abView->categories(); 932 QStringList categories = m_abView->categories();
931 categories.append( tr( "Unfiled" ) ); 933 categories.append( tr( "Unfiled" ) );
932 for ( QStringList::Iterator it = categories.begin(); 934 for ( QStringList::Iterator it = categories.begin();
933 it != categories.end(); ++it ) { 935 it != categories.end(); ++it ) {
934 catMenu->insertItem( *it, id ); 936 catMenu->insertItem( *it, id );
935 if ( *it == m_abView -> showCategory() ) 937 if ( *it == m_abView -> showCategory() )
936 rememberId = id; 938 rememberId = id;
937 ++id; 939 ++id;
938 } 940 }
939 941
940 // :SX
941 // if ( abList->showBook().isEmpty() ) {
942 // catMenu->setItemChecked( 1, true );
943 // } else if ( abList->showBook() == "Phone" ) {
944 // catMenu->setItemChecked( 2, true );
945 // } else if ( abList->showBook() == "Company" ) {
946 // catMenu->setItemChecked( 3, true );
947 // } else if ( abList->showBook() == "Email" ) {
948 // catMenu->setItemChecked( 4, true );
949 // } else if ( abList->showBook() == "Cards" ) {
950 // catMenu->setItemChecked( 5, true );
951 // }
952 942
953 if ( m_abView -> showCategory().isEmpty() ) { 943 if ( m_abView -> showCategory().isEmpty() ) {
954 slotSetCategory( 3 ); 944 slotSetCategory( 3 );
955 } 945 }
956 else { 946 else {
957 slotSetCategory( rememberId ); 947 slotSetCategory( rememberId );
958 } 948 }
959} 949}
960 950