summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/TODO2
-rw-r--r--core/pim/addressbook/contacteditor.cpp803
-rw-r--r--core/pim/addressbook/version.h4
3 files changed, 363 insertions, 446 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
@@ -1,116 +1,116 @@
Stuff todo until OPIE 1.0 :
===========================
Feature requests:
-----------------
- Dial by mobile phone by tapping the number..
(Maybe using gsmtool. And we may
add a library class for this)
- dial with dtmfdial in case it's installed and there's no mobile
- 3rd column for 2. Contact
- Implementing additional Views (Phonebook, ...)
- Birthday & Anniversary Reminder
- Beaming of multiple contacts (current list/ by search or by category)
- Configure the letter-picker: lastname/fullname search
- User center of the joypad to switch back from card to listview !
- Cursor-UP/Down: Should additionally scroll cardview if it is too large
(behaviour should be selectable by configuration)
Known Bugs:
-----------
Bugs but not in addressbook:
-----------------------------
- VCARD: If umlaut (äöüß) in address, the parser gets confused..
Urgent:
--------
- Category is on the wrong position after changing to personal and back to normal
( Temporarily workaround: Category is never deactivated.. :S )
-- Fix handling of 3 Firstnames
Important:
----------
- "What's this" should be added (Deleyed after Feature Freeze)
Less important:
---------------
- Reload if contacts were changed externally
- The picker (alphabetical sort widget) should be
placed verticaly or horizontally (configurable)
- Find a smart solution for activating/deactivating the "send email" event
- If new contact is added (contacteditor closed): focus (table, card) to
this entry !
- After search (Started with Return): KeyFocus should be on Tabelle
ContactEditor:
- Redesign of Contacteditor
Should be Fixed (not absolute sure, need further validation):
-------------------------------------------------------------
Fixed/Ready:
-------
- Syncing: abtable not reloaded after sync.
- Find widget should be replaced by something like
qpdf has.
- Adding a configuration dialog
- Picker: Activated letter schould be more visible
- Advanced handling of cursor keys (search..)
- Mail-Icon is missing
- Use opie-mail insted of qt-mail if possible.
- Font menu is invisible using german translation
- Personal contact editor: Disable categories
- "Nonenglish" translation bug has to be fixed.
- contacteditor: Birthday, annyversary, ... : Use Dateselector
- The names of the countries are sorted by there english names, only..
Even if they are translated.. :S
- Cursor keys should work in detail-view (ablabel)
-> Ablabel should be removed and Abtable should be increased with
different views (as started by darwin zins)..
- Use advanced database functions in abtable to decrease
memory footprint and to make everything more easy !
(abtable should store Iterator for selected Category)
- Abtable: Configure Contact column (internally already available,
need configuration)
- Select of primary contact (see #274 on mantis)
- Category-select does not work completely: "Unfiled" is always in listview ..
- Return from Contacteditor: Category resettet to all
- Personal Details not working
- If category changed, the letterpicker should be resetted
- There should be some icons for List and Cardview
- If in Cardview and a category change removes all entries:
There are already entries in Cardview after up/down
- Personal Details: Anniversary zeigt Fantasie-Werte
- Unfiled shown just in Category "All" and "Unfiled".
- After finising search and after Edit: Clear Picker
- After Edit: Table position back to edited entry.
- Optimize Table Update...
- Change MyDialog to Config
- Store position and state of toolbar
- Searchwidget closed: Selected user is jumping
- Wenn suchen beendet, dann dauert das Tabellenupdate (was überhaupt überflüssig ist)
zu lange..
- VCARD: Import of Anniversary does not work correctly (currently disabled)
- Name order selected in "contacteditor" not used in list view.
- OK-Key does not switch from Detailview (ablable) to Listview
- Receiving of beams should open a dialog
- Fix start of opie-mail
- Implement Button Pics
- Add a dialog to accept and optionally edit received contacts by IRDA.
- Language not English (tested with german opie-translation):
1. Configure nicht übersetzt (alles leer).
2. Contacteditor nur teilweise übersetzt.
3. Kategorie-Picker geht nicht.
- Plugin for Today for Birthdays and Anniversaries
- Implement a picker/combo for the default email.
- Overview window cleanup needed..
- Store last settings of combo-boxes
- Personal and Business Web-page is not editable
- Default Email-button: A lot of problems:
If on second tab: The combo chooser is on the top left of the screen ! :(
- 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
@@ -112,151 +112,156 @@ void ContactEditor::init() {
slDynamicEntries.remove("Birthday");
slDynamicEntries.remove("Gender");
// The same with translated fields.. But I will
// use the translation map to avoid mismatches..
QMap<int, QString> translMap = OContactFields::idToTrFields();
trlDynamicEntries.remove( translMap[Qtopia::Anniversary] );
trlDynamicEntries.remove( translMap[Qtopia::Birthday] );
trlDynamicEntries.remove( translMap[Qtopia::Gender] );
// Last Check to be sure..
assert( slDynamicEntries.count() == trlDynamicEntries.count() );
assert( slChooserNames.count() == trlChooserNames.count() );
for (i = 0; i < slChooserNames.count(); i++)
slChooserValues.append("");
QVBoxLayout *vb = new QVBoxLayout( this );
tabMain = new QTabWidget( this );
vb->addWidget( tabMain );
QWidget *tabViewport = new QWidget ( tabMain );
vb = new QVBoxLayout( tabViewport );
svGeneral = new QScrollView( tabViewport );
vb->addWidget( svGeneral, 0, 0 );
svGeneral->setResizePolicy( QScrollView::AutoOneFit );
svGeneral->setFrameStyle( QFrame::NoFrame );
QWidget *container = new QWidget( svGeneral->viewport() );
svGeneral->addChild( container );
QGridLayout *gl = new QGridLayout( container, 1, 1, 2, 4 );
gl->setResizeMode( QLayout::FreeResize );
btnFullName = new QPushButton( tr( "Full Name..." ), container );
gl->addWidget( btnFullName, 0, 0 );
txtFullName = new QLineEdit( container );
gl->addWidget( txtFullName, 0, 1 );
QLabel *l = new QLabel( tr( "Job Title" ), container );
gl->addWidget( l, 1, 0 );
txtJobTitle = new QLineEdit( container );
gl->addWidget( txtJobTitle, 1, 1 );
- 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 );
// Chooser 1
cmbChooserField1 = new QComboBox( FALSE, container );
cmbChooserField1->setMaximumWidth( 90 );
- gl->addWidget( cmbChooserField1, 3, 0 );
+ gl->addWidget( cmbChooserField1, 4, 0 );
// Textfield for chooser 1.
// Now use Widgetstack to contain the textfield and the default-email combo !
m_widgetStack1 = new QWidgetStack( container );
txtChooserField1 = new QLineEdit( m_widgetStack1 );
m_widgetStack1 -> addWidget( txtChooserField1, TextField );
- gl->addWidget( m_widgetStack1, 3, 1 );
+ gl->addWidget( m_widgetStack1, 4, 1 );
m_widgetStack1 -> raiseWidget( TextField );
// Chooser 2
cmbChooserField2 = new QComboBox( FALSE, container );
cmbChooserField2->setMaximumWidth( 90 );
- gl->addWidget( cmbChooserField2, 4, 0 );
+ gl->addWidget( cmbChooserField2, 5, 0 );
// Textfield for chooser 2
// Now use WidgetStack to contain the textfield and the default-email combo!
m_widgetStack2 = new QWidgetStack( container );
txtChooserField2 = new QLineEdit( m_widgetStack2 );
m_widgetStack2 -> addWidget( txtChooserField2, TextField );
- gl->addWidget( m_widgetStack2, 4, 1 );
+ gl->addWidget( m_widgetStack2, 5, 1 );
m_widgetStack2 -> raiseWidget( TextField );
// Chooser 3
cmbChooserField3 = new QComboBox( FALSE, container );
cmbChooserField3->setMaximumWidth( 90 );
- gl->addWidget( cmbChooserField3, 5, 0 );
+ gl->addWidget( cmbChooserField3, 6, 0 );
// Textfield for chooser 2
// Now use WidgetStack to contain the textfield and the default-email combo!
m_widgetStack3 = new QWidgetStack( container );
txtChooserField3 = new QLineEdit( m_widgetStack3 );
m_widgetStack3 -> addWidget( txtChooserField3, TextField );
- gl->addWidget( m_widgetStack3, 5, 1 );
+ gl->addWidget( m_widgetStack3, 6, 1 );
m_widgetStack3 -> raiseWidget( TextField );
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();
cmbCat->show();
btnNote = new QPushButton( tr( "Notes..." ), container );
- gl->addWidget( btnNote, 8, 1 );
+ gl->addWidget( btnNote, 9, 1 );
tabMain->insertTab( tabViewport, tr( "General" ) );
tabViewport = new QWidget ( tabMain );
vb = new QVBoxLayout( tabViewport );
svAddress = new QScrollView( tabViewport );
vb->addWidget( svAddress, 0, 0 );
svAddress->setResizePolicy( QScrollView::AutoOneFit );
svAddress->setFrameStyle( QFrame::NoFrame );
container = new QWidget( svAddress->viewport() );
svAddress->addChild( container );
gl = new QGridLayout( container, 8, 3, 2, 4 ); // row 7 QSpacerItem
cmbAddress = new QComboBox( FALSE, container );
cmbAddress->insertItem( tr( "Business" ) );
cmbAddress->insertItem( tr( "Home" ) );
gl->addMultiCellWidget( cmbAddress, 0, 0, 0, 1 );
l = new QLabel( tr( "Address" ), container );
gl->addWidget( l, 1, 0 );
txtAddress = new QLineEdit( container );
gl->addMultiCellWidget( txtAddress, 1, 1, 1, 2 );
l = new QLabel( tr( "City" ), container );
gl->addWidget( l, 2, 0 );
txtCity = new QLineEdit( container );
gl->addMultiCellWidget( txtCity, 2, 2, 1, 2 );
l = new QLabel( tr( "State" ), container );
gl->addWidget( l, 3, 0 );
txtState = new QLineEdit( container );
gl->addMultiCellWidget( txtState, 3, 3, 1, 2 );
l = new QLabel( tr( "Zip Code" ), container );
gl->addWidget( l, 4, 0 );
txtZip = new QLineEdit( container );
gl->addMultiCellWidget( txtZip, 4, 4, 1, 2 );
l = new QLabel( tr( "Country" ), container );
gl->addWidget( l, 5, 0 );
cmbCountry = new QComboBox( TRUE, container );
cmbCountry->insertItem( tr( "" ) );
cmbCountry->insertItem( tr ( "United States" ) );
cmbCountry->insertItem( tr ( "United Kingdom" ) );
@@ -573,100 +578,100 @@ void ContactEditor::init() {
// Create Labels and lineedit fields for every dynamic entry
QStringList::ConstIterator it = slDynamicEntries.begin();
QMap<QString, int> mapStrToID = OContactFields::untrFieldsToId();
QMap<int, QString> mapIdToStr = OContactFields::idToTrFields();
for (i = counter; it != slDynamicEntries.end(); i++, ++it ) {
if (((*it) == "Anniversary") ||
((*it) == "Birthday")|| ((*it) == "Gender")) continue;
l = new QLabel( mapIdToStr[mapStrToID[*it]].utf8() , container );
listName.append( l );
gl->addWidget( l, i, 0 );
QLineEdit *e = new QLineEdit( container );
listValue.append( e );
gl->addWidget( e, i, 1);
}
// Fill labels with names..
// loadFields();
tabMain->insertTab( tabViewport, tr( "Details" ) );
dlgNote = new QDialog( this, "Note Dialog", TRUE );
dlgNote->setCaption( tr("Enter Note") );
QVBoxLayout *vbNote = new QVBoxLayout( dlgNote );
txtNote = new QMultiLineEdit( dlgNote );
vbNote->addWidget( txtNote );
connect( btnNote, SIGNAL(clicked()), this, SLOT(slotNote()) );
dlgName = new QDialog( this, "Name Dialog", TRUE );
dlgName->setCaption( tr("Edit Name") );
gl = new QGridLayout( dlgName, 5, 2, 2, 3 );
l = new QLabel( tr("First Name"), dlgName );
gl->addWidget( l, 0, 0 );
txtFirstName = new QLineEdit( dlgName );
gl->addWidget( txtFirstName, 0, 1 );
l = new QLabel( tr("Middle Name"), dlgName );
gl->addWidget( l, 1, 0 );
txtMiddleName = new QLineEdit( dlgName );
gl->addWidget( txtMiddleName, 1, 1 );
l = new QLabel( tr("Last Name"), dlgName );
gl->addWidget( l, 2, 0 );
txtLastName = new QLineEdit( dlgName );
gl->addWidget( txtLastName, 2, 1 );
- 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,
QSizePolicy::Maximum,
QSizePolicy::MinimumExpanding );
gl->addItem( space, 4, 0 );
cmbChooserField1->insertStringList( trlChooserNames );
cmbChooserField2->insertStringList( trlChooserNames );
cmbChooserField3->insertStringList( trlChooserNames );
cmbChooserField4->insertStringList( trlChooserNames );
cmbChooserField1->setCurrentItem( 0 );
cmbChooserField2->setCurrentItem( 1 );
cmbChooserField3->setCurrentItem( 2 );
connect( btnFullName, SIGNAL(clicked()), this, SLOT(slotName()) );
connect( txtFullName, SIGNAL(textChanged(const QString &)), this, SLOT(slotFullNameChange(const QString &)) );
connect( txtChooserField1, SIGNAL(textChanged(const QString &)),
this, SLOT(slotChooser1Change(const QString &)) );
connect( txtChooserField2, SIGNAL(textChanged(const QString &)),
this, SLOT(slotChooser2Change(const QString &)) );
connect( txtChooserField3, SIGNAL(textChanged(const QString &)),
this, SLOT(slotChooser3Change(const QString &)) );
connect( txtChooserField4, SIGNAL(textChanged(const QString &)),
this, SLOT(slotChooser4Change(const QString &)) );
connect( txtAddress, SIGNAL(textChanged(const QString &)),
this, SLOT(slotAddressChange(const QString &)) );
connect( txtCity, SIGNAL(textChanged(const QString &)),
this, SLOT(slotCityChange(const QString &)) );
connect( txtState, SIGNAL(textChanged(const QString &)),
this, SLOT(slotStateChange(const QString &)) );
connect( txtZip, SIGNAL(textChanged(const QString &)),
this, SLOT(slotZipChange(const QString &)) );
connect( cmbCountry, SIGNAL(textChanged(const QString &)),
this, SLOT(slotCountryChange(const QString &)) );
connect( cmbCountry, SIGNAL(activated(const QString &)),
this, SLOT(slotCountryChange(const QString &)) );
connect( cmbChooserField1, SIGNAL(activated(int)),
this, SLOT(slotCmbChooser1Change(int)) );
connect( cmbChooserField2, SIGNAL(activated(int)),
this, SLOT(slotCmbChooser2Change(int)) );
connect( cmbChooserField3, SIGNAL(activated(int)),
this, SLOT(slotCmbChooser3Change(int)) );
connect( cmbChooserField4, SIGNAL(activated(int)),
this, SLOT(slotCmbChooser4Change(int)) );
connect( cmbAddress, SIGNAL(activated(int)),
this, SLOT(slotAddressTypeChange(int)) );
@@ -970,848 +975,760 @@ void ContactEditor::slotCmbChooser3Change( int index ) {
}
void ContactEditor::slotCmbChooser4Change( int index ) {
qWarning("ContactEditor::slotCmbChooser4Change( %d )", index);
if ( !cmbChooserChange( cmbChooserField4->currentItem(), m_widgetStack4, 4) ){
txtChooserField4->setText( slChooserValues[index] );
txtChooserField4->setFocus();
}
}
void ContactEditor::slotAddressTypeChange( int index ) {
if ( !initializing )
contactfields.setFieldOrder( 4, index );
if ( index == 0 ) {
txtAddress->setText( slBusinessAddress[0] );
//txtAddress2->setText( (*slBusinessAddress)[1] );
//txtPOBox->setText( (*slBusinessAddress)[2] );
txtCity->setText( slBusinessAddress[3] );
txtState->setText( slBusinessAddress[4] );
txtZip->setText( slBusinessAddress[5] );
QLineEdit *txtTmp = cmbCountry->lineEdit();
txtTmp->setText( slBusinessAddress[6] );
} else {
txtAddress->setText( slHomeAddress[0] );
//txtAddress2->setText( (*slHomeAddress)[1] );
//txtPOBox->setText( (*slHomeAddress)[2] );
txtCity->setText( slHomeAddress[3] );
txtState->setText( slHomeAddress[4] );
txtZip->setText( slHomeAddress[5] );
QLineEdit *txtTmp = cmbCountry->lineEdit();
txtTmp->setText( slHomeAddress[6] );
}
}
void ContactEditor::slotFullNameChange( const QString &textChanged ) {
+ qWarning( "ContactEditor::slotFullNameChange( %s )", textChanged.latin1() );
+
int index = cmbFileAs->currentItem();
cmbFileAs->clear();
- 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 ) );
cmbFileAs->setCurrentItem( index );
useFullName = true;
}
void ContactEditor::accept() {
if ( isEmpty() ) {
cleanupFields();
reject();
} else {
saveEntry();
cleanupFields();
QDialog::accept();
}
}
void ContactEditor::slotNote() {
dlgNote->showMaximized();
if ( !dlgNote->exec() ) {
txtNote->setText( ent.notes() );
}
}
void ContactEditor::slotName() {
QString tmpName;
if (useFullName) {
txtFirstName->setText( parseName(txtFullName->text(), NAME_F) );
txtMiddleName->setText( parseName(txtFullName->text(), NAME_M) );
txtLastName->setText( parseName(txtFullName->text(), NAME_L) );
- txtSuffix->setText( parseName(txtFullName->text(), NAME_S) );
+ // txtSuffix->setText( parseName(txtFullName->text(), NAME_S) );
}
dlgName->showMaximized();
if ( dlgName->exec() ) {
tmpName = txtFirstName->text() + " " + txtMiddleName->text() + " " + txtLastName->text() + " " + txtSuffix->text();
txtFullName->setText( tmpName.simplifyWhiteSpace() );
slotFullNameChange( txtFullName->text() );
useFullName = false;
}
}
void ContactEditor::setNameFocus() {
txtFullName->setFocus();
}
bool ContactEditor::isEmpty() {
// Test and see if the record should be saved.
// More strict than the original qtopia, needs name or fileas to save
QString t = txtFullName->text();
if ( !t.isEmpty() && containsAlphaNum( t ) )
return false;
t = cmbFileAs->currentText();
if ( !t.isEmpty() && containsAlphaNum( t ) )
return false;
return true;
}
QString ContactEditor::parseName( const QString fullName, int type ) {
QString simplifiedName( fullName.simplifyWhiteSpace() );
QString strFirstName;
QString strMiddleName;
QString strLastName;
QString strSuffix;
QString strTitle;
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 == -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;
-
- case 1:
- spPos = simplifiedName.find( ' ', 0, TRUE );
- strFirstName = simplifiedName.left( spPos );
- strLastName = simplifiedName.mid( spPos + 1 );
- break;
-
- 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;
-
- 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;
-
- 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;
-
- 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;
-
- 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;
-
- 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;
-
- 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;
- }
- }
- switch (type) {
- case NAME_FL:
- return strFirstName + " " + strLastName;
-
- case NAME_LF:
- return strLastName + ", " + strFirstName;
-
- case NAME_LFM:
- return strLastName + ", " + strFirstName + " " + strMiddleName;
+ if ( commapos >= 0 ) {
+ qWarning(" Commapos: %d", commapos );
+
+ // A comma (",") separates the lastname from one or
+ // many first names. Thus, remove the lastname from the
+ // String and parse the firstnames.
+
+ strLastName = simplifiedName.left( commapos );
+ simplifiedName= simplifiedName.mid( commapos + 1 );
+ haveLastName = true;
+ qWarning("Fullname without ',': %s", simplifiedName.latin1());
+
+ // 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"
+
+ QStringList allFirstNames = QStringList::split(" ", simplifiedName);
+ QStringList::Iterator it = allFirstNames.begin();
+ strFirstName = *it++;
+ QStringList allSecondNames;
+ for ( ; it != allFirstNames.end(); ++it )
+ allSecondNames.append( *it );
+
+ strMiddleName = allSecondNames.join(" ");
- case NAME_FMLS:
- return strFirstName + " " + strMiddleName + " " + strLastName + " " + strSuffix;
+ } else {
- case NAME_F:
- return strFirstName;
+ // No comma separator used: We use the first word as firstname, the
+ // last as second/lastname and everything in the middle as middlename
- case NAME_M:
- return strMiddleName;
+ QStringList allNames = QStringList::split(" ", simplifiedName);
+ QStringList::Iterator it = allNames.begin();
+ strFirstName = *it++;
+ QStringList allSecondNames;
+ for ( ; it != --allNames.end(); ++it )
+ allSecondNames.append( *it );
+
+ strMiddleName = allSecondNames.join(" ");
+ strLastName = *(--allNames.end());
- case NAME_L:
- return strLastName;
+ }
- case NAME_S:
- return strSuffix;
+ 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) {
+ case NAME_FL:
+ return strFirstName + " " + strLastName;
+
+ case NAME_LF:
+ return strLastName + ", " + strFirstName;
+
+ case NAME_LFM:
+ return strLastName + ", " + strFirstName + " " + strMiddleName;
+
+ case NAME_FMLS:
+ return strFirstName + " " + strMiddleName + " " + strLastName + " " + strSuffix;
+
+ case NAME_F:
+ return strFirstName;
+
+ case NAME_M:
+ return strMiddleName;
+
+ case NAME_L:
+ return strLastName;
+
+ case NAME_S:
+ return strSuffix;
+
}
return QString::null;
}
void ContactEditor::cleanupFields() {
QStringList::Iterator it = slChooserValues.begin();
-
+
for ( int i = 0; it != slChooserValues.end(); i++, ++it ) {
(*it) = "";
}
-
+
for ( int i = 0; i < 7; i++ ) {
slHomeAddress[i] = "";
slBusinessAddress[i] = "";
}
-
+
QListIterator<QLineEdit> itLV( listValue );
for ( ; itLV.current(); ++itLV ) {
(*itLV)->setText( "" );
}
txtFirstName->setText("");
txtMiddleName->setText("");
txtLastName->setText("");
txtSuffix->setText("");
txtNote->setText("");
txtFullName->setText("");
txtJobTitle->setText("");
txtOrganization->setText("");
txtChooserField1->setText("");
txtChooserField2->setText("");
txtChooserField3->setText("");
txtAddress->setText("");
txtCity->setText("");
txtState->setText("");
txtZip->setText("");
QLineEdit *txtTmp = cmbCountry->lineEdit();
txtTmp->setText("");
txtTmp = cmbFileAs->lineEdit();
txtTmp->setText("");
-
+
}
void ContactEditor::setEntry( const OContact &entry ) {
-
+
initializing = true;
-
+
cleanupFields();
-
+
ent = entry;
-
+
emails = QStringList(ent.emailList());
defaultEmail = ent.defaultEmail();
if (defaultEmail.isEmpty()) defaultEmail = emails[0];
qDebug("default email=%s",defaultEmail.latin1());
-
+
useFullName = false;
txtFirstName->setText( ent.firstName() );
txtMiddleName->setText( ent.middleName() );
txtLastName->setText( ent.lastName() );
txtSuffix->setText( ent.suffix() );
-
- QString *tmpString = new QString;
- *tmpString = ent.firstName() + " " + ent.middleName() +
- + " " + ent.lastName() + " " + ent.suffix();
-
- txtFullName->setText( tmpString->simplifyWhiteSpace() );
-
+
+// QString *tmpString = new QString;
+// *tmpString = ent.firstName() + " " + ent.middleName() +
+// + " " + ent.lastName() + " " + ent.suffix();
+// 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() );
+
cmbFileAs->setEditText( ent.fileAs() );
-
+
// if (hasTitle)
- txtJobTitle->setText( ent.jobTitle() );
-
- // if (hasCompany)
- txtOrganization->setText( ent.company() );
-
- // if (hasNotes)
- txtNote->setText( ent.notes() );
-
- // if (hasStreet) {
- slHomeAddress[0] = ent.homeStreet();
- slBusinessAddress[0] = ent.businessStreet();
- // }
-
-// if (hasCity) {
- slHomeAddress[3] = ent.homeCity();
- slBusinessAddress[3] = ent.businessCity();
-//}
-
-//if (hasState) {
- slHomeAddress[4] = ent.homeState();
- slBusinessAddress[4] = ent.businessState();
-//}
-
-//if (hasZip) {
- slHomeAddress[5] = ent.homeZip();
- slBusinessAddress[5] = ent.businessZip();
-//}
-
-//if (hasCountry) {
- slHomeAddress[6] = ent.homeCountry();
- slBusinessAddress[6] = ent.businessCountry();
-//}
-
+ txtJobTitle->setText( ent.jobTitle() );
+
+ // if (hasCompany)
+ txtOrganization->setText( ent.company() );
+
+ // if (hasNotes)
+ txtNote->setText( ent.notes() );
+
+ // if (hasStreet) {
+ slHomeAddress[0] = ent.homeStreet();
+ slBusinessAddress[0] = ent.businessStreet();
+ // }
+
+ // if (hasCity) {
+ slHomeAddress[3] = ent.homeCity();
+ slBusinessAddress[3] = ent.businessCity();
+ //}
+
+ //if (hasState) {
+ slHomeAddress[4] = ent.homeState();
+ slBusinessAddress[4] = ent.businessState();
+ //}
+
+ //if (hasZip) {
+ slHomeAddress[5] = ent.homeZip();
+ slBusinessAddress[5] = ent.businessZip();
+ //}
+
+ //if (hasCountry) {
+ slHomeAddress[6] = ent.homeCountry();
+ slBusinessAddress[6] = ent.businessCountry();
+ //}
+
QStringList::ConstIterator it;
QListIterator<QLineEdit> itLE( listValue );
for ( it = slDynamicEntries.begin(); itLE.current()/* != slDynamicEntries.end()*/; ++it, ++itLE) {
-
+
qWarning(" Filling dynamic Field: %s", (*it).latin1() );
-
+
if ( *it == "Department" )
(*itLE)->setText( ent.department() );
-
+
if ( *it == "Company" )
(*itLE)->setText( ent.company() );
-
+
if ( *it == "Office" )
(*itLE)->setText( ent.office() );
-
+
if ( *it == "Profession" )
(*itLE)->setText( ent.profession() );
-
+
if ( *it == "Assistant" )
(*itLE)->setText( ent.assistant() );
-
+
if ( *it == "Manager" )
(*itLE)->setText( ent.manager() );
-
+
if ( *it == "Spouse" )
(*itLE)->setText( ent.spouse() );
-
+
if ( *it == "Nickname" ){
qWarning("**** Nichname: %s", ent.nickname().latin1() );
(*itLE)->setText( ent.nickname() );
}
-
+
if ( *it == "Children" )
(*itLE)->setText( ent.children() );
-
+
}
-
+
QStringList::Iterator itV;
for ( it = slChooserNames.begin(), itV = slChooserValues.begin(); it != slChooserNames.end(); ++it, ++itV ) {
-
+
if ( ( *it == "Business Phone") || ( *it == "Work Phone" ) )
*itV = ent.businessPhone();
-/*
- if ( *it == "Business 2 Phone" )
- *itV = ent.business2Phone();
-*/
+ /*
+ if ( *it == "Business 2 Phone" )
+ *itV = ent.business2Phone();
+ */
if ( ( *it == "Business Fax") || ( *it == "Work Fax" ) )
*itV = ent.businessFax();
-
+
if ( ( *it == "Business Mobile" ) || ( *it == "work Mobile" ) )
*itV = ent.businessMobile();
-/*
- if ( *it == "Company Phone" )
- *itV = ent.companyPhone();
-*/
+ /*
+ if ( *it == "Company Phone" )
+ *itV = ent.companyPhone();
+ */
if ( *it == "Default Email" )
*itV = ent.defaultEmail();
-
+
if ( *it == "Emails" )
*itV = ent.emailList().join(", "); // :SX
-
+
if ( *it == "Home Phone" )
*itV = ent.homePhone();
-/*
- if ( *it == "Home 2 Phone" )
- *itV = ent.home2Phone();
-*/
+ /*
+ if ( *it == "Home 2 Phone" )
+ *itV = ent.home2Phone();
+ */
if ( *it == "Home Fax" )
*itV = ent.homeFax();
-
+
if ( *it == "Home Mobile" )
*itV = ent.homeMobile();
-/*
- if ( *it == "Car Phone" )
- *itV = ent.carPhone();
-
- if ( *it == "ISDN Phone" )
- *itV = ent.ISDNPhone();
-
- if ( *it == "Other Phone" )
- *itV = ent.otherPhone();
-*/
+ /*
+ if ( *it == "Car Phone" )
+ *itV = ent.carPhone();
+
+ if ( *it == "ISDN Phone" )
+ *itV = ent.ISDNPhone();
+
+ if ( *it == "Other Phone" )
+ *itV = ent.otherPhone();
+ */
if ( ( *it == "Business Pager" ) || ( *it == "Work Pager" ) )
*itV = ent.businessPager();
-/*
- if ( *it == "Home Pager")
- *itV = ent.homePager();
-
- if ( *it == "AIM IM" )
- *itV = ent.AIMIM();
-
- if ( *it == "ICQ IM" )
- *itV = ent.ICQIM();
-
- if ( *it == "Jabber IM" )
- *itV = ent.jabberIM();
-
- if ( *it == "MSN IM" )
- *itV = ent.MSNIM();
-
- if ( *it == "Yahoo IM" )
- *itV = ent.yahooIM();
-*/
+ /*
+ if ( *it == "Home Pager")
+ *itV = ent.homePager();
+
+ if ( *it == "AIM IM" )
+ *itV = ent.AIMIM();
+
+ if ( *it == "ICQ IM" )
+ *itV = ent.ICQIM();
+
+ if ( *it == "Jabber IM" )
+ *itV = ent.jabberIM();
+
+ if ( *it == "MSN IM" )
+ *itV = ent.MSNIM();
+
+ if ( *it == "Yahoo IM" )
+ *itV = ent.yahooIM();
+ */
if ( *it == "Home Web Page" )
*itV = ent.homeWebpage();
-
+
if ( ( *it == "Business WebPage" ) || ( *it == "Work Web Page" ) )
*itV = ent.businessWebpage();
-
-
+
+
}
-
+
cmbCat->setCategories( ent.categories(), "Contacts", tr("Contacts") );
-
+
QString gender = ent.gender();
cmbGender->setCurrentItem( gender.toInt() );
-
+
txtNote->setText( ent.notes() );
-
+
slotAddressTypeChange( cmbAddress->currentItem() );
-
+
// Calling "show()" to arrange all widgets. Otherwise we will get
// a wrong position of the textfields and are unable to put our
// default-email combo over it.. This is very ugly !
// Does anybody has a better solution ?
// Basically we should rethink the strategy to hide
// a textfield with overwriting.. (se)
show();
-
+
// Get combo-settings from contact and set preset..
contactfields.loadFromRecord( ent );
cmbChooserField1->setCurrentItem( contactfields.getFieldOrder(0, 7) );
cmbChooserField2->setCurrentItem( contactfields.getFieldOrder(1, 9) );
cmbChooserField3->setCurrentItem( contactfields.getFieldOrder(2, 0) );
cmbChooserField4->setCurrentItem( contactfields.getFieldOrder(3, 6) );
cmbAddress->setCurrentItem( contactfields.getFieldOrder(4, 1) );
slotCmbChooser1Change( cmbChooserField1->currentItem() );
slotCmbChooser2Change( cmbChooserField2->currentItem() );
slotCmbChooser3Change( cmbChooserField3->currentItem() );
slotCmbChooser4Change( cmbChooserField4->currentItem() );
slotAddressTypeChange( cmbAddress->currentItem() );
-
+
updateDatePicker();
-
+
initializing = false;
}
void ContactEditor::updateDatePicker()
{
// Set DatePicker
if ( !ent.birthday().isNull() ){
birthdayButton->setText( TimeString::numberDateString( ent.birthday() ) );
birthdayPicker->setDate( ent.birthday() );
} else
birthdayButton->setText( tr ("Unknown") );
-
+
if ( !ent.anniversary().isNull() ){
anniversaryButton->setText( TimeString::numberDateString( ent.anniversary() ) );
anniversaryPicker->setDate( ent.anniversary() );
} else
anniversaryButton->setText( tr ("Unknown") );
-
+
}
void ContactEditor::saveEntry() {
-
+
// Store current combo into contact
contactfields.saveToRecord( ent );
-
+
if ( useFullName ) {
txtFirstName->setText( parseName( txtFullName->text(), NAME_F ) );
txtMiddleName->setText( parseName( txtFullName->text(), NAME_M ) );
txtLastName->setText( parseName( txtFullName->text(), NAME_L ) );
- txtSuffix->setText( parseName( txtFullName->text(), NAME_S ) );
-
+ // txtSuffix->setText( parseName( txtFullName->text(), NAME_S ) );
+
useFullName = false;
}
-
+
ent.setFirstName( txtFirstName->text() );
ent.setLastName( txtLastName->text() );
ent.setMiddleName( txtMiddleName->text() );
ent.setSuffix( txtSuffix->text() );
-
+
ent.setFileAs( cmbFileAs->currentText() );
-
+
ent.setCategories( cmbCat->currentCategories() );
-
-
+
+
//if (hasTitle)
- ent.setJobTitle( txtJobTitle->text() );
-
- //if (hasCompany)
- ent.setCompany( txtOrganization->text() );
-
-// if (hasNotes)
- ent.setNotes( txtNote->text() );
-
- //if (hasStreet) {
- ent.setHomeStreet( slHomeAddress[0] );
- ent.setBusinessStreet( slBusinessAddress[0] );
- // }
-
- // if (hasCity) {
- ent.setHomeCity( slHomeAddress[3] );
- ent.setBusinessCity( slBusinessAddress[3] );
- // }
-
- // if (hasState) {
- ent.setHomeState( slHomeAddress[4] );
- ent.setBusinessState( slBusinessAddress[4] );
- // }
-
- // if (hasZip) {
- ent.setHomeZip( slHomeAddress[5] );
- ent.setBusinessZip( slBusinessAddress[5] );
- // }
-
- // if (hasCountry) {
- ent.setHomeCountry( slHomeAddress[6] );
- ent.setBusinessCountry( slBusinessAddress[6] );
- // }
-
+ ent.setJobTitle( txtJobTitle->text() );
+
+ //if (hasCompany)
+ ent.setCompany( txtOrganization->text() );
+
+ // if (hasNotes)
+ ent.setNotes( txtNote->text() );
+
+ //if (hasStreet) {
+ ent.setHomeStreet( slHomeAddress[0] );
+ ent.setBusinessStreet( slBusinessAddress[0] );
+ // }
+
+ // if (hasCity) {
+ ent.setHomeCity( slHomeAddress[3] );
+ ent.setBusinessCity( slBusinessAddress[3] );
+ // }
+
+ // if (hasState) {
+ ent.setHomeState( slHomeAddress[4] );
+ ent.setBusinessState( slBusinessAddress[4] );
+ // }
+
+ // if (hasZip) {
+ ent.setHomeZip( slHomeAddress[5] );
+ ent.setBusinessZip( slBusinessAddress[5] );
+ // }
+
+ // if (hasCountry) {
+ ent.setHomeCountry( slHomeAddress[6] );
+ ent.setBusinessCountry( slBusinessAddress[6] );
+ // }
+
QStringList::ConstIterator it;
QListIterator<QLineEdit> itLE( listValue );
for ( it = slDynamicEntries.begin(); itLE.current() && it != slDynamicEntries.end(); ++it, ++itLE) {
-
+
if ( *it == "Department" )
ent.setDepartment( (*itLE)->text() );
-
+
if ( *it == "Company" )
ent.setCompany( (*itLE)->text() );
-
+
if ( *it == "Office" )
ent.setOffice( (*itLE)->text() );
-
+
if ( *it == "Profession" )
ent.setProfession( (*itLE)->text() );
-
+
if ( *it == "Assistant" )
ent.setAssistant( (*itLE)->text() );
-
+
if ( *it == "Manager" )
ent.setManager( (*itLE)->text() );
-
+
if ( *it == "Spouse" )
ent.setSpouse( (*itLE)->text() );
-
+
if ( *it == "Nickname" )
ent.setNickname( (*itLE)->text() );
-
+
if ( *it == "Children" )
ent.setChildren( (*itLE)->text() );
-
+
}
-
-
+
+
QStringList::ConstIterator itV;
for ( it = slChooserNames.begin(), itV = slChooserValues.begin(); it != slChooserNames.end(); ++it, ++itV ) {
-
+
if ( ( *it == "Business Phone" ) || ( *it == "Work Phone" ) )
ent.setBusinessPhone( *itV );
-
+
if ( ( *it == "Business Fax" ) || ( *it == "Work Fax" ) )
ent.setBusinessFax( *itV );
-
+
if ( ( *it == "Business Mobile" ) || ( *it == "Work Mobile" ) )
ent.setBusinessMobile( *itV );
-
+
if ( *it == "Emails" ){
QString allemail;
QString defaultmail;
parseEmailFrom( emails.join(","), defaultmail, allemail );
if ( defaultEmail.isEmpty() ){
qWarning("Default email was not set by user!");
qWarning("Using first email in list: %s", defaultmail.latin1());
ent.setDefaultEmail( defaultmail );
}
ent.setEmails( allemail );
}
-
+
if ( *it == "Default Email")
ent.setDefaultEmail( defaultEmail /* *itV */ );
-
+
if ( *it == "Home Phone" )
ent.setHomePhone( *itV );
-
+
if ( *it == "Home Fax" )
ent.setHomeFax( *itV );
-
+
if ( *it == "Home Mobile" )
ent.setHomeMobile( *itV );
-
+
if ( ( *it == "Business Pager" ) || ( *it == "Work Pager" ) )
ent.setBusinessPager( *itV );
-
+
if ( *it == "Home Web Page" )
ent.setHomeWebpage( *itV );
-
+
if ( ( *it == "Business WebPage" ) || ( *it == "Work Web Page" ) )
ent.setBusinessWebpage( *itV );
-
-
+
+
}
-
+
int gender = cmbGender->currentItem();
ent.setGender( QString::number( gender ) );
-
+
QString str = txtNote->text();
if ( !str.isNull() )
ent.setNotes( str );
-
+
}
void parseEmailFrom( const QString &txt, QString &strDefaultEmail,
QString &strAll )
{
- int where,
- start;
- if ( txt.isEmpty() )
- return;
- // find the first
- where = txt.find( ',' );
- if ( where < 0 ) {
- strDefaultEmail = txt;
- strAll = txt;
- } else {
- strDefaultEmail = txt.left( where ).stripWhiteSpace();
- strAll = strDefaultEmail;
- while ( where > -1 ) {
- strAll.append(" ");
- start = where;
- where = txt.find( ',', where + 1 );
- if ( where > - 1 )
- strAll.append( txt.mid(start + 1, where - start - 1).stripWhiteSpace() );
- else // grab until the end...
- strAll.append( txt.right(txt.length() - start - 1).stripWhiteSpace() );
+ int where,
+ start;
+ if ( txt.isEmpty() )
+ return;
+ // find the first
+ where = txt.find( ',' );
+ if ( where < 0 ) {
+ strDefaultEmail = txt;
+ strAll = txt;
+ } else {
+ strDefaultEmail = txt.left( where ).stripWhiteSpace();
+ strAll = strDefaultEmail;
+ while ( where > -1 ) {
+ strAll.append(" ");
+ start = where;
+ where = txt.find( ',', where + 1 );
+ if ( where > - 1 )
+ strAll.append( txt.mid(start + 1, where - start - 1).stripWhiteSpace() );
+ else // grab until the end...
+ strAll.append( txt.right(txt.length() - start - 1).stripWhiteSpace() );
+ }
}
- }
}
void parseEmailTo( const QString &strDefaultEmail,
const QString &strOtherEmail, QString &strBack )
{
- // create a comma dilimeted set of emails...
- // use the power of short circuiting...
- bool foundDefault = false;
- QString strTmp;
- int start = 0;
- int where;
- // start at the beginng.
- strBack = strDefaultEmail;
- where = 0;
- while ( where > -1 ) {
- start = where;
- where = strOtherEmail.find( ' ', where + 1 );
- if ( where > 0 ) {
- strTmp = strOtherEmail.mid( start, where - start ).stripWhiteSpace();
- } else
- strTmp = strOtherEmail.right( strOtherEmail.length() - start ).stripWhiteSpace();
- if ( foundDefault || strTmp != strDefaultEmail ) {
- strBack.append( ", " );
- strBack.append( strTmp );
- } else
- foundDefault = true;
- }
+ // create a comma dilimeted set of emails...
+ // use the power of short circuiting...
+ bool foundDefault = false;
+ QString strTmp;
+ int start = 0;
+ int where;
+ // start at the beginng.
+ strBack = strDefaultEmail;
+ where = 0;
+ while ( where > -1 ) {
+ start = where;
+ where = strOtherEmail.find( ' ', where + 1 );
+ if ( where > 0 ) {
+ strTmp = strOtherEmail.mid( start, where - start ).stripWhiteSpace();
+ } else
+ strTmp = strOtherEmail.right( strOtherEmail.length() - start ).stripWhiteSpace();
+ if ( foundDefault || strTmp != strDefaultEmail ) {
+ strBack.append( ", " );
+ strBack.append( strTmp );
+ } else
+ foundDefault = true;
+ }
}
static inline bool containsAlphaNum( const QString &str )
{
- int i,
- count = str.length();
- for ( i = 0; i < count; i++ )
- if ( !str[i].isSpace() )
- return TRUE;
- return FALSE;
+ int i,
+ count = str.length();
+ for ( i = 0; i < count; i++ )
+ if ( !str[i].isSpace() )
+ return TRUE;
+ return FALSE;
}
static inline bool constainsWhiteSpace( const QString &str )
{
- int i,
- count = str.length();
- for (i = 0; i < count; i++ )
- if ( str[i].isSpace() )
- return TRUE;
- return FALSE;
+ int i,
+ count = str.length();
+ for (i = 0; i < count; i++ )
+ if ( str[i].isSpace() )
+ return TRUE;
+ return FALSE;
}
void ContactEditor::setPersonalView( bool personal )
{
m_personalView = personal;
// Currently disbled due to the fact that
// show will not work...
return;
-
+
if ( personal ){
cmbCat->hide();
labCat->hide();
-
+
} else{
cmbCat->show();
labCat->show();
}
}
void ContactEditor::slotAnniversaryDateChanged( int year, int month, int day)
{
- QDate date;
- date.setYMD( year, month, day );
- QString dateString = TimeString::numberDateString( date );
- anniversaryButton->setText( dateString );
- ent.setAnniversary ( date );
+ QDate date;
+ date.setYMD( year, month, day );
+ QString dateString = TimeString::numberDateString( date );
+ anniversaryButton->setText( dateString );
+ ent.setAnniversary ( date );
}
void ContactEditor::slotBirthdayDateChanged( int year, int month, int day)
{
- QDate date;
- date.setYMD( year, month, day );
- QString dateString = TimeString::numberDateString( date );
- birthdayButton->setText( dateString );
- ent.setBirthday ( date );
+ QDate date;
+ date.setYMD( year, month, day );
+ QString dateString = TimeString::numberDateString( date );
+ birthdayButton->setText( dateString );
+ ent.setBirthday ( date );
}
void ContactEditor::slotRemoveBirthday()
{
qWarning("void ContactEditor::slotRemoveBirthday()");
ent.setBirthday( QDate() );
updateDatePicker();
}
void ContactEditor::slotRemoveAnniversary()
{
qWarning("void ContactEditor::slotRemoveAnniversary()");
ent.setAnniversary( QDate() );
updateDatePicker();
}
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
@@ -1,10 +1,10 @@
#ifndef _VERSION_H_
#define _VERSION_H_
#define MAINVERSION "0"
-#define SUBVERSION "2"
-#define PATCHVERSION "2"
+#define SUBVERSION "3"
+#define PATCHVERSION "0"
#define APPNAME "OPIE_ADDRESSBOOK"
#endif