summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--core/pim/addressbook/TODO2
-rw-r--r--core/pim/addressbook/contacteditor.cpp235
-rw-r--r--core/pim/addressbook/version.h4
3 files changed, 79 insertions, 162 deletions
diff --git a/core/pim/addressbook/TODO b/core/pim/addressbook/TODO
index a0d50a3..106747e 100644
--- a/core/pim/addressbook/TODO
+++ b/core/pim/addressbook/TODO
@@ -31,3 +31,2 @@ Urgent:
-- Fix handling of 3 Firstnames
@@ -116 +115,2 @@ Fixed/Ready:
- Default Email-Button: Sometimes not hiding the textfields completely
+- Fix handling of 3 Firstnames
diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp
index d1338f6..7bc5bde 100644
--- a/core/pim/addressbook/contacteditor.cpp
+++ b/core/pim/addressbook/contacteditor.cpp
@@ -159,6 +159,11 @@ void ContactEditor::init() {
- l = new QLabel( tr( "Organization" ), container );
+ l = new QLabel( tr("Suffix"), container );
gl->addWidget( l, 2, 0 );
+ txtSuffix = new QLineEdit( container );
+ gl->addWidget( txtSuffix, 2, 1 );
+
+ l = new QLabel( tr( "Organization" ), container );
+ gl->addWidget( l, 3, 0 );
txtOrganization = new QLineEdit( container );
- gl->addWidget( txtOrganization, 2, 1 );
+ gl->addWidget( txtOrganization, 3, 1 );
@@ -167,3 +172,3 @@ void ContactEditor::init() {
cmbChooserField1->setMaximumWidth( 90 );
- gl->addWidget( cmbChooserField1, 3, 0 );
+ gl->addWidget( cmbChooserField1, 4, 0 );
// Textfield for chooser 1.
@@ -173,3 +178,3 @@ void ContactEditor::init() {
m_widgetStack1 -> addWidget( txtChooserField1, TextField );
- gl->addWidget( m_widgetStack1, 3, 1 );
+ gl->addWidget( m_widgetStack1, 4, 1 );
m_widgetStack1 -> raiseWidget( TextField );
@@ -179,3 +184,3 @@ void ContactEditor::init() {
cmbChooserField2->setMaximumWidth( 90 );
- gl->addWidget( cmbChooserField2, 4, 0 );
+ gl->addWidget( cmbChooserField2, 5, 0 );
// Textfield for chooser 2
@@ -185,3 +190,3 @@ void ContactEditor::init() {
m_widgetStack2 -> addWidget( txtChooserField2, TextField );
- gl->addWidget( m_widgetStack2, 4, 1 );
+ gl->addWidget( m_widgetStack2, 5, 1 );
m_widgetStack2 -> raiseWidget( TextField );
@@ -191,3 +196,3 @@ void ContactEditor::init() {
cmbChooserField3->setMaximumWidth( 90 );
- gl->addWidget( cmbChooserField3, 5, 0 );
+ gl->addWidget( cmbChooserField3, 6, 0 );
// Textfield for chooser 2
@@ -197,3 +202,3 @@ void ContactEditor::init() {
m_widgetStack3 -> addWidget( txtChooserField3, TextField );
- gl->addWidget( m_widgetStack3, 5, 1 );
+ gl->addWidget( m_widgetStack3, 6, 1 );
m_widgetStack3 -> raiseWidget( TextField );
@@ -201,10 +206,10 @@ void ContactEditor::init() {
l = new QLabel( tr( "File As" ), container );
- gl->addWidget( l, 6, 0 );
+ gl->addWidget( l, 7, 0 );
cmbFileAs = new QComboBox( TRUE, container );
- gl->addWidget( cmbFileAs, 6, 1 );
+ gl->addWidget( cmbFileAs, 7, 1 );
labCat = new QLabel( tr( "Category" ), container );
- gl->addWidget( labCat, 7, 0 );
+ gl->addWidget( labCat, 8, 0 );
cmbCat = new CategorySelect( container );
- gl->addWidget( cmbCat, 7, 1 );
+ gl->addWidget( cmbCat, 8, 1 );
labCat->show();
@@ -213,3 +218,3 @@ void ContactEditor::init() {
btnNote = new QPushButton( tr( "Notes..." ), container );
- gl->addWidget( btnNote, 8, 1 );
+ gl->addWidget( btnNote, 9, 1 );
@@ -620,6 +625,6 @@ void ContactEditor::init() {
- l = new QLabel( tr("Suffix"), dlgName );
- gl->addWidget( l, 3, 0 );
- txtSuffix = new QLineEdit( dlgName );
- gl->addWidget( txtSuffix, 3, 1 );
+// l = new QLabel( tr("Suffix"), dlgName );
+// gl->addWidget( l, 3, 0 );
+// txtSuffix = new QLineEdit( dlgName );
+// gl->addWidget( txtSuffix, 3, 1 );
space = new QSpacerItem(1,1,
@@ -1017,2 +1022,4 @@ void ContactEditor::slotFullNameChange( const QString &textChanged ) {
+ qWarning( "ContactEditor::slotFullNameChange( %s )", textChanged.latin1() );
+
int index = cmbFileAs->currentItem();
@@ -1021,6 +1028,6 @@ void ContactEditor::slotFullNameChange( const QString &textChanged ) {
- cmbFileAs->insertItem( parseName( textChanged, 0 ) );
- cmbFileAs->insertItem( parseName( textChanged, 1 ) );
- cmbFileAs->insertItem( parseName( textChanged, 2 ) );
- cmbFileAs->insertItem( parseName( textChanged, 3 ) );
+ cmbFileAs->insertItem( parseName( textChanged, NAME_FL ) );
+ cmbFileAs->insertItem( parseName( textChanged, NAME_FMLS ) );
+ cmbFileAs->insertItem( parseName( textChanged, NAME_LF ) );
+ cmbFileAs->insertItem( parseName( textChanged, NAME_LFM ) );
@@ -1060,3 +1067,3 @@ void ContactEditor::slotName() {
txtLastName->setText( parseName(txtFullName->text(), NAME_L) );
- txtSuffix->setText( parseName(txtFullName->text(), NAME_S) );
+ // txtSuffix->setText( parseName(txtFullName->text(), NAME_S) );
}
@@ -1104,149 +1111,54 @@ QString ContactEditor::parseName( const QString fullName, int type ) {
int commapos;
- int spCount;
- int spPos;
- int spPos2;
+ bool haveLastName = false;
+ qWarning("Fullname: %s", simplifiedName.latin1());
commapos = simplifiedName.find( ',', 0, TRUE);
- spCount = simplifiedName.contains( ' ', TRUE );
+ if ( commapos >= 0 ) {
+ qWarning(" Commapos: %d", commapos );
- if ( commapos == -1 ) {
-
- switch (spCount) {
- case 0:
- //return simplifiedName;
- if (txtLastName->text() != "") {
- strLastName = simplifiedName;
- break;
- }
- if (txtMiddleName->text() != "") {
- strMiddleName = simplifiedName;
- break;
- }
- if (txtSuffix->text() != "") {
- strSuffix = simplifiedName;
- break;
- }
- strFirstName = simplifiedName;
- break;
+ // A comma (",") separates the lastname from one or
+ // many first names. Thus, remove the lastname from the
+ // String and parse the firstnames.
- case 1:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strFirstName = simplifiedName.left( spPos );
- strLastName = simplifiedName.mid( spPos + 1 );
- break;
+ strLastName = simplifiedName.left( commapos );
+ simplifiedName= simplifiedName.mid( commapos + 1 );
+ haveLastName = true;
+ qWarning("Fullname without ',': %s", simplifiedName.latin1());
- case 2:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strFirstName = simplifiedName.left( spPos );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strMiddleName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- strLastName = simplifiedName.mid( spPos2 + 1 );
- break;
+ // If we have any lastname, we should now split all first names.
+ // The first one will be the used as first, the rest as "middle names"
- case 3:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strFirstName = simplifiedName.left( spPos );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strMiddleName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- spPos = simplifiedName.find( ' ', spPos2 + 1, TRUE );
- strLastName = simplifiedName.mid( spPos2 + 1, (spPos - 1) - spPos2 );
- strSuffix = simplifiedName.mid( spPos + 1 );
- break;
+ QStringList allFirstNames = QStringList::split(" ", simplifiedName);
+ QStringList::Iterator it = allFirstNames.begin();
+ strFirstName = *it++;
+ QStringList allSecondNames;
+ for ( ; it != allFirstNames.end(); ++it )
+ allSecondNames.append( *it );
- case 4:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strTitle = simplifiedName.left( spPos );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strFirstName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- spPos = simplifiedName.find( ' ', spPos2 + 1, TRUE );
- strMiddleName = simplifiedName.mid( spPos2 + 1, (spPos - 1) - spPos2 );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strLastName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- strSuffix = simplifiedName.mid( spPos2 + 1 );
- break;
+ strMiddleName = allSecondNames.join(" ");
- default:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strTitle = simplifiedName.left( spPos );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strFirstName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- spPos = simplifiedName.find( ' ', spPos2 + 1, TRUE );
- strMiddleName = simplifiedName.mid( spPos2 + 1, (spPos - 1) - spPos2 );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strLastName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- strSuffix = simplifiedName.mid( spPos2 + 1 );
- break;
- }
} else {
- simplifiedName.replace( commapos, 1, " " );
- simplifiedName = simplifiedName.simplifyWhiteSpace();
-
- switch (spCount) {
- case 0:
- //return simplifiedName;
- if (txtLastName->text() != "") {
- strLastName = simplifiedName;
- break;
- }
- if (txtMiddleName->text() != "") {
- strMiddleName = simplifiedName;
- break;
- }
- if (txtSuffix->text() != "") {
- strSuffix = simplifiedName;
- break;
- }
- strFirstName = simplifiedName;
- break;
-
- case 1:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strLastName = simplifiedName.left( spPos );
- strFirstName = simplifiedName.mid( spPos + 1 );
- break;
- case 2:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strLastName = simplifiedName.left( spPos );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strFirstName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- strMiddleName = simplifiedName.mid( spPos2 + 1 );
- break;
+ // No comma separator used: We use the first word as firstname, the
+ // last as second/lastname and everything in the middle as middlename
- case 3:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strLastName = simplifiedName.left( spPos );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strFirstName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- spPos = simplifiedName.find( ' ', spPos2 + 1, TRUE );
- strMiddleName = simplifiedName.mid( spPos2 + 1, (spPos - 1) - spPos2 );
- strSuffix = simplifiedName.mid( spPos + 1 );
- break;
+ QStringList allNames = QStringList::split(" ", simplifiedName);
+ QStringList::Iterator it = allNames.begin();
+ strFirstName = *it++;
+ QStringList allSecondNames;
+ for ( ; it != --allNames.end(); ++it )
+ allSecondNames.append( *it );
- case 4:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strLastName = simplifiedName.left( spPos );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strTitle = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- spPos = simplifiedName.find( ' ', spPos2 + 1, TRUE );
- strFirstName = simplifiedName.mid( spPos2 + 1, (spPos - 1) - spPos2 );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strMiddleName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- strSuffix = simplifiedName.mid( spPos2 + 1 );
- break;
+ strMiddleName = allSecondNames.join(" ");
+ strLastName = *(--allNames.end());
- default:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strLastName = simplifiedName.left( spPos );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strTitle = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- spPos = simplifiedName.find( ' ', spPos2 + 1, TRUE );
- strFirstName = simplifiedName.mid( spPos2 + 1, (spPos - 1) - spPos );
- spPos2 = simplifiedName.find( ' ', spPos + 1, TRUE );
- strMiddleName = simplifiedName.mid( spPos + 1, (spPos2 - 1) - spPos );
- strSuffix = simplifiedName.mid( spPos2 + 1 );
- break;
- }
}
+
+ qWarning(" strFirstName: %s", strFirstName.latin1());
+ qWarning(" strMiddleName: %s", strMiddleName.latin1());
+ qWarning(" strLastName: %s", strLastName.latin1());
+ qWarning(" strSuffix: %s", strSuffix.latin1());
+ qWarning(" strTitle: %s", strTitle.latin1());
+
switch (type) {
@@ -1338,7 +1250,12 @@ void ContactEditor::setEntry( const OContact &entry ) {
- QString *tmpString = new QString;
- *tmpString = ent.firstName() + " " + ent.middleName() +
- + " " + ent.lastName() + " " + ent.suffix();
+// QString *tmpString = new QString;
+// *tmpString = ent.firstName() + " " + ent.middleName() +
+// + " " + ent.lastName() + " " + ent.suffix();
+// txtFullName->setText( tmpString->simplifyWhiteSpace() );
- txtFullName->setText( tmpString->simplifyWhiteSpace() );
+ // Lastnames with multiple words need to be protected by a comma !
+ if ( ent.lastName().contains( ' ', TRUE ) )
+ txtFullName->setText( ent.lastName() + ", " + ent.firstName() + " " + ent.middleName() );
+ else
+ txtFullName->setText( ent.firstName() + " " + ent.middleName() + " " + ent.lastName() );
@@ -1553,3 +1470,3 @@ void ContactEditor::saveEntry() {
txtLastName->setText( parseName( txtFullName->text(), NAME_L ) );
- txtSuffix->setText( parseName( txtFullName->text(), NAME_S ) );
+ // txtSuffix->setText( parseName( txtFullName->text(), NAME_S ) );
diff --git a/core/pim/addressbook/version.h b/core/pim/addressbook/version.h
index 3becfdc..c2ead05 100644
--- a/core/pim/addressbook/version.h
+++ b/core/pim/addressbook/version.h
@@ -4,4 +4,4 @@
#define MAINVERSION "0"
-#define SUBVERSION "2"
-#define PATCHVERSION "2"
+#define SUBVERSION "3"
+#define PATCHVERSION "0"