summaryrefslogtreecommitdiff
path: root/core/pim/addressbook/contacteditor.cpp
Side-by-side diff
Diffstat (limited to 'core/pim/addressbook/contacteditor.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/contacteditor.cpp75
1 files changed, 59 insertions, 16 deletions
diff --git a/core/pim/addressbook/contacteditor.cpp b/core/pim/addressbook/contacteditor.cpp
index d14ac51..d830ad3 100644
--- a/core/pim/addressbook/contacteditor.cpp
+++ b/core/pim/addressbook/contacteditor.cpp
@@ -64,26 +64,33 @@ void parseEmailTo( const QString &strDefaultEmail,
ContactEditor::ContactEditor( const OContact &entry,
QWidget *parent,
const char *name,
WFlags fl )
: QDialog( parent, name, TRUE, fl ),
- m_personalView ( false )
-
+ defaultEmailChooserPosition( -1 ),
+ m_personalView ( false ),
+ cmbDefaultEmail( 0 ),
+ initializing ( false )
{
+ initializing = true;
+
init();
setEntry( entry );
- cmbDefaultEmail = 0;
- defaultEmailChooserPosition = -1;
+// cmbDefaultEmail = 0;
+// defaultEmailChooserPosition = -1;
+
+ initializing = false;
}
ContactEditor::~ContactEditor() {
}
void ContactEditor::init() {
+ qWarning("init() START");
useFullName = true;
uint i = 0;
QStringList trlChooserNames;
@@ -597,15 +604,15 @@ void ContactEditor::init() {
cmbChooserField1->insertStringList( trlChooserNames );
cmbChooserField2->insertStringList( trlChooserNames );
cmbChooserField3->insertStringList( trlChooserNames );
cmbChooserField4->insertStringList( trlChooserNames );
- cmbChooserField1->setCurrentItem( 0 );
- cmbChooserField2->setCurrentItem( 1 );
- cmbChooserField3->setCurrentItem( 2 );
+ 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 &)),
@@ -639,12 +646,14 @@ void ContactEditor::init() {
connect( cmbAddress, SIGNAL(activated(int)),
this, SLOT(slotAddressTypeChange(int)) );
new QPEDialogListener(this);
setPersonalView ( m_personalView );
+
+ qWarning("init() END");
}
void ContactEditor::defaultEmailChanged(int i){
qDebug("defaultEmailChanged");
// was sollte das ? (se)
@@ -689,31 +698,40 @@ void ContactEditor::populateDefaultEmailCmb(){
// Called when any combobox was changed.
// "true" returned if the change was chandled by this function, else it should
// be handled by something else..
bool ContactEditor::cmbChooserChange( int index, QLineEdit *inputWid, int widgetPos ) {
QString type = slChooserNames[index];
- qWarning("ContactEditor::cmbChooserChange -> Type: %s", type.latin1() );
+ qWarning("ContactEditor::cmbChooserChange -> Type: %s, WidgetPos: %d", type.latin1(), widgetPos );
+
+ if ( !initializing )
+ contactfields.setFieldOrder( widgetPos-1, index );
// Create and connect combobox for selecting the default email
if ( type == "Default Email"){
- qWarning("Choosing default-email ");
+ qWarning("Choosing default-email (defaultEmailChooserPosition= %d) ", defaultEmailChooserPosition);
// More than one defaul-email chooser is not allowed !
if ( ( defaultEmailChooserPosition != -1 ) &&
- defaultEmailChooserPosition != widgetPos ){
+ defaultEmailChooserPosition != widgetPos && !initializing){
chooserError( widgetPos );
return true;
}
if ( cmbDefaultEmail ){
delete cmbDefaultEmail;
cmbDefaultEmail = 0l;
}
cmbDefaultEmail = new QComboBox(inputWid->parentWidget());
- cmbDefaultEmail->setGeometry(inputWid->frameGeometry());
+ cmbDefaultEmail->setGeometry(inputWid->frameGeometry()); /* :SX */
+
+ QRect rect = inputWid->frameGeometry();
+ qWarning("Geometrie: X=%d, Y=%d, Left=%d, Top=%d, Right=%d, Bottom=%d",
+ rect.x(), rect.y(), rect.left(), rect.top(), rect.right(), rect.bottom());
+ QPoint pnt = inputWid->pos();
+ qWarning("Position : X=%d, Y=%d", pnt.x(), pnt.y() );
connect( cmbDefaultEmail,SIGNAL( activated(int) ),
SLOT( defaultEmailChanged(int) ) );
cmbDefaultEmail->clear();
cmbDefaultEmail->insertStringList( emails );
@@ -941,12 +959,17 @@ void ContactEditor::slotCmbChooser4Change( int index ) {
}
}
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] );
@@ -1273,18 +1296,18 @@ void ContactEditor::cleanupFields() {
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;
@@ -1452,20 +1475,38 @@ void ContactEditor::setEntry( const OContact &entry ) {
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, 0) );
+ cmbChooserField2->setCurrentItem( contactfields.getFieldOrder(1, 1) );
+ cmbChooserField3->setCurrentItem( contactfields.getFieldOrder(2, 2) );
+ cmbChooserField4->setCurrentItem( contactfields.getFieldOrder(3, 5) );
+ cmbAddress->setCurrentItem( contactfields.getFieldOrder(4, 1) );
slotCmbChooser1Change( cmbChooserField1->currentItem() );
slotCmbChooser2Change( cmbChooserField2->currentItem() );
slotCmbChooser3Change( cmbChooserField3->currentItem() );
-
+ slotCmbChooser4Change( cmbChooserField4->currentItem() );
slotAddressTypeChange( cmbAddress->currentItem() );
- // loadFields(); :SX
updateDatePicker();
+
+ initializing = false;
}
void ContactEditor::updateDatePicker()
{
// Set DatePicker
if ( !ent.birthday().isNull() ){
birthdayButton->setText( TimeString::numberDateString( ent.birthday() ) );
@@ -1480,13 +1521,15 @@ void ContactEditor::updateDatePicker()
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 ) );