summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/addressbook.cpp2
-rw-r--r--core/pim/addressbook/contacteditor.cpp12
-rw-r--r--core/pim/todo/todotable.h11
3 files changed, 14 insertions, 11 deletions
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index e11cf4c..3255269 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -436,193 +436,193 @@ void AddressbookWindow::slotViewEdit()
436 tr("Can not edit data, currently syncing") ); 436 tr("Can not edit data, currently syncing") );
437 } 437 }
438} 438}
439 439
440 440
441 441
442void AddressbookWindow::writeMail() 442void AddressbookWindow::writeMail()
443{ 443{
444 Contact c = abList->currentEntry(); 444 Contact c = abList->currentEntry();
445 QString name = c.fileAs(); 445 QString name = c.fileAs();
446 QString email = c.defaultEmail(); 446 QString email = c.defaultEmail();
447 QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)"); 447 QCopEnvelope e("QPE/Application/qtmail", "writeMail(QString,QString)");
448 e << name << email; 448 e << name << email;
449} 449}
450 450
451 451
452 452
453 453
454static const char * beamfile = "/tmp/obex/contact.vcf"; 454static const char * beamfile = "/tmp/obex/contact.vcf";
455 455
456void AddressbookWindow::slotBeam() 456void AddressbookWindow::slotBeam()
457{ 457{
458 QString filename; 458 QString filename;
459 Contact c; 459 Contact c;
460 if ( actionPersonal->isOn() ) { 460 if ( actionPersonal->isOn() ) {
461 filename = addressbookPersonalVCardName(); 461 filename = addressbookPersonalVCardName();
462 if (!QFile::exists(filename)) 462 if (!QFile::exists(filename))
463 return; // can't beam a non-existent file 463 return; // can't beam a non-existent file
464 c = Contact::readVCard( filename )[0]; 464 c = Contact::readVCard( filename )[0];
465 } else { 465 } else {
466 unlink( beamfile ); // delete if exists 466 unlink( beamfile ); // delete if exists
467 c = abList->currentEntry(); 467 c = abList->currentEntry();
468 mkdir("/tmp/obex/", 0755); 468 mkdir("/tmp/obex/", 0755);
469 Contact::writeVCard( beamfile, c ); 469 Contact::writeVCard( beamfile, c );
470 filename = beamfile; 470 filename = beamfile;
471 } 471 }
472 Ir *ir = new Ir( this ); 472 Ir *ir = new Ir( this );
473 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 473 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
474 QString description = c.fullName(); 474 QString description = c.fullName();
475 ir->send( filename, description, "text/x-vCard" ); 475 ir->send( filename, description, "text/x-vCard" );
476} 476}
477 477
478void AddressbookWindow::beamDone( Ir *ir ) 478void AddressbookWindow::beamDone( Ir *ir )
479{ 479{
480 delete ir; 480 delete ir;
481 unlink( beamfile ); 481 unlink( beamfile );
482} 482}
483 483
484 484
485static void parseName( const QString& name, QString *first, QString *middle, 485static void parseName( const QString& name, QString *first, QString *middle,
486 QString * last ) 486 QString * last )
487{ 487{
488 488
489 int comma = name.find ( "," ); 489 int comma = name.find ( "," );
490 QString rest; 490 QString rest;
491 if ( comma > 0 ) { 491 if ( comma > 0 ) {
492 *last = name.left( comma ); 492 *last = name.left( comma );
493 comma++; 493 comma++;
494 while ( comma < int(name.length()) && name[comma] == ' ' ) 494 while ( comma < int(name.length()) && name[comma] == ' ' )
495 comma++; 495 comma++;
496 rest = name.mid( comma ); 496 rest = name.mid( comma );
497 } else { 497 } else {
498 int space = name.findRev( ' ' ); 498 int space = name.findRev( ' ' );
499 *last = name.mid( space+1 ); 499 *last = name.mid( space+1 );
500 rest = name.left( space ); 500 rest = name.left( space );
501 } 501 }
502 int space = rest.find( ' ' ); 502 int space = rest.find( ' ' );
503 if ( space <= 0 ) { 503 if ( space <= 0 ) {
504 *first = rest; 504 *first = rest;
505 } else { 505 } else {
506 *first = rest.left( space ); 506 *first = rest.left( space );
507 *middle = rest.mid( space+1 ); 507 *middle = rest.mid( space+1 );
508 } 508 }
509 509
510} 510}
511 511
512 512
513void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data) 513void AddressbookWindow::appMessage(const QCString &msg, const QByteArray &data)
514{ 514{
515 if (msg == "editPersonal()") { 515 if (msg == "editPersonal()") {
516 editPersonal(); 516 editPersonal();
517 } else if (msg == "editPersonalAndClose()") { 517 } else if (msg == "editPersonalAndClose()") {
518 editPersonal(); 518 editPersonal();
519 close(); 519 close();
520 } else if ( msg == "addContact(QString,QString)" ) { 520 } else if ( msg == "addContact(QString,QString)" ) {
521 QDataStream stream(data,IO_ReadOnly); 521 QDataStream stream(data,IO_ReadOnly);
522 QString name, email; 522 QString name, email;
523 stream >> name >> email; 523 stream >> name >> email;
524 524
525 Contact cnt; 525 Contact cnt;
526 QString fn, mn, ln; 526 QString fn, mn, ln;
527 parseName( name, &fn, &mn, &ln ); 527 parseName( name, &fn, &mn, &ln );
528 // qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() ); 528 // qDebug( " %s - %s - %s", fn.latin1(), mn.latin1(), ln.latin1() );
529 cnt.setFirstName( fn ); 529 cnt.setFirstName( fn );
530 cnt.setMiddleName( mn ); 530 cnt.setMiddleName( mn );
531 cnt.setLastName( ln ); 531 cnt.setLastName( ln );
532 cnt.setEmails( email ); 532 cnt.insertEmails( email );
533 cnt.setDefaultEmail( email ); 533 cnt.setDefaultEmail( email );
534 cnt.setFileAs(); 534 cnt.setFileAs();
535 535
536 if ( bAbEditFirstTime ) { 536 if ( bAbEditFirstTime ) {
537 abEditor = new ContactEditor( cnt, &orderedFields, &slOrderedFields, 537 abEditor = new ContactEditor( cnt, &orderedFields, &slOrderedFields,
538 this, "editor" ); 538 this, "editor" );
539 bAbEditFirstTime = FALSE; 539 bAbEditFirstTime = FALSE;
540 } else { 540 } else {
541 abEditor->setEntry( cnt ); 541 abEditor->setEntry( cnt );
542 } 542 }
543 abView()->init( cnt ); 543 abView()->init( cnt );
544 editEntry( NewEntry ); 544 editEntry( NewEntry );
545 545
546 546
547 547
548 } 548 }
549#if 0 549#if 0
550 else if (msg == "pickAddresses(QCString,QCString,QStringList,...)" ) { 550 else if (msg == "pickAddresses(QCString,QCString,QStringList,...)" ) {
551 QDataStream stream(data,IO_ReadOnly); 551 QDataStream stream(data,IO_ReadOnly);
552 QCString ch,m; 552 QCString ch,m;
553 QStringList types; 553 QStringList types;
554 stream >> ch >> m >> types; 554 stream >> ch >> m >> types;
555 AddressPicker picker(abList,this,0,TRUE); 555 AddressPicker picker(abList,this,0,TRUE);
556 picker.showMaximized(); 556 picker.showMaximized();
557 picker.setChoiceNames(types); 557 picker.setChoiceNames(types);
558 int i=0; 558 int i=0;
559 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) { 559 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) {
560 QStringList sel; 560 QStringList sel;
561 stream >> sel; 561 stream >> sel;
562 picker.setSelection(i++,sel); 562 picker.setSelection(i++,sel);
563 } 563 }
564 picker.showMaximized(); 564 picker.showMaximized();
565 picker.exec(); 565 picker.exec();
566 566
567 // ###### note: contacts may have been added - save here! 567 // ###### note: contacts may have been added - save here!
568 568
569 setCentralWidget(abList); 569 setCentralWidget(abList);
570 QCopEnvelope e(ch,m); 570 QCopEnvelope e(ch,m);
571 i=0; 571 i=0;
572 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) { 572 for (QStringList::ConstIterator it = types.begin(); it!=types.end(); ++it) {
573 QStringList sel = picker.selection(i++); 573 QStringList sel = picker.selection(i++);
574 e << sel; 574 e << sel;
575 } 575 }
576 } 576 }
577#endif 577#endif
578 578
579} 579}
580 580
581void AddressbookWindow::editPersonal() 581void AddressbookWindow::editPersonal()
582{ 582{
583 QString filename = addressbookPersonalVCardName(); 583 QString filename = addressbookPersonalVCardName();
584 Contact me; 584 Contact me;
585 if (QFile::exists(filename)) 585 if (QFile::exists(filename))
586 me = Contact::readVCard( filename )[0]; 586 me = Contact::readVCard( filename )[0];
587 if (bAbEditFirstTime) { 587 if (bAbEditFirstTime) {
588 abEditor = new ContactEditor( me, &orderedFields, &slOrderedFields, 588 abEditor = new ContactEditor( me, &orderedFields, &slOrderedFields,
589 this, "editor" ); 589 this, "editor" );
590 // don't create a new editor every time 590 // don't create a new editor every time
591 bAbEditFirstTime = FALSE; 591 bAbEditFirstTime = FALSE;
592 } else 592 } else
593 abEditor->setEntry( me ); 593 abEditor->setEntry( me );
594 594
595 abEditor->setCaption(tr("Edit My Personal Details")); 595 abEditor->setCaption(tr("Edit My Personal Details"));
596 abEditor->showMaximized(); 596 abEditor->showMaximized();
597 597
598 // fix the foxus... 598 // fix the foxus...
599 abEditor->setNameFocus(); 599 abEditor->setNameFocus();
600 if ( abEditor->exec() ) { 600 if ( abEditor->exec() ) {
601 setFocus(); 601 setFocus();
602 Contact new_personal = abEditor->entry(); 602 Contact new_personal = abEditor->entry();
603 QString fname = addressbookPersonalVCardName(); 603 QString fname = addressbookPersonalVCardName();
604 Contact::writeVCard( fname, new_personal ); 604 Contact::writeVCard( fname, new_personal );
605 abView()->init(new_personal); 605 abView()->init(new_personal);
606 abView()->sync(); 606 abView()->sync();
607 } 607 }
608 abEditor->setCaption( tr("Edit Address") ); 608 abEditor->setCaption( tr("Edit Address") );
609} 609}
610 610
611void AddressbookWindow::slotPersonalView() 611void AddressbookWindow::slotPersonalView()
612{ 612{
613 if (!actionPersonal->isOn()) { 613 if (!actionPersonal->isOn()) {
614 // we just turned it off 614 // we just turned it off
615 setCaption( tr("Contacts") ); 615 setCaption( tr("Contacts") );
616 actionNew->setEnabled(TRUE); 616 actionNew->setEnabled(TRUE);
617 actionTrash->setEnabled(TRUE); 617 actionTrash->setEnabled(TRUE);
618#ifndef MAKE_FOR_SHARP_ROM 618#ifndef MAKE_FOR_SHARP_ROM
619 actionFind->setEnabled(TRUE); 619 actionFind->setEnabled(TRUE);
620#endif 620#endif
621 slotUpdateToolbar(); // maybe some of the above could be moved there 621 slotUpdateToolbar(); // maybe some of the above could be moved there
622 showList(); 622 showList();
623 return; 623 return;
624 } 624 }
625 625
626 // XXX need to disable some QActions. 626 // XXX need to disable some QActions.
627 actionNew->setEnabled(FALSE); 627 actionNew->setEnabled(FALSE);
628 actionTrash->setEnabled(FALSE); 628 actionTrash->setEnabled(FALSE);
diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp
index 39bd63c..ae86ed0 100644
--- a/core/pim/addressbook/contacteditor.cpp
+++ b/core/pim/addressbook/contacteditor.cpp
@@ -18,352 +18,352 @@
18 * 18 *
19 */ 19 */
20 20
21#include "contacteditor.h" 21#include "contacteditor.h"
22#include "addresspicker.h" 22#include "addresspicker.h"
23 23
24#include <qpe/categoryselect.h> 24#include <qpe/categoryselect.h>
25#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26#include <qpe/qpedialog.h> 26#include <qpe/qpedialog.h>
27 27
28#include <qcombobox.h> 28#include <qcombobox.h>
29#include <qlabel.h> 29#include <qlabel.h>
30#include <qtabwidget.h> 30#include <qtabwidget.h>
31#include <qlayout.h> 31#include <qlayout.h>
32#include <qlineedit.h> 32#include <qlineedit.h>
33#include <qmultilineedit.h> 33#include <qmultilineedit.h>
34#include <qscrollview.h> 34#include <qscrollview.h>
35#include <qtoolbutton.h> 35#include <qtoolbutton.h>
36#include <qpushbutton.h> 36#include <qpushbutton.h>
37#include <qmainwindow.h> 37#include <qmainwindow.h>
38#include <qvaluelist.h> 38#include <qvaluelist.h>
39 39
40static inline bool containsAlphaNum( const QString &str ); 40static inline bool containsAlphaNum( const QString &str );
41static inline bool constainsWhiteSpace( const QString &str ); 41static inline bool constainsWhiteSpace( const QString &str );
42 42
43// helper functions, convert our comma delimited list to proper 43// helper functions, convert our comma delimited list to proper
44// file format... 44// file format...
45void parseEmailFrom( const QString &txt, QString &strDefaultEmail, 45void parseEmailFrom( const QString &txt, QString &strDefaultEmail,
46 QString &strAll ); 46 QString &strAll );
47 47
48// helper convert from file format to comma delimited... 48// helper convert from file format to comma delimited...
49void parseEmailTo( const QString &strDefaultEmail, 49void parseEmailTo( const QString &strDefaultEmail,
50 const QString &strOtherEmail, QString &strBack ); 50 const QString &strOtherEmail, QString &strBack );
51 51
52 ContactEditor::ContactEditor(const Contact &entry, 52 ContactEditor::ContactEditor(const Contact &entry,
53 const QValueList<int> *newOrderedValues, 53 const QValueList<int> *newOrderedValues,
54 QStringList *slNewOrdered, 54 QStringList *slNewOrdered,
55 QWidget *parent, 55 QWidget *parent,
56 const char *name, 56 const char *name,
57 WFlags fl ) 57 WFlags fl )
58 : QDialog( parent, name, TRUE, fl ), 58 : QDialog( parent, name, TRUE, fl ),
59 orderedValues( newOrderedValues ), 59 orderedValues( newOrderedValues ),
60 slOrdered( *slNewOrdered ) 60 slOrdered( *slNewOrdered )
61{ 61{
62 62
63 init(); 63 init();
64 initMap(); 64 initMap();
65 setEntry( entry ); 65 setEntry( entry );
66 qDebug("finish"); 66 qDebug("finish");
67} 67}
68 68
69ContactEditor::~ContactEditor() { 69ContactEditor::~ContactEditor() {
70} 70}
71 71
72void ContactEditor::init() { 72void ContactEditor::init() {
73 73
74 useFullName = TRUE; 74 useFullName = TRUE;
75 75
76 int i = 0; 76 int i = 0;
77/** SHut up and stop leaking 77/** SHut up and stop leaking
78 slHomeAddress = new QStringList; 78 slHomeAddress = new QStringList;
79 slBusinessAddress = new QStringList; 79 slBusinessAddress = new QStringList;
80 slChooserNames = new QStringList; 80 slChooserNames = new QStringList;
81 slChooserValues = new QStringList; 81 slChooserValues = new QStringList;
82 82
83 slDynamicEntries = new QStringList; 83 slDynamicEntries = new QStringList;
84*/ 84*/
85 //*slDynamicEntries = *slOrdered; 85 //*slDynamicEntries = *slOrdered;
86 86
87 for (i = 0; i <= 6; i++) { 87 for (i = 0; i <= 6; i++) {
88 slHomeAddress.append( "" ); 88 slHomeAddress.append( "" );
89 slBusinessAddress.append( "" ); 89 slBusinessAddress.append( "" );
90 } 90 }
91 91
92 { 92 {
93 hasGender = FALSE; 93 hasGender = FALSE;
94 hasTitle = FALSE; 94 hasTitle = FALSE;
95 hasCompany = FALSE; 95 hasCompany = FALSE;
96 hasNotes = FALSE; 96 hasNotes = FALSE;
97 hasStreet = FALSE; 97 hasStreet = FALSE;
98 hasStreet2 = FALSE; 98 hasStreet2 = FALSE;
99 hasPOBox = FALSE; 99 hasPOBox = FALSE;
100 hasCity = FALSE; 100 hasCity = FALSE;
101 hasState = FALSE; 101 hasState = FALSE;
102 hasZip = FALSE; 102 hasZip = FALSE;
103 hasCountry = FALSE; 103 hasCountry = FALSE;
104 104
105 QStringList::ConstIterator it = slOrdered.begin(); 105 QStringList::ConstIterator it = slOrdered.begin();
106 for ( i = 0; it != slOrdered.end(); i++, ++it ) { 106 for ( i = 0; it != slOrdered.end(); i++, ++it ) {
107 107
108 if ( (*it) == tr( "Business Fax" ) ) { 108 if ( (*it) == tr( "Business Fax" ) ) {
109 slChooserNames.append( *it ); 109 slChooserNames.append( *it );
110 slChooserValues.append("" ); 110 slChooserValues.append("" );
111 //slDynamicEntries->remove( it ); 111 //slDynamicEntries->remove( it );
112 continue; 112 continue;
113 } 113 }
114 114
115 if ( (*it) == tr( "Home Fax" ) ) { 115 if ( (*it) == tr( "Home Fax" ) ) {
116 slChooserNames.append( *it ); 116 slChooserNames.append( *it );
117 slChooserValues.append("" ); 117 slChooserValues.append("" );
118 //slDynamicEntries->remove( it ); 118 //slDynamicEntries->remove( it );
119 continue; 119 continue;
120 } 120 }
121 121
122 122
123 if ( (*it) == tr( "Business Phone" ) ) { 123 if ( (*it) == tr( "Business Phone" ) ) {
124 slChooserNames.append( *it ); 124 slChooserNames.append( *it );
125 slChooserValues.append( "" ); 125 slChooserValues.append( "" );
126 //slDynamicEntries->remove( it ); 126 //slDynamicEntries->remove( it );
127 continue; 127 continue;
128 } 128 }
129 129
130 if ( (*it) == tr( "Home Phone" ) ) { 130 if ( (*it) == tr( "Home Phone" ) ) {
131 slChooserNames.append( *it ); 131 slChooserNames.append( *it );
132 slChooserValues.append( "" ); 132 slChooserValues.append( "" );
133 //slDynamicEntries->remove( it ); 133 //slDynamicEntries->remove( it );
134 continue; 134 continue;
135 } 135 }
136 136
137/* 137/*
138 if ( (*it).right( 2 ) == tr( "IM" ) ) { 138 if ( (*it).right( 2 ) == tr( "IM" ) ) {
139 slChooserNames.append( *it ); 139 slChooserNames.append( *it );
140 slChooserValues.append( "" ); 140 slChooserValues.append( "" );
141 //slDynamicEntries->remove( it ); 141 //slDynamicEntries->remove( it );
142 continue; 142 continue;
143 } */ 143 } */
144 144
145 if ( (*it) == tr( "Business Mobile" ) ) { 145 if ( (*it) == tr( "Business Mobile" ) ) {
146 slChooserNames.append( *it ); 146 slChooserNames.append( *it );
147 slChooserValues.append( "" ); 147 slChooserValues.append( "" );
148 //slDynamicEntries->remove( it ); 148 //slDynamicEntries->remove( it );
149 continue; 149 continue;
150 } 150 }
151 151
152 if ( (*it) == tr( "Home Mobile" ) ) { 152 if ( (*it) == tr( "Home Mobile" ) ) {
153 slChooserNames.append( *it ); 153 slChooserNames.append( *it );
154 slChooserValues.append( "" ); 154 slChooserValues.append( "" );
155 //slDynamicEntries->remove( it ); 155 //slDynamicEntries->remove( it );
156 continue; 156 continue;
157 } 157 }
158 158
159 159
160 if ( (*it) == tr( "Business WebPage" ) ) { 160 if ( (*it) == tr( "Business WebPage" ) ) {
161 slChooserNames.append( *it ); 161 slChooserNames.append( *it );
162 slChooserValues.append( "" ); 162 slChooserValues.append( "" );
163 //slDynamicEntries->remove( it ); 163 //slDynamicEntries->remove( it );
164 continue; 164 continue;
165 } 165 }
166 166
167 if ( (*it) == tr( "Home Web Page" ) ) { 167 if ( (*it) == tr( "Home Web Page" ) ) {
168 slChooserNames.append( *it ); 168 slChooserNames.append( *it );
169 slChooserValues.append( "" ); 169 slChooserValues.append( "" );
170 //slDynamicEntries->remove( it ); 170 //slDynamicEntries->remove( it );
171 continue; 171 continue;
172 } 172 }
173 173
174 if ( (*it) == tr( "Business Pager" ) ) { 174 if ( (*it) == tr( "Business Pager" ) ) {
175 slChooserNames.append( *it ); 175 slChooserNames.append( *it );
176 slChooserValues.append( "" ); 176 slChooserValues.append( "" );
177 //slDynamicEntries->remove( it ); 177 //slDynamicEntries->remove( it );
178 continue; 178 continue;
179 } 179 }
180 180
181 if ( *it == tr( "Default Email" ) ) { 181 if ( *it == tr( "Default Email" ) ) {
182 slChooserNames.append( *it ); 182 slChooserNames.append( *it );
183 slChooserValues.append( "" ); 183 slChooserValues.append( "" );
184 //slDynamicEntries->remove( it ); 184 //slDynamicEntries->remove( it );
185 continue; 185 continue;
186 } 186 }
187 187
188 if ( *it == tr( "Emails" ) ) { 188 if ( *it == tr( "Emails" ) ) {
189 slChooserNames.append( *it ); 189 slChooserNames.append( *it );
190 slChooserValues.append( "" ); 190 slChooserValues.append( "" );
191 //slDynamicEntries->remove( it ); 191 //slDynamicEntries->remove( it );
192 continue; 192 continue;
193 } 193 }
194 194
195 if ( *it == "Name Title" || *it == "First Name" || *it == "Middle Name" || *it == "Last Name" || *it == "File As" || *it == "Default Email" || *it == "Emails" || *it == "Groups" ) 195 if ( *it == "Name Title" || *it == "First Name" || *it == "Middle Name" || *it == "Last Name" || *it == "File As" || *it == "Default Email" || *it == "Emails" || *it == "Groups" )
196 continue; 196 continue;
197 197
198 if ( *it == tr( "Name Title" ) ) { 198 if ( *it == tr( "Name Title" ) ) {
199 //slDynamicEntries->remove( it ); 199 //slDynamicEntries->remove( it );
200 continue; 200 continue;
201 } 201 }
202 202
203 if ( *it == tr( "First Name" ) ) { 203 if ( *it == tr( "First Name" ) ) {
204 //slDynamicEntries->remove( it ); 204 //slDynamicEntries->remove( it );
205 continue; 205 continue;
206 } 206 }
207 207
208 if ( *it == tr( "Middle Name" ) ) { 208 if ( *it == tr( "Middle Name" ) ) {
209 //slDynamicEntries->remove( it ); 209 //slDynamicEntries->remove( it );
210 continue; 210 continue;
211 } 211 }
212 212
213 if ( *it == tr( "Last Name" ) ) { 213 if ( *it == tr( "Last Name" ) ) {
214 //slDynamicEntries->remove( it ); 214 //slDynamicEntries->remove( it );
215 continue; 215 continue;
216 } 216 }
217 217
218 if ( *it == tr( "Suffix" ) ) { 218 if ( *it == tr( "Suffix" ) ) {
219 //slDynamicEntries->remove( it ); 219 //slDynamicEntries->remove( it );
220 continue; 220 continue;
221 } 221 }
222 222
223 if ( *it == tr( "File As" ) ) { 223 if ( *it == tr( "File As" ) ) {
224 //slDynamicEntries->remove( it ); 224 //slDynamicEntries->remove( it );
225 continue; 225 continue;
226 } 226 }
227 227
228 if ( *it == tr( "Gender" ) ) { 228 if ( *it == tr( "Gender" ) ) {
229 hasGender = TRUE; 229 hasGender = TRUE;
230 //slDynamicEntries->remove( it ); 230 //slDynamicEntries->remove( it );
231 continue; 231 continue;
232 } 232 }
233 233
234 if ( *it == tr( "Job Title" ) ) { 234 if ( *it == tr( "Job Title" ) ) {
235 hasTitle = TRUE; 235 hasTitle = TRUE;
236 //slDynamicEntries->remove( it ); 236 //slDynamicEntries->remove( it );
237 continue; 237 continue;
238 } 238 }
239 239
240 if ( *it == tr( "Company") || *it == tr( "Organization" ) ) { 240 if ( *it == tr( "Company") || *it == tr( "Organization" ) ) {
241 hasCompany = TRUE; 241 hasCompany = TRUE;
242 //slDynamicEntries->remove( it ); 242 //slDynamicEntries->remove( it );
243 continue; 243 continue;
244 } 244 }
245 245
246 if ( *it == tr( "Notes" ) ) { 246 if ( *it == tr( "Notes" ) ) {
247 hasNotes = TRUE; 247 hasNotes = TRUE;
248 //slDynamicEntries->remove( it ); 248 //slDynamicEntries->remove( it );
249 continue; 249 continue;
250 } 250 }
251 251
252 if ( *it == tr( "Groups" ) ) { 252 if ( *it == tr( "Groups" ) ) {
253 //slDynamicEntries->remove( it ); 253 //slDynamicEntries->remove( it );
254 continue; 254 continue;
255 } 255 }
256 256
257 if ( (*it) == tr( "Business Street" ) ) { 257 if ( (*it) == tr( "Business Street" ) ) {
258 hasStreet = TRUE; 258 hasStreet = TRUE;
259 //slDynamicEntries->remove( it ); 259 //slDynamicEntries->remove( it );
260 continue; 260 continue;
261 } 261 }
262 262
263 if ( (*it) == tr( "Home Street" ) ) { 263 if ( (*it) == tr( "Home Street" ) ) {
264 hasStreet = TRUE; 264 hasStreet = TRUE;
265 //slDynamicEntries->remove( it ); 265 //slDynamicEntries->remove( it );
266 continue; 266 continue;
267 } 267 }
268/* 268/*
269 if ( (*it).right( 8 ) == tr( "Street 2" ) ) { 269 if ( (*it).right( 8 ) == tr( "Street 2" ) ) {
270 hasStreet2 = TRUE; 270 hasStreet2 = TRUE;
271 //slDynamicEntries->remove( it ); 271 //slDynamicEntries->remove( it );
272 continue; 272 continue;
273 } 273 }
274 274
275 if ( (*it).right( 8 ) == tr( "P.O. Box" ) ) { 275 if ( (*it).right( 8 ) == tr( "P.O. Box" ) ) {
276 hasPOBox = TRUE; 276 hasPOBox = TRUE;
277 //slDynamicEntries->remove( it ); 277 //slDynamicEntries->remove( it );
278 continue; 278 continue;
279 } */ 279 } */
280 280
281 if ( (*it) == tr( "Business City" ) ) { 281 if ( (*it) == tr( "Business City" ) ) {
282 hasCity = TRUE; 282 hasCity = TRUE;
283 //slDynamicEntries->remove( it ); 283 //slDynamicEntries->remove( it );
284 continue; 284 continue;
285 } 285 }
286 286
287 if ( (*it) == tr( "Business State" ) ) { 287 if ( (*it) == tr( "Business State" ) ) {
288 hasState = TRUE; 288 hasState = TRUE;
289 //slDynamicEntries->remove( it ); 289 //slDynamicEntries->remove( it );
290 continue; 290 continue;
291 } 291 }
292 292
293 if ( (*it) == tr( "Business Zip" ) ) { 293 if ( (*it) == tr( "Business Zip" ) ) {
294 hasZip = TRUE; 294 hasZip = TRUE;
295 //slDynamicEntries->remove( it ); 295 //slDynamicEntries->remove( it );
296 continue; 296 continue;
297 } 297 }
298 298
299 if ( (*it) == tr( "Business Country" ) ) { 299 if ( (*it) == tr( "Business Country" ) ) {
300 hasCountry = TRUE; 300 hasCountry = TRUE;
301 //slDynamicEntries->remove( it ); 301 //slDynamicEntries->remove( it );
302 continue; 302 continue;
303 } 303 }
304 304
305 if ( (*it) == tr( "Home City" ) ) { 305 if ( (*it) == tr( "Home City" ) ) {
306 hasCity = TRUE; 306 hasCity = TRUE;
307 //slDynamicEntries->remove( it ); 307 //slDynamicEntries->remove( it );
308 continue; 308 continue;
309 } 309 }
310 310
311 if ( (*it) == tr( "Home State" ) ) { 311 if ( (*it) == tr( "Home State" ) ) {
312 hasState = TRUE; 312 hasState = TRUE;
313 //slDynamicEntries->remove( it ); 313 //slDynamicEntries->remove( it );
314 continue; 314 continue;
315 } 315 }
316 316
317 if ( (*it) == tr( "Home Zip" ) ) { 317 if ( (*it) == tr( "Home Zip" ) ) {
318 hasZip = TRUE; 318 hasZip = TRUE;
319 //slDynamicEntries->remove( it ); 319 //slDynamicEntries->remove( it );
320 continue; 320 continue;
321 } 321 }
322 322
323 if ( (*it) == tr( "Home Country" ) ) { 323 if ( (*it) == tr( "Home Country" ) ) {
324 hasCountry = TRUE; 324 hasCountry = TRUE;
325 //slDynamicEntries->remove( it ); 325 //slDynamicEntries->remove( it );
326 continue; 326 continue;
327 } 327 }
328 328
329 329
330 slDynamicEntries.append( *it ); 330 slDynamicEntries.append( *it );
331 } 331 }
332 } 332 }
333 333
334 QVBoxLayout *vb = new QVBoxLayout( this ); 334 QVBoxLayout *vb = new QVBoxLayout( this );
335 335
336 tabMain = new QTabWidget( this ); 336 tabMain = new QTabWidget( this );
337 vb->addWidget( tabMain ); 337 vb->addWidget( tabMain );
338 338
339 QWidget *tabViewport = new QWidget ( tabMain ); 339 QWidget *tabViewport = new QWidget ( tabMain );
340 340
341 vb = new QVBoxLayout( tabViewport ); 341 vb = new QVBoxLayout( tabViewport );
342 342
343 svGeneral = new QScrollView( tabViewport ); 343 svGeneral = new QScrollView( tabViewport );
344 vb->addWidget( svGeneral, 0, 0 ); 344 vb->addWidget( svGeneral, 0, 0 );
345 svGeneral->setResizePolicy( QScrollView::AutoOneFit ); 345 svGeneral->setResizePolicy( QScrollView::AutoOneFit );
346 svGeneral->setFrameStyle( QFrame::NoFrame ); 346 svGeneral->setFrameStyle( QFrame::NoFrame );
347 347
348 QWidget *container = new QWidget( svGeneral->viewport() ); 348 QWidget *container = new QWidget( svGeneral->viewport() );
349 svGeneral->addChild( container ); 349 svGeneral->addChild( container );
350 350
351 QGridLayout *gl = new QGridLayout( container, 1, 1, 2, 4 ); 351 QGridLayout *gl = new QGridLayout( container, 1, 1, 2, 4 );
352 gl->setResizeMode( QLayout::FreeResize ); 352 gl->setResizeMode( QLayout::FreeResize );
353 353
354 btnFullName = new QPushButton( tr( "Full Name..." ), container ); 354 btnFullName = new QPushButton( tr( "Full Name..." ), container );
355 gl->addWidget( btnFullName, 0, 0 ); 355 gl->addWidget( btnFullName, 0, 0 );
356 txtFullName = new QLineEdit( container ); 356 txtFullName = new QLineEdit( container );
357 gl->addWidget( txtFullName, 0, 1 ); 357 gl->addWidget( txtFullName, 0, 1 );
358 358
359 QLabel *l = new QLabel( tr( "Job Title" ), container ); 359 QLabel *l = new QLabel( tr( "Job Title" ), container );
360 gl->addWidget( l, 1, 0 ); 360 gl->addWidget( l, 1, 0 );
361 txtJobTitle = new QLineEdit( container ); 361 txtJobTitle = new QLineEdit( container );
362 gl->addWidget( txtJobTitle, 1, 1 ); 362 gl->addWidget( txtJobTitle, 1, 1 );
363 363
364 l = new QLabel( tr( "Organization" ), container ); 364 l = new QLabel( tr( "Organization" ), container );
365 gl->addWidget( l, 2, 0 ); 365 gl->addWidget( l, 2, 0 );
366 txtOrganization = new QLineEdit( container ); 366 txtOrganization = new QLineEdit( container );
367 gl->addWidget( txtOrganization, 2, 1 ); 367 gl->addWidget( txtOrganization, 2, 1 );
368 368
369 cmbChooserField1 = new QComboBox( FALSE, container ); 369 cmbChooserField1 = new QComboBox( FALSE, container );
@@ -941,193 +941,193 @@ void ContactEditor::slotCmbChooser3Change( int index ) {
941 941
942} 942}
943 943
944void ContactEditor::slotCmbChooser4Change( int index ) { 944void ContactEditor::slotCmbChooser4Change( int index ) {
945 945
946 txtChooserField4->setText( slChooserValues[index] ); 946 txtChooserField4->setText( slChooserValues[index] );
947 txtChooserField4->setFocus(); 947 txtChooserField4->setFocus();
948 948
949} 949}
950 950
951void ContactEditor::slotAddressTypeChange( int index ) { 951void ContactEditor::slotAddressTypeChange( int index ) {
952 952
953 if ( index == 0 ) { 953 if ( index == 0 ) {
954 954
955 txtAddress->setText( slBusinessAddress[0] ); 955 txtAddress->setText( slBusinessAddress[0] );
956 //txtAddress2->setText( (*slBusinessAddress)[1] ); 956 //txtAddress2->setText( (*slBusinessAddress)[1] );
957 //txtPOBox->setText( (*slBusinessAddress)[2] ); 957 //txtPOBox->setText( (*slBusinessAddress)[2] );
958 txtCity->setText( slBusinessAddress[3] ); 958 txtCity->setText( slBusinessAddress[3] );
959 txtState->setText( slBusinessAddress[4] ); 959 txtState->setText( slBusinessAddress[4] );
960 txtZip->setText( slBusinessAddress[5] ); 960 txtZip->setText( slBusinessAddress[5] );
961 QLineEdit *txtTmp = cmbCountry->lineEdit(); 961 QLineEdit *txtTmp = cmbCountry->lineEdit();
962 txtTmp->setText( slBusinessAddress[6] ); 962 txtTmp->setText( slBusinessAddress[6] );
963 963
964 } else { 964 } else {
965 965
966 txtAddress->setText( slHomeAddress[0] ); 966 txtAddress->setText( slHomeAddress[0] );
967 //txtAddress2->setText( (*slHomeAddress)[1] ); 967 //txtAddress2->setText( (*slHomeAddress)[1] );
968 //txtPOBox->setText( (*slHomeAddress)[2] ); 968 //txtPOBox->setText( (*slHomeAddress)[2] );
969 txtCity->setText( slHomeAddress[3] ); 969 txtCity->setText( slHomeAddress[3] );
970 txtState->setText( slHomeAddress[4] ); 970 txtState->setText( slHomeAddress[4] );
971 txtZip->setText( slHomeAddress[5] ); 971 txtZip->setText( slHomeAddress[5] );
972 QLineEdit *txtTmp = cmbCountry->lineEdit(); 972 QLineEdit *txtTmp = cmbCountry->lineEdit();
973 txtTmp->setText( slHomeAddress[6] ); 973 txtTmp->setText( slHomeAddress[6] );
974 974
975 } 975 }
976 976
977} 977}
978 978
979void ContactEditor::slotFullNameChange( const QString &textChanged ) { 979void ContactEditor::slotFullNameChange( const QString &textChanged ) {
980 980
981 int index = cmbFileAs->currentItem(); 981 int index = cmbFileAs->currentItem();
982 982
983 cmbFileAs->clear(); 983 cmbFileAs->clear();
984 984
985 cmbFileAs->insertItem( parseName( textChanged, 0 ) ); 985 cmbFileAs->insertItem( parseName( textChanged, 0 ) );
986 cmbFileAs->insertItem( parseName( textChanged, 1 ) ); 986 cmbFileAs->insertItem( parseName( textChanged, 1 ) );
987 cmbFileAs->insertItem( parseName( textChanged, 2 ) ); 987 cmbFileAs->insertItem( parseName( textChanged, 2 ) );
988 cmbFileAs->insertItem( parseName( textChanged, 3 ) ); 988 cmbFileAs->insertItem( parseName( textChanged, 3 ) );
989 989
990 cmbFileAs->setCurrentItem( index ); 990 cmbFileAs->setCurrentItem( index );
991 991
992 useFullName = TRUE; 992 useFullName = TRUE;
993 993
994} 994}
995 995
996void ContactEditor::loadFields() { 996void ContactEditor::loadFields() {
997 997
998 QStringList::ConstIterator it; 998 QStringList::ConstIterator it;
999 QListIterator<QLabel> lit( listName ); 999 QListIterator<QLabel> lit( listName );
1000 for ( it = slDynamicEntries.begin(); *lit; ++lit, ++it) { 1000 for ( it = slDynamicEntries.begin(); *lit; ++lit, ++it) {
1001 (*lit)->setText( *it ); 1001 (*lit)->setText( *it );
1002 } 1002 }
1003} 1003}
1004 1004
1005void ContactEditor::accept() { 1005void ContactEditor::accept() {
1006 1006
1007 if ( isEmpty() ) { 1007 if ( isEmpty() ) {
1008 cleanupFields(); 1008 cleanupFields();
1009 reject(); 1009 reject();
1010 } else { 1010 } else {
1011 saveEntry(); 1011 saveEntry();
1012 cleanupFields(); 1012 cleanupFields();
1013 QDialog::accept(); 1013 QDialog::accept();
1014 } 1014 }
1015 1015
1016} 1016}
1017 1017
1018void ContactEditor::slotNote() { 1018void ContactEditor::slotNote() {
1019 1019
1020 dlgNote->showMaximized(); 1020 dlgNote->showMaximized();
1021 if ( !dlgNote->exec() ) { 1021 if ( !dlgNote->exec() ) {
1022 txtNote->setText( ent.notes() ); 1022 txtNote->setText( ent.notes() );
1023 } 1023 }
1024} 1024}
1025 1025
1026void ContactEditor::slotName() { 1026void ContactEditor::slotName() {
1027 1027
1028 QString tmpName; 1028 QString tmpName;
1029 if (useFullName == TRUE) { 1029 if (useFullName == TRUE) {
1030 txtFirstName->setText( parseName(txtFullName->text(), NAME_F) ); 1030 txtFirstName->setText( parseName(txtFullName->text(), NAME_F) );
1031 txtMiddleName->setText( parseName(txtFullName->text(), NAME_M) ); 1031 txtMiddleName->setText( parseName(txtFullName->text(), NAME_M) );
1032 txtLastName->setText( parseName(txtFullName->text(), NAME_L) ); 1032 txtLastName->setText( parseName(txtFullName->text(), NAME_L) );
1033 txtSuffix->setText( parseName(txtFullName->text(), NAME_S) ); 1033 txtSuffix->setText( parseName(txtFullName->text(), NAME_S) );
1034 } 1034 }
1035 dlgName->showMaximized(); 1035 dlgName->showMaximized();
1036 if ( dlgName->exec() ) { 1036 if ( dlgName->exec() ) {
1037 1037
1038 tmpName = txtFirstName->text() + " " + txtMiddleName->text() + " " + txtLastName->text() + " " + txtSuffix->text(); 1038 tmpName = txtFirstName->text() + " " + txtMiddleName->text() + " " + txtLastName->text() + " " + txtSuffix->text();
1039 txtFullName->setText( tmpName.simplifyWhiteSpace() ); 1039 txtFullName->setText( tmpName.simplifyWhiteSpace() );
1040 slotFullNameChange( txtFullName->text() ); 1040 slotFullNameChange( txtFullName->text() );
1041 useFullName = FALSE; 1041 useFullName = FALSE;
1042 } 1042 }
1043 1043
1044} 1044}
1045 1045
1046void ContactEditor::setNameFocus() { 1046void ContactEditor::setNameFocus() {
1047 1047
1048 txtFullName->setFocus(); 1048 txtFullName->setFocus();
1049 1049
1050} 1050}
1051 1051
1052bool ContactEditor::isEmpty() { 1052bool ContactEditor::isEmpty() {
1053 // Test and see if the record should be saved. 1053 // Test and see if the record should be saved.
1054 // More strict than the original qtopia, needs name or fileas to save 1054 // More strict than the original qtopia, needs name or fileas to save
1055 1055
1056 QString t = txtFullName->text(); 1056 QString t = txtFullName->text();
1057 if ( !t.isEmpty() && containsAlphaNum( t ) ) 1057 if ( !t.isEmpty() && containsAlphaNum( t ) )
1058 return false; 1058 return false;
1059 1059
1060 t = cmbFileAs->currentText(); 1060 t = cmbFileAs->currentText();
1061 if ( !t.isEmpty() && containsAlphaNum( t ) ) 1061 if ( !t.isEmpty() && containsAlphaNum( t ) )
1062 return false; 1062 return false;
1063 1063
1064 return true; 1064 return true;
1065 1065
1066} 1066}
1067 1067
1068QString ContactEditor::parseName( const QString fullName, int type ) { 1068QString ContactEditor::parseName( const QString fullName, int type ) {
1069 1069
1070 QString simplifiedName( fullName.simplifyWhiteSpace() ); 1070 QString simplifiedName( fullName.simplifyWhiteSpace() );
1071 QString strFirstName; 1071 QString strFirstName;
1072 QString strMiddleName; 1072 QString strMiddleName;
1073 QString strLastName; 1073 QString strLastName;
1074 QString strSuffix; 1074 QString strSuffix;
1075 QString strTitle; 1075 QString strTitle;
1076 int commapos; 1076 int commapos;
1077 int spCount; 1077 int spCount;
1078 int spPos; 1078 int spPos;
1079 int spPos2; 1079 int spPos2;
1080 1080
1081 1081
1082 commapos = simplifiedName.find( ',', 0, TRUE); 1082 commapos = simplifiedName.find( ',', 0, TRUE);
1083 spCount = simplifiedName.contains( ' ', TRUE ); 1083 spCount = simplifiedName.contains( ' ', TRUE );
1084 1084
1085 if ( commapos == -1 ) { 1085 if ( commapos == -1 ) {
1086 1086
1087 switch (spCount) { 1087 switch (spCount) {
1088 case 0: 1088 case 0:
1089 //return simplifiedName; 1089 //return simplifiedName;
1090 if (txtLastName->text() != "") { 1090 if (txtLastName->text() != "") {
1091 strLastName = simplifiedName; 1091 strLastName = simplifiedName;
1092 break; 1092 break;
1093 } 1093 }
1094 if (txtMiddleName->text() != "") { 1094 if (txtMiddleName->text() != "") {
1095 strMiddleName = simplifiedName; 1095 strMiddleName = simplifiedName;
1096 break; 1096 break;
1097 } 1097 }
1098 if (txtSuffix->text() != "") { 1098 if (txtSuffix->text() != "") {
1099 strSuffix = simplifiedName; 1099 strSuffix = simplifiedName;
1100 break; 1100 break;
1101 } 1101 }
1102 strFirstName = simplifiedName; 1102 strFirstName = simplifiedName;
1103 break; 1103 break;
1104 1104
1105 case 1: 1105 case 1:
1106 spPos = simplifiedName.find( ' ', 0, TRUE ); 1106 spPos = simplifiedName.find( ' ', 0, TRUE );
1107 strFirstName = simplifiedName.left( spPos ); 1107 strFirstName = simplifiedName.left( spPos );
1108 strLastName = simplifiedName.mid( spPos + 1 ); 1108 strLastName = simplifiedName.mid( spPos + 1 );
1109 break; 1109 break;
1110 1110
1111 case 2: 1111 case 2:
1112 spPos = simplifiedName.find( ' ', 0, TRUE ); 1112 spPos = simplifiedName.find( ' ', 0, TRUE );
1113 strFirstName = simplifiedName.left( spPos ); 1113 strFirstName = simplifiedName.left( spPos );
1114 spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE ); 1114 spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
1115 strMiddleName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos ); 1115 strMiddleName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
1116 strLastName = simplifiedName.mid( spPos2 + 1 ); 1116 strLastName = simplifiedName.mid( spPos2 + 1 );
1117 break; 1117 break;
1118 1118
1119 case 3: 1119 case 3:
1120 spPos = simplifiedName.find( ' ', 0, TRUE ); 1120 spPos = simplifiedName.find( ' ', 0, TRUE );
1121 strFirstName = simplifiedName.left( spPos ); 1121 strFirstName = simplifiedName.left( spPos );
1122 spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE ); 1122 spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
1123 strMiddleName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos ); 1123 strMiddleName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
1124 spPos = simplifiedName.find( ' ', spPos2 + 1, TRUE ); 1124 spPos = simplifiedName.find( ' ', spPos2 + 1, TRUE );
1125 strLastName = simplifiedName.mid( spPos2 + 1, (spPos - 1) - spPos2 ); 1125 strLastName = simplifiedName.mid( spPos2 + 1, (spPos - 1) - spPos2 );
1126 strSuffix = simplifiedName.mid( spPos + 1 ); 1126 strSuffix = simplifiedName.mid( spPos + 1 );
1127 break; 1127 break;
1128 1128
1129 case 4: 1129 case 4:
1130 spPos = simplifiedName.find( ' ', 0, TRUE ); 1130 spPos = simplifiedName.find( ' ', 0, TRUE );
1131 strTitle = simplifiedName.left( spPos ); 1131 strTitle = simplifiedName.left( spPos );
1132 spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE ); 1132 spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
1133 strFirstName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos ); 1133 strFirstName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
@@ -1324,193 +1324,193 @@ void ContactEditor::setEntry( const Contact &entry ) {
1324 1324
1325 if (hasStreet) { 1325 if (hasStreet) {
1326 slHomeAddress[0] = ent.homeStreet(); 1326 slHomeAddress[0] = ent.homeStreet();
1327 slBusinessAddress[0] = ent.businessStreet(); 1327 slBusinessAddress[0] = ent.businessStreet();
1328 } 1328 }
1329/* 1329/*
1330 if (hasStreet2) { 1330 if (hasStreet2) {
1331 (*slHomeAddress)[1] = ent.homeStreet2(); 1331 (*slHomeAddress)[1] = ent.homeStreet2();
1332 (*slBusinessAddress)[1] = ent.businessStreet2(); 1332 (*slBusinessAddress)[1] = ent.businessStreet2();
1333 } 1333 }
1334 1334
1335 if (hasPOBox) { 1335 if (hasPOBox) {
1336 (*slHomeAddress)[2] = ent.homePOBox(); 1336 (*slHomeAddress)[2] = ent.homePOBox();
1337 (*slBusinessAddress)[2] = ent.businessPOBox(); 1337 (*slBusinessAddress)[2] = ent.businessPOBox();
1338 } 1338 }
1339*/ 1339*/
1340 if (hasCity) { 1340 if (hasCity) {
1341 slHomeAddress[3] = ent.homeCity(); 1341 slHomeAddress[3] = ent.homeCity();
1342 slBusinessAddress[3] = ent.businessCity(); 1342 slBusinessAddress[3] = ent.businessCity();
1343 } 1343 }
1344 1344
1345 if (hasState) { 1345 if (hasState) {
1346 slHomeAddress[4] = ent.homeState(); 1346 slHomeAddress[4] = ent.homeState();
1347 slBusinessAddress[4] = ent.businessState(); 1347 slBusinessAddress[4] = ent.businessState();
1348 } 1348 }
1349 1349
1350 if (hasZip) { 1350 if (hasZip) {
1351 slHomeAddress[5] = ent.homeZip(); 1351 slHomeAddress[5] = ent.homeZip();
1352 slBusinessAddress[5] = ent.businessZip(); 1352 slBusinessAddress[5] = ent.businessZip();
1353 } 1353 }
1354 1354
1355 if (hasCountry) { 1355 if (hasCountry) {
1356 slHomeAddress[6] = ent.homeCountry(); 1356 slHomeAddress[6] = ent.homeCountry();
1357 slBusinessAddress[6] = ent.businessCountry(); 1357 slBusinessAddress[6] = ent.businessCountry();
1358 } 1358 }
1359 1359
1360 QStringList::ConstIterator it; 1360 QStringList::ConstIterator it;
1361 QListIterator<QLineEdit> itLE( listValue ); 1361 QListIterator<QLineEdit> itLE( listValue );
1362 for ( it = slDynamicEntries.begin(); it != slDynamicEntries.end(); ++it, ++itLE) { 1362 for ( it = slDynamicEntries.begin(); it != slDynamicEntries.end(); ++it, ++itLE) {
1363 if ( *it == tr("Department") ) 1363 if ( *it == tr("Department") )
1364 (*itLE)->setText( ent.department() ); 1364 (*itLE)->setText( ent.department() );
1365 1365
1366 if ( *it == tr("Company" )) 1366 if ( *it == tr("Company" ))
1367 (*itLE)->setText( ent.company() ); 1367 (*itLE)->setText( ent.company() );
1368 1368
1369 if ( *it == tr("Office" )) 1369 if ( *it == tr("Office" ))
1370 (*itLE)->setText( ent.office() ); 1370 (*itLE)->setText( ent.office() );
1371 1371
1372 if ( *it == tr("Profession" )) 1372 if ( *it == tr("Profession" ))
1373 (*itLE)->setText( ent.profession() ); 1373 (*itLE)->setText( ent.profession() );
1374 1374
1375 if ( *it == tr("Assistant" )) 1375 if ( *it == tr("Assistant" ))
1376 (*itLE)->setText( ent.assistant() ); 1376 (*itLE)->setText( ent.assistant() );
1377 1377
1378 if ( *it == tr("Manager" )) 1378 if ( *it == tr("Manager" ))
1379 (*itLE)->setText( ent.manager() ); 1379 (*itLE)->setText( ent.manager() );
1380 1380
1381 if ( *it == tr("Spouse" )) 1381 if ( *it == tr("Spouse" ))
1382 (*itLE)->setText( ent.spouse() ); 1382 (*itLE)->setText( ent.spouse() );
1383 1383
1384 if ( *it == tr("Birthday" )) 1384 if ( *it == tr("Birthday" ))
1385 (*itLE)->setText( ent.birthday() ); 1385 (*itLE)->setText( ent.birthday() );
1386 1386
1387 if ( *it == tr("Anniversary" )) 1387 if ( *it == tr("Anniversary" ))
1388 (*itLE)->setText( ent.anniversary() ); 1388 (*itLE)->setText( ent.anniversary() );
1389 1389
1390 if ( *it == tr("Nickname" )) 1390 if ( *it == tr("Nickname" ))
1391 (*itLE)->setText( ent.nickname() ); 1391 (*itLE)->setText( ent.nickname() );
1392 1392
1393 if ( *it == tr("Children" )) 1393 if ( *it == tr("Children" ))
1394 (*itLE)->setText( ent.children() ); 1394 (*itLE)->setText( ent.children() );
1395 1395
1396 } 1396 }
1397 1397
1398 QStringList::Iterator itV; 1398 QStringList::Iterator itV;
1399 for ( it = slChooserNames.begin(), itV = slChooserValues.begin(); it != slChooserNames.end(); ++it, ++itV ) { 1399 for ( it = slChooserNames.begin(), itV = slChooserValues.begin(); it != slChooserNames.end(); ++it, ++itV ) {
1400 1400
1401 if ( *it == tr("Business Phone") || *it == tr("Work Phone" )) 1401 if ( *it == tr("Business Phone") || *it == tr("Work Phone" ))
1402 *itV = ent.businessPhone(); 1402 *itV = ent.businessPhone();
1403/* 1403/*
1404 if ( *it == "Business 2 Phone" ) 1404 if ( *it == "Business 2 Phone" )
1405 *itV = ent.business2Phone(); 1405 *itV = ent.business2Phone();
1406*/ 1406*/
1407 if ( *it == tr("Business Fax") || *it == tr("Work Fax" )) 1407 if ( *it == tr("Business Fax") || *it == tr("Work Fax" ))
1408 *itV = ent.businessFax(); 1408 *itV = ent.businessFax();
1409 1409
1410 if ( *it == tr("Business Mobile") || *it == tr("work Mobile" )) 1410 if ( *it == tr("Business Mobile") || *it == tr("work Mobile" ))
1411 *itV = ent.businessMobile(); 1411 *itV = ent.businessMobile();
1412/* 1412/*
1413 if ( *it == "Company Phone" ) 1413 if ( *it == "Company Phone" )
1414 *itV = ent.companyPhone(); 1414 *itV = ent.companyPhone();
1415*/ 1415*/
1416 if ( *it == tr("Default Email" )) 1416 if ( *it == tr("Default Email" ))
1417 *itV = ent.defaultEmail(); 1417 *itV = ent.defaultEmail();
1418 1418
1419 if ( *it == tr("Emails" )) 1419 if ( *it == tr("Emails" ))
1420 *itV = ent.emails(); 1420 *itV = ent.emailList().join(";");
1421 1421
1422 if ( *it == tr("Home Phone" )) 1422 if ( *it == tr("Home Phone" ))
1423 *itV = ent.homePhone(); 1423 *itV = ent.homePhone();
1424/* 1424/*
1425 if ( *it == "Home 2 Phone" ) 1425 if ( *it == "Home 2 Phone" )
1426 *itV = ent.home2Phone(); 1426 *itV = ent.home2Phone();
1427*/ 1427*/
1428 if ( *it == tr("Home Fax" )) 1428 if ( *it == tr("Home Fax" ))
1429 *itV = ent.homeFax(); 1429 *itV = ent.homeFax();
1430 1430
1431 if ( *it == tr("Home Mobile" )) 1431 if ( *it == tr("Home Mobile" ))
1432 *itV = ent.homeMobile(); 1432 *itV = ent.homeMobile();
1433/* 1433/*
1434 if ( *it == "Car Phone" ) 1434 if ( *it == "Car Phone" )
1435 *itV = ent.carPhone(); 1435 *itV = ent.carPhone();
1436 1436
1437 if ( *it == "ISDN Phone" ) 1437 if ( *it == "ISDN Phone" )
1438 *itV = ent.ISDNPhone(); 1438 *itV = ent.ISDNPhone();
1439 1439
1440 if ( *it == "Other Phone" ) 1440 if ( *it == "Other Phone" )
1441 *itV = ent.otherPhone(); 1441 *itV = ent.otherPhone();
1442*/ 1442*/
1443 if ( *it == tr("Business Pager") || *it == tr("Work Pager" )) 1443 if ( *it == tr("Business Pager") || *it == tr("Work Pager" ))
1444 *itV = ent.businessPager(); 1444 *itV = ent.businessPager();
1445/* 1445/*
1446 if ( *it == "Home Pager") 1446 if ( *it == "Home Pager")
1447 *itV = ent.homePager(); 1447 *itV = ent.homePager();
1448 1448
1449 if ( *it == "AIM IM" ) 1449 if ( *it == "AIM IM" )
1450 *itV = ent.AIMIM(); 1450 *itV = ent.AIMIM();
1451 1451
1452 if ( *it == "ICQ IM" ) 1452 if ( *it == "ICQ IM" )
1453 *itV = ent.ICQIM(); 1453 *itV = ent.ICQIM();
1454 1454
1455 if ( *it == "Jabber IM" ) 1455 if ( *it == "Jabber IM" )
1456 *itV = ent.jabberIM(); 1456 *itV = ent.jabberIM();
1457 1457
1458 if ( *it == "MSN IM" ) 1458 if ( *it == "MSN IM" )
1459 *itV = ent.MSNIM(); 1459 *itV = ent.MSNIM();
1460 1460
1461 if ( *it == "Yahoo IM" ) 1461 if ( *it == "Yahoo IM" )
1462 *itV = ent.yahooIM(); 1462 *itV = ent.yahooIM();
1463*/ 1463*/
1464 if ( *it == tr("Home Web Page") ) 1464 if ( *it == tr("Home Web Page") )
1465 *itV = ent.homeWebpage(); 1465 *itV = ent.homeWebpage();
1466 if ( *it == tr("Business WebPage") || *it == tr("Work Web Page") ) 1466 if ( *it == tr("Business WebPage") || *it == tr("Work Web Page") )
1467 *itV = ent.businessWebpage(); 1467 *itV = ent.businessWebpage();
1468 1468
1469 1469
1470 } 1470 }
1471 1471
1472 cmbCat->setCategories( ent.categories(), "Contacts", tr("Contacts") ); 1472 cmbCat->setCategories( ent.categories(), "Contacts", tr("Contacts") );
1473 1473
1474 QString gender = ent.gender(); 1474 QString gender = ent.gender();
1475 cmbGender->setCurrentItem( gender.toInt() ); 1475 cmbGender->setCurrentItem( gender.toInt() );
1476 1476
1477 txtNote->setText( ent.notes() ); 1477 txtNote->setText( ent.notes() );
1478 1478
1479 slotCmbChooser1Change( cmbChooserField1->currentItem() ); 1479 slotCmbChooser1Change( cmbChooserField1->currentItem() );
1480 slotCmbChooser2Change( cmbChooserField2->currentItem() ); 1480 slotCmbChooser2Change( cmbChooserField2->currentItem() );
1481 slotCmbChooser3Change( cmbChooserField3->currentItem() ); 1481 slotCmbChooser3Change( cmbChooserField3->currentItem() );
1482 1482
1483 slotAddressTypeChange( cmbAddress->currentItem() ); 1483 slotAddressTypeChange( cmbAddress->currentItem() );
1484 1484
1485} 1485}
1486 1486
1487void ContactEditor::saveEntry() { 1487void ContactEditor::saveEntry() {
1488 1488
1489 if ( useFullName == TRUE ) { 1489 if ( useFullName == TRUE ) {
1490 txtFirstName->setText( parseName( txtFullName->text(), NAME_F ) ); 1490 txtFirstName->setText( parseName( txtFullName->text(), NAME_F ) );
1491 txtMiddleName->setText( parseName( txtFullName->text(), NAME_M ) ); 1491 txtMiddleName->setText( parseName( txtFullName->text(), NAME_M ) );
1492 txtLastName->setText( parseName( txtFullName->text(), NAME_L ) ); 1492 txtLastName->setText( parseName( txtFullName->text(), NAME_L ) );
1493 txtSuffix->setText( parseName( txtFullName->text(), NAME_S ) ); 1493 txtSuffix->setText( parseName( txtFullName->text(), NAME_S ) );
1494 1494
1495 useFullName = FALSE; 1495 useFullName = FALSE;
1496 } 1496 }
1497 1497
1498 /*if ( ent.firstName() != txtFirstName->text() || 1498 /*if ( ent.firstName() != txtFirstName->text() ||
1499 ent.lastName != txtLastName->text() || 1499 ent.lastName != txtLastName->text() ||
1500 ent.middleName != txtMiddleName->text() ) { 1500 ent.middleName != txtMiddleName->text() ) {
1501 */ 1501 */
1502 ent.setFirstName( txtFirstName->text() ); 1502 ent.setFirstName( txtFirstName->text() );
1503 ent.setLastName( txtLastName->text() ); 1503 ent.setLastName( txtLastName->text() );
1504 ent.setMiddleName( txtMiddleName->text() ); 1504 ent.setMiddleName( txtMiddleName->text() );
1505 ent.setSuffix( txtSuffix->text() ); 1505 ent.setSuffix( txtSuffix->text() );
1506 1506
1507 //} 1507 //}
1508 1508
1509 ent.setFileAs( cmbFileAs->currentText() ); 1509 ent.setFileAs( cmbFileAs->currentText() );
1510 1510
1511 ent.setCategories( cmbCat->currentCategories() ); 1511 ent.setCategories( cmbCat->currentCategories() );
1512 1512
1513 if (hasTitle) 1513 if (hasTitle)
1514 ent.setJobTitle( txtJobTitle->text() ); 1514 ent.setJobTitle( txtJobTitle->text() );
1515 1515
1516 if (hasCompany) 1516 if (hasCompany)
@@ -1525,193 +1525,193 @@ void ContactEditor::saveEntry() {
1525 } 1525 }
1526/* 1526/*
1527 if (hasStreet2) { 1527 if (hasStreet2) {
1528 ent.setHomeStreet2( (*slHomeAddress)[1] ); 1528 ent.setHomeStreet2( (*slHomeAddress)[1] );
1529 ent.setBusinessStreet2( (*slBusinessAddress)[1] ); 1529 ent.setBusinessStreet2( (*slBusinessAddress)[1] );
1530 } 1530 }
1531 1531
1532 if (hasPOBox) { 1532 if (hasPOBox) {
1533 ent.setHomePOBox( (*slHomeAddress)[2] ); 1533 ent.setHomePOBox( (*slHomeAddress)[2] );
1534 ent.setBusinessPOBox( (*slBusinessAddress)[2] ); 1534 ent.setBusinessPOBox( (*slBusinessAddress)[2] );
1535 } 1535 }
1536*/ 1536*/
1537 if (hasCity) { 1537 if (hasCity) {
1538 ent.setHomeCity( slHomeAddress[3] ); 1538 ent.setHomeCity( slHomeAddress[3] );
1539 ent.setBusinessCity( slBusinessAddress[3] ); 1539 ent.setBusinessCity( slBusinessAddress[3] );
1540 } 1540 }
1541 1541
1542 if (hasState) { 1542 if (hasState) {
1543 ent.setHomeState( slHomeAddress[4] ); 1543 ent.setHomeState( slHomeAddress[4] );
1544 ent.setBusinessState( slBusinessAddress[4] ); 1544 ent.setBusinessState( slBusinessAddress[4] );
1545 } 1545 }
1546 1546
1547 if (hasZip) { 1547 if (hasZip) {
1548 ent.setHomeZip( slHomeAddress[5] ); 1548 ent.setHomeZip( slHomeAddress[5] );
1549 ent.setBusinessZip( slBusinessAddress[5] ); 1549 ent.setBusinessZip( slBusinessAddress[5] );
1550 } 1550 }
1551 1551
1552 if (hasCountry) { 1552 if (hasCountry) {
1553 ent.setHomeCountry( slHomeAddress[6] ); 1553 ent.setHomeCountry( slHomeAddress[6] );
1554 ent.setBusinessCountry( slBusinessAddress[6] ); 1554 ent.setBusinessCountry( slBusinessAddress[6] );
1555 } 1555 }
1556 1556
1557 QStringList::ConstIterator it; 1557 QStringList::ConstIterator it;
1558 QListIterator<QLineEdit> itLE( listValue ); 1558 QListIterator<QLineEdit> itLE( listValue );
1559 for ( it = slDynamicEntries.begin(); it != slDynamicEntries.end(); ++it, ++itLE) { 1559 for ( it = slDynamicEntries.begin(); it != slDynamicEntries.end(); ++it, ++itLE) {
1560 if ( *it == tr("Department" )) 1560 if ( *it == tr("Department" ))
1561 ent.setDepartment( (*itLE)->text() ); 1561 ent.setDepartment( (*itLE)->text() );
1562 1562
1563 if ( *it == tr("Company" )) 1563 if ( *it == tr("Company" ))
1564 ent.setCompany( (*itLE)->text() ); 1564 ent.setCompany( (*itLE)->text() );
1565 1565
1566 if ( *it == tr("Office" )) 1566 if ( *it == tr("Office" ))
1567 ent.setOffice( (*itLE)->text() ); 1567 ent.setOffice( (*itLE)->text() );
1568 1568
1569 if ( *it == tr("Profession" )) 1569 if ( *it == tr("Profession" ))
1570 ent.setProfession( (*itLE)->text() ); 1570 ent.setProfession( (*itLE)->text() );
1571 1571
1572 if ( *it == tr("Assistant" )) 1572 if ( *it == tr("Assistant" ))
1573 ent.setAssistant( (*itLE)->text() ); 1573 ent.setAssistant( (*itLE)->text() );
1574 1574
1575 if ( *it == tr("Manager" )) 1575 if ( *it == tr("Manager" ))
1576 ent.setManager( (*itLE)->text() ); 1576 ent.setManager( (*itLE)->text() );
1577 1577
1578 if ( *it == tr("Spouse" )) 1578 if ( *it == tr("Spouse" ))
1579 ent.setSpouse( (*itLE)->text() ); 1579 ent.setSpouse( (*itLE)->text() );
1580 1580
1581 if ( *it == tr("Birthday" )) 1581 if ( *it == tr("Birthday" ))
1582 ent.setBirthday( (*itLE)->text() ); 1582 ent.setBirthday( (*itLE)->text() );
1583 1583
1584 if ( *it == tr("Anniversary" )) 1584 if ( *it == tr("Anniversary" ))
1585 ent.setAnniversary( (*itLE)->text() ); 1585 ent.setAnniversary( (*itLE)->text() );
1586 1586
1587 if ( *it == tr("Nickname" )) 1587 if ( *it == tr("Nickname" ))
1588 ent.setNickname( (*itLE)->text() ); 1588 ent.setNickname( (*itLE)->text() );
1589 1589
1590 if ( *it == tr("Children" )) 1590 if ( *it == tr("Children" ))
1591 ent.setChildren( (*itLE)->text() ); 1591 ent.setChildren( (*itLE)->text() );
1592 1592
1593 } 1593 }
1594 1594
1595 QStringList::ConstIterator itV; 1595 QStringList::ConstIterator itV;
1596 for ( it = slChooserNames.begin(), itV = slChooserValues.begin(); it != slChooserNames.end(); ++it, ++itV ) { 1596 for ( it = slChooserNames.begin(), itV = slChooserValues.begin(); it != slChooserNames.end(); ++it, ++itV ) {
1597 1597
1598 if ( *it == tr("Business Phone") || *it == tr("Work Phone" )) 1598 if ( *it == tr("Business Phone") || *it == tr("Work Phone" ))
1599 ent.setBusinessPhone( *itV ); 1599 ent.setBusinessPhone( *itV );
1600/* 1600/*
1601 if ( *it == tr("Business 2 Phone" ) 1601 if ( *it == tr("Business 2 Phone" )
1602 ent.setBusiness2Phone( *itV ); 1602 ent.setBusiness2Phone( *itV );
1603*/ 1603*/
1604 if ( *it == tr("Business Fax") || *it == tr("Work Fax" )) 1604 if ( *it == tr("Business Fax") || *it == tr("Work Fax" ))
1605 ent.setBusinessFax( *itV ); 1605 ent.setBusinessFax( *itV );
1606 1606
1607 if ( *it == tr("Business Mobile") || *it == tr("Work Mobile" )) 1607 if ( *it == tr("Business Mobile") || *it == tr("Work Mobile" ))
1608 ent.setBusinessMobile( *itV ); 1608 ent.setBusinessMobile( *itV );
1609/* 1609/*
1610 if ( *it == "Company Phone" ) 1610 if ( *it == "Company Phone" )
1611 ent.setCompanyPhone( *itV ); 1611 ent.setCompanyPhone( *itV );
1612*/ 1612*/
1613 //if ( *it == "Default Email" ) 1613 //if ( *it == "Default Email" )
1614 //ent.setDefaultEmail( *itV ); 1614 //ent.setDefaultEmail( *itV );
1615 1615
1616 if ( *it == tr("Emails" )) { 1616 if ( *it == tr("Emails" )) {
1617 QString allemail; 1617 QString allemail;
1618 QString defaultmail; 1618 QString defaultmail;
1619 parseEmailFrom( *itV, defaultmail, allemail ); 1619 parseEmailFrom( *itV, defaultmail, allemail );
1620 ent.setDefaultEmail( defaultmail ); 1620 ent.setDefaultEmail( defaultmail );
1621 ent.setEmails( *itV ); 1621 ent.insertEmails( *itV );
1622 } 1622 }
1623 1623
1624 if ( *it == tr("Home Phone" )) 1624 if ( *it == tr("Home Phone" ))
1625 ent.setHomePhone( *itV ); 1625 ent.setHomePhone( *itV );
1626/* 1626/*
1627 if ( *it == "Home 2 Phone" ) 1627 if ( *it == "Home 2 Phone" )
1628 ent.setHome2Phone( *itV ); 1628 ent.setHome2Phone( *itV );
1629*/ 1629*/
1630 if ( *it == tr("Home Fax" )) 1630 if ( *it == tr("Home Fax" ))
1631 ent.setHomeFax( *itV ); 1631 ent.setHomeFax( *itV );
1632 1632
1633 if ( *it == tr("Home Mobile" )) 1633 if ( *it == tr("Home Mobile" ))
1634 ent.setHomeMobile( *itV ); 1634 ent.setHomeMobile( *itV );
1635/* 1635/*
1636 if ( *it == "Car Phone" ) 1636 if ( *it == "Car Phone" )
1637 ent.setCarPhone( *itV ); 1637 ent.setCarPhone( *itV );
1638 1638
1639 if ( *it == "ISDN Phone" ) 1639 if ( *it == "ISDN Phone" )
1640 ent.setISDNPhone( *itV ); 1640 ent.setISDNPhone( *itV );
1641 1641
1642 if ( *it == "Other Phone" ) 1642 if ( *it == "Other Phone" )
1643 ent.setOtherPhone( *itV ); 1643 ent.setOtherPhone( *itV );
1644*/ 1644*/
1645 if ( *it == tr("Business Pager") || *it == tr("Work Pager") ) 1645 if ( *it == tr("Business Pager") || *it == tr("Work Pager") )
1646 ent.setBusinessPager( *itV ); 1646 ent.setBusinessPager( *itV );
1647/* 1647/*
1648 if ( *it == "Home Pager" ) 1648 if ( *it == "Home Pager" )
1649 ent.setHomePager( *itV ); 1649 ent.setHomePager( *itV );
1650 1650
1651 if ( *it == "AIM IM" ) 1651 if ( *it == "AIM IM" )
1652 ent.setAIMIM( *itV ); 1652 ent.setAIMIM( *itV );
1653 1653
1654 if ( *it == "ICQ IM" ) 1654 if ( *it == "ICQ IM" )
1655 ent.setICQIM( *itV ); 1655 ent.setICQIM( *itV );
1656 1656
1657 if ( *it == "Jabber IM" ) 1657 if ( *it == "Jabber IM" )
1658 ent.setJabberIM( *itV ); 1658 ent.setJabberIM( *itV );
1659 1659
1660 if ( *it == "MSN IM" ) 1660 if ( *it == "MSN IM" )
1661 ent.setMSNIM( *itV ); 1661 ent.setMSNIM( *itV );
1662 1662
1663 if ( *it == "Yahoo IM" ) 1663 if ( *it == "Yahoo IM" )
1664 ent.setYahooIM( *itV ); 1664 ent.setYahooIM( *itV );
1665*/ 1665*/
1666 if ( *it == tr("Home Web Page") ) 1666 if ( *it == tr("Home Web Page") )
1667 ent.setHomeWebpage( *itV ); 1667 ent.setHomeWebpage( *itV );
1668 if ( *it == tr("Business WebPage") || *it == tr("Work Web Page" )) 1668 if ( *it == tr("Business WebPage") || *it == tr("Work Web Page" ))
1669 ent.setBusinessWebpage( *itV ); 1669 ent.setBusinessWebpage( *itV );
1670 1670
1671 1671
1672 } 1672 }
1673 1673
1674 int gender = cmbGender->currentItem(); 1674 int gender = cmbGender->currentItem();
1675 ent.setGender( QString::number( gender ) ); 1675 ent.setGender( QString::number( gender ) );
1676 1676
1677 QString str = txtNote->text(); 1677 QString str = txtNote->text();
1678 if ( !str.isNull() ) 1678 if ( !str.isNull() )
1679 ent.setNotes( str ); 1679 ent.setNotes( str );
1680 1680
1681} 1681}
1682 1682
1683void parseEmailFrom( const QString &txt, QString &strDefaultEmail, 1683void parseEmailFrom( const QString &txt, QString &strDefaultEmail,
1684 QString &strAll ) 1684 QString &strAll )
1685{ 1685{
1686 int where, 1686 int where,
1687 start; 1687 start;
1688 if ( txt.isEmpty() ) 1688 if ( txt.isEmpty() )
1689 return; 1689 return;
1690 // find the first 1690 // find the first
1691 where = txt.find( ',' ); 1691 where = txt.find( ',' );
1692 if ( where < 0 ) { 1692 if ( where < 0 ) {
1693 strDefaultEmail = txt; 1693 strDefaultEmail = txt;
1694 strAll = txt; 1694 strAll = txt;
1695 } else { 1695 } else {
1696 strDefaultEmail = txt.left( where ).stripWhiteSpace(); 1696 strDefaultEmail = txt.left( where ).stripWhiteSpace();
1697 strAll = strDefaultEmail; 1697 strAll = strDefaultEmail;
1698 while ( where > -1 ) { 1698 while ( where > -1 ) {
1699 strAll.append(" "); 1699 strAll.append(" ");
1700 start = where; 1700 start = where;
1701 where = txt.find( ',', where + 1 ); 1701 where = txt.find( ',', where + 1 );
1702 if ( where > - 1 ) 1702 if ( where > - 1 )
1703 strAll.append( txt.mid(start + 1, where - start - 1).stripWhiteSpace() ); 1703 strAll.append( txt.mid(start + 1, where - start - 1).stripWhiteSpace() );
1704 else // grab until the end... 1704 else // grab until the end...
1705 strAll.append( txt.right(txt.length() - start - 1).stripWhiteSpace() ); 1705 strAll.append( txt.right(txt.length() - start - 1).stripWhiteSpace() );
1706 } 1706 }
1707 } 1707 }
1708} 1708}
1709 1709
1710void parseEmailTo( const QString &strDefaultEmail, 1710void parseEmailTo( const QString &strDefaultEmail,
1711 const QString &strOtherEmail, QString &strBack ) 1711 const QString &strOtherEmail, QString &strBack )
1712{ 1712{
1713 // create a comma dilimeted set of emails... 1713 // create a comma dilimeted set of emails...
1714 // use the power of short circuiting... 1714 // use the power of short circuiting...
1715 bool foundDefault = false; 1715 bool foundDefault = false;
1716 QString strTmp; 1716 QString strTmp;
1717 int start = 0; 1717 int start = 0;
diff --git a/core/pim/todo/todotable.h b/core/pim/todo/todotable.h
index 39e00d1..7539df1 100644
--- a/core/pim/todo/todotable.h
+++ b/core/pim/todo/todotable.h
@@ -1,245 +1,248 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 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 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 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 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. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#ifndef TODOTABLE_H 21#ifndef TODOTABLE_H
22#define TODOTABLE_H 22#define TODOTABLE_H
23 23
24#include <qpe/categories.h> 24#include <qpe/categories.h>
25#include <qpe/stringutil.h> 25#include <qpe/stringutil.h>
26//#include <qpe/task.h> 26//#include <qpe/task.h>
27#include <opie/todoevent.h> 27#include <opie/todoevent.h>
28 28
29#include <qtable.h> 29#include <qtable.h>
30#include <qmap.h> 30#include <qmap.h>
31#include <qguardedptr.h> 31#include <qguardedptr.h>
32 32
33class Node; 33class Node;
34class QComboBox; 34class QComboBox;
35class QTimer; 35class QTimer;
36 36
37class CheckItem : public QTableItem 37class CheckItem : public QTableItem
38{ 38{
39public: 39public:
40 CheckItem( QTable *t, const QString &sortkey ); 40 CheckItem( QTable *t, const QString &sortkey );
41 41
42 void setChecked( bool b ); 42 void setChecked( bool b );
43 void toggle(); 43 void toggle();
44 bool isChecked() const; 44 bool isChecked() const;
45 void setKey( const QString &key ) { sortKey = key; } 45 void setKey( const QString &key ) { sortKey = key; }
46 QString key() const; 46 QString key() const;
47 47
48 void paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected ); 48 void paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected );
49 49
50private: 50private:
51 bool checked; 51 bool checked;
52 QString sortKey; 52 QString sortKey;
53}; 53};
54 54
55class ComboItem : public QTableItem 55class ComboItem : public QTableItem
56{ 56{
57public: 57public:
58 ComboItem( QTable *t, EditType et ); 58 ComboItem( QTable *t, EditType et );
59 QWidget *createEditor() const; 59 QWidget *createEditor() const;
60 void setContentFromEditor( QWidget *w ); 60 void setContentFromEditor( QWidget *w );
61 void setText( const QString &s ); 61 void setText( const QString &s );
62 int alignment() const { return Qt::AlignCenter; } 62 int alignment() const { return Qt::AlignCenter; }
63 63
64 QString text() const; 64 QString text() const;
65 65
66private: 66private:
67 QGuardedPtr<QComboBox> cb; 67 QGuardedPtr<QComboBox> cb;
68 68
69}; 69};
70 70
71class TodoTextItem : public QTableItem 71class TodoTextItem : public QTableItem
72{ 72{
73public: 73public:
74 TodoTextItem( QTable *t, const QString & str ) 74 TodoTextItem( QTable *t, const QString & str )
75 :QTableItem( t, QTableItem::Never, str ) {} 75 :QTableItem( t, QTableItem::Never, str ) {}
76 76
77 QString key () const { return Qtopia::buildSortKey( text() ); } 77 QString key () const { return Qtopia::buildSortKey( text() ); }
78}; 78};
79 79
80class DueTextItem : public QTableItem 80class DueTextItem : public QTableItem
81{ 81{
82 public: 82 public:
83 DueTextItem( QTable *t, ToDoEvent *ev ); 83 DueTextItem( QTable *t, ToDoEvent *ev );
84 QString key() const; 84 QString key() const;
85 void setToDoEvent( const ToDoEvent *ev ); 85 void setToDoEvent( const ToDoEvent *ev );
86 void paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected ); 86 void paint( QPainter *p, const QColorGroup &cg, const QRect &cr, bool selected );
87 private: 87 private:
88 int m_off; 88 int m_off;
89 bool m_hasDate:1; 89 bool m_hasDate:1;
90 bool m_completed:1; 90 bool m_completed:1;
91 91
92}; 92};
93 93
94 94
95enum journal_action { ACTION_ADD=0, ACTION_REMOVE, ACTION_REPLACE }; 95enum journal_action { ACTION_ADD=0, ACTION_REMOVE, ACTION_REPLACE };
96 96
97namespace Opie 97namespace Opie
98{ 98{
99class XMLElement; 99class XMLElement;
100}; 100};
101 101
102class TodoTable : public QTable 102class TodoTable : public QTable
103{ 103{
104 Q_OBJECT 104 Q_OBJECT
105 105
106public: 106public:
107 TodoTable( QWidget *parent = 0, const char * name = 0 ); 107 TodoTable( QWidget *parent = 0, const char * name = 0 );
108 void addEntry( const ToDoEvent &todo ); 108 void addEntry( const ToDoEvent &todo );
109 void clearFindRow() { currFindRow = -2; } 109 void clearFindRow() { currFindRow = -2; }
110 110
111 ToDoEvent currentEntry() const; 111 ToDoEvent currentEntry() const;
112 void replaceCurrentEntry( const ToDoEvent &todo, bool fromTableItem = false ); 112 void replaceCurrentEntry( const ToDoEvent &todo, bool fromTableItem = false );
113 113
114 QStringList categories(); 114 QStringList categories();
115 115
116 void setShowCompleted( bool sc ) { showComp = sc; updateVisible(); } 116 void setShowCompleted( bool sc ) { showComp = sc; updateVisible(); }
117 bool showCompleted() const { return showComp; } 117 bool showCompleted() const { return showComp; }
118 118
119 void setShowDeadline (bool sd) {showDeadl = sd; updateVisible();} 119 void setShowDeadline (bool sd) {showDeadl = sd; updateVisible();}
120 bool showDeadline() const { return showDeadl;} 120 bool showDeadline() const { return showDeadl;}
121 121
122 void setShowCategory( const QString &c ) { showCat = c; updateVisible(); } 122 void setShowCategory( const QString &c ) { showCat = c; updateVisible(); }
123 const QString &showCategory() const { return showCat; } 123 const QString &showCategory() const { return showCat; }
124 int showCategoryId() const; 124 int showCategoryId() const;
125 125
126 bool save( const QString &fn ); 126 bool save( const QString &fn );
127 void load( const QString &fn ); 127 void load( const QString &fn );
128 void applyJournal( ); 128 void applyJournal( );
129 void clear(); 129 void clear();
130 void removeCurrentEntry(); 130 void removeCurrentEntry();
131 void removeAllEntries() { clear(); }; 131 void removeAllEntries() { clear(); };
132 //void removeAllEntriesInCategory(const QString &category ); 132 //void removeAllEntriesInCategory(const QString &category );
133 133
134 void setPaintingEnabled( bool e ); 134 void setPaintingEnabled( bool e );
135 135
136 virtual void sortColumn( int col, bool ascending, bool /*wholeRows*/ ); 136 virtual void sortColumn( int col, bool ascending, bool /*wholeRows*/ );
137 137
138// int rowHeight( int ) const; 138// int rowHeight( int ) const;
139// int rowPos( int row ) const; 139// int rowPos( int row ) const;
140// virtual int rowAt( int pos ) const; 140// virtual int rowAt( int pos ) const;
141 141
142signals: 142signals:
143 void signalEdit(); 143 void signalEdit();
144 void signalDoneChanged( bool b ); 144 void signalDoneChanged( bool b );
145 void signalPriorityChanged( int i ); 145 void signalPriorityChanged( int i );
146 void signalShowMenu( const QPoint & ); 146 void signalShowMenu( const QPoint & );
147 void signalNotFound(); 147 void signalNotFound();
148 void signalWrapAround(); 148 void signalWrapAround();
149 void showDetails( const ToDoEvent & ); 149 void showDetails( const ToDoEvent & );
150protected: 150protected:
151 void keyPressEvent( QKeyEvent *e ); 151 void keyPressEvent( QKeyEvent *e );
152 152
153private: 153private:
154 void updateVisible(); 154 void updateVisible();
155 void viewportPaintEvent( QPaintEvent * ); 155 void viewportPaintEvent( QPaintEvent * );
156 void internalAddEntries( QList<ToDoEvent> &list); 156 void internalAddEntries( QList<ToDoEvent> &list);
157 inline void insertIntoTable( ToDoEvent *todo, int row ); 157 inline void insertIntoTable( ToDoEvent *todo, int row );
158 void updateJournal( const ToDoEvent &todo, journal_action action); 158 void updateJournal( const ToDoEvent &todo, journal_action action);
159 void mergeJournal(); 159 void mergeJournal();
160 void journalFreeReplaceEntry( const ToDoEvent &todo, int row ); 160 void journalFreeReplaceEntry( const ToDoEvent &todo, int row );
161 void journalFreeRemoveEntry( int row ); 161 void journalFreeRemoveEntry( int row );
162 inline void realignTable( int row ); 162 inline void realignTable( int row );
163 void loadFile( const QString &strFile); 163 void loadFile( const QString &strFile);
164 164
165private slots: 165private slots:
166 void slotClicked( int row, int col, int button, const QPoint &pos ); 166 void slotClicked( int row, int col, int button, const QPoint &pos );
167 void slotPressed( int row, int col, int button, const QPoint &pos ); 167 void slotPressed( int row, int col, int button, const QPoint &pos );
168 void slotCheckPriority(int row, int col ); 168 void slotCheckPriority(int row, int col );
169 void slotCurrentChanged(int row, int col ); 169 void slotCurrentChanged(int row, int col );
170 void slotDoFind( const QString &findString, bool caseSensetive, 170 void slotDoFind( const QString &findString, bool caseSensetive,
171 bool backwards, int category ); 171 bool backwards, int category );
172 void slotShowMenu(); 172 void slotShowMenu();
173 void rowHeightChanged( int row ); 173 void rowHeightChanged( int row );
174 void slotCheckDay(); // check the day 174 void slotCheckDay(); // check the day
175 175
176private: 176private:
177 friend class TodoWindow; 177 friend class TodoWindow;
178 178
179 QMap<CheckItem*, ToDoEvent *> todoList; 179 QMap<CheckItem*, ToDoEvent *> todoList;
180 QStringList categoryList; 180 QStringList categoryList;
181 bool showComp; 181 bool showComp;
182 QString showCat; 182 QString showCat;
183 QTimer *menuTimer; 183 QTimer *menuTimer;
184 QDate mDay; 184 QDate mDay;
185 QTimer *mDayTimer; // see if the day changed 185 QTimer *mDayTimer; // see if the day changed
186 bool enablePainting; 186 bool enablePainting;
187 Categories mCat; 187 Categories mCat;
188 int currFindRow; 188 int currFindRow;
189 bool showDeadl:1; 189 bool showDeadl:1;
190}; 190};
191 191
192 192
193inline void TodoTable::insertIntoTable( ToDoEvent *todo, int row ) 193inline void TodoTable::insertIntoTable( ToDoEvent *todo, int row )
194{ 194{
195 QString sortKey = (char) ((todo->isCompleted() ? 'a' : 'A') 195 int rows = numRows();
196 + todo->priority() ) 196 ++rows;
197 setNumRows( rows );
198 QString sortKey = (char) ((todo->isCompleted() ? 'a' : 'A')
199 + todo->priority() )
197 + Qtopia::buildSortKey( todo->description() ); 200 + Qtopia::buildSortKey( todo->description() );
198 CheckItem *chk = new CheckItem( this, sortKey ); 201 CheckItem *chk = new CheckItem( this, sortKey );
199 chk->setChecked( todo->isCompleted() ); 202 chk->setChecked( todo->isCompleted() );
200 ComboItem *cmb = new ComboItem( this, QTableItem::WhenCurrent ); 203 ComboItem *cmb = new ComboItem( this, QTableItem::WhenCurrent );
201 cmb->setText( QString::number( todo->priority() ) ); 204 cmb->setText( QString::number( todo->priority() ) );
202 QString sum = todo->summary(); 205 QString sum = todo->summary();
203 QTableItem *ti = new TodoTextItem( this, sum.isEmpty() ? todo->description().left(40).simplifyWhiteSpace() : sum ); 206 QTableItem *ti = new TodoTextItem( this, sum.isEmpty() ? todo->description().left(40).simplifyWhiteSpace() : sum );
204 ti->setReplaceable( false ); 207 ti->setReplaceable( false );
205 208
206 DueTextItem *due = new DueTextItem(this, todo ); 209 DueTextItem *due = new DueTextItem(this, todo );
207 setItem( row, 3, due); 210 setItem( row, 3, due);
208 211
209 setItem( row, 0, chk ); 212 setItem( row, 0, chk );
210 setItem( row, 1, cmb ); 213 setItem( row, 1, cmb );
211 setItem( row, 2, ti ); 214 setItem( row, 2, ti );
212 215
213 216
214 todoList.insert( chk, todo ); 217 todoList.insert( chk, todo );
215} 218}
216 219
217inline void TodoTable::realignTable( int row ) 220inline void TodoTable::realignTable( int row )
218{ 221{
219 QTableItem *ti1, 222 QTableItem *ti1,
220 *ti2, 223 *ti2,
221 *ti3, 224 *ti3,
222 *ti4; 225 *ti4;
223 int totalRows = numRows(); 226 int totalRows = numRows();
224 for ( int curr = row; curr < totalRows - 1; curr++ ) { 227 for ( int curr = row; curr < totalRows - 1; curr++ ) {
225 // this is bad, we must take the item out and then 228 // this is bad, we must take the item out and then
226 // set it. In the end, it behaves no worse (time wise) 229 // set it. In the end, it behaves no worse (time wise)
227 // then the old way of saving the entries to file, clearing 230 // then the old way of saving the entries to file, clearing
228 // the table re-reading in the file and resetting the table 231 // the table re-reading in the file and resetting the table
229 ti1 = item( curr + 1, 0 ); 232 ti1 = item( curr + 1, 0 );
230 ti2 = item( curr + 1, 1 ); 233 ti2 = item( curr + 1, 1 );
231 ti3 = item( curr + 1, 2 ); 234 ti3 = item( curr + 1, 2 );
232 ti4 = item( curr + 1, 3 ); 235 ti4 = item( curr + 1, 3 );
233 takeItem( ti1 ); 236 takeItem( ti1 );
234 takeItem( ti2 ); 237 takeItem( ti2 );
235 takeItem( ti3 ); 238 takeItem( ti3 );
236 takeItem( ti4 ); 239 takeItem( ti4 );
237 setItem( curr, 0, ti1 ); 240 setItem( curr, 0, ti1 );
238 setItem( curr, 1, ti2 ); 241 setItem( curr, 1, ti2 );
239 setItem( curr, 2, ti3 ); 242 setItem( curr, 2, ti3 );
240 setItem( curr, 3, ti4 ); 243 setItem( curr, 3, ti4 );
241 } 244 }
242 setNumRows( totalRows - 1 ); 245 setNumRows( totalRows - 1 );
243} 246}
244 247
245#endif 248#endif