summaryrefslogtreecommitdiffabout
path: root/kaddressbook/phoneeditwidget.cpp
Side-by-side diff
Diffstat (limited to 'kaddressbook/phoneeditwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/phoneeditwidget.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp
index 78b9941..19bb676 100644
--- a/kaddressbook/phoneeditwidget.cpp
+++ b/kaddressbook/phoneeditwidget.cpp
@@ -122,270 +122,268 @@ PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
connect( mPrefEdit, SIGNAL( textChanged( const QString& ) ),
SLOT( slotPrefEditChanged() ) );
connect( mSecondEdit, SIGNAL( textChanged( const QString& ) ),
SLOT( slotSecondEditChanged() ) );
connect( mThirdEdit, SIGNAL( textChanged( const QString& ) ),
SLOT( slotThirdEditChanged() ) );
connect( mFourthEdit, SIGNAL( textChanged( const QString& ) ),
SLOT( slotFourthEditChanged() ) );
connect( editButton, SIGNAL( clicked() ), SLOT( edit() ) );
connect( mPrefCombo, SIGNAL( activated( int ) ),
SLOT( updatePrefEdit() ) );
connect( mSecondCombo, SIGNAL( activated( int ) ),
SLOT( updateSecondEdit() ) );
connect( mThirdCombo, SIGNAL( activated( int ) ),
SLOT( updateThirdEdit() ) );
connect( mFourthCombo, SIGNAL( activated( int ) ),
SLOT( updateFourthEdit() ) );
}
PhoneEditWidget::~PhoneEditWidget()
{
}
void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &list )
{
mPhoneList.clear();
// Insert types for existing numbers.
mPrefCombo->insertTypeList( list );
QValueList<int> defaultTypes;
defaultTypes << KABC::PhoneNumber::Home;
defaultTypes << KABC::PhoneNumber::Work;
defaultTypes << KABC::PhoneNumber::Cell;
defaultTypes << ( KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax );
defaultTypes << ( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax );
// Insert default types.
// Doing this for mPrefCombo is enough because the list is shared by all
// combos.
QValueList<int>::ConstIterator it;
for( it = defaultTypes.begin(); it != defaultTypes.end(); ++it ) {
if ( !mPrefCombo->hasType( *it ) )
mPrefCombo->insertType( list, *it, PhoneNumber( "", *it ) );
}
updateCombos();
mPrefCombo->selectType( defaultTypes[ 0 ] );
mSecondCombo->selectType( defaultTypes[ 1 ] );
mThirdCombo->selectType( defaultTypes[ 2 ] );
mFourthCombo->selectType( defaultTypes[ 3 ] );
updateLineEdits();
}
void PhoneEditWidget::updateLineEdits()
{
updatePrefEdit();
updateSecondEdit();
updateThirdEdit();
updateFourthEdit();
}
void PhoneEditWidget::updateCombos()
{
mPrefCombo->updateTypes();
mSecondCombo->updateTypes();
mThirdCombo->updateTypes();
mFourthCombo->updateTypes();
}
KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
{
KABC::PhoneNumber::List retList;
KABC::PhoneNumber::List::Iterator it;
for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it )
if ( !(*it).number().isEmpty() )
retList.append( *it );
return retList;
}
void PhoneEditWidget::edit()
{
PhoneEditDialog dlg( mPhoneList, this );
if ( dlg.exec() ) {
if ( dlg.changed() ) {
mPhoneList = dlg.phoneNumbers();
updateCombos();
+ updateLineEdits();
emit modified();
}
}
}
void PhoneEditWidget::updatePrefEdit()
{
updateEdit( mPrefCombo );
}
void PhoneEditWidget::updateSecondEdit()
{
updateEdit( mSecondCombo );
}
void PhoneEditWidget::updateThirdEdit()
{
updateEdit( mThirdCombo );
}
void PhoneEditWidget::updateFourthEdit()
{
updateEdit( mFourthCombo );
}
void PhoneEditWidget::updateEdit( PhoneTypeCombo *combo )
{
QLineEdit *edit = combo->lineEdit();
if ( !edit )
return;
#if 0
if ( edit == mPrefEdit ) kdDebug(5720) << " prefEdit" << endl;
if ( edit == mSecondEdit ) kdDebug(5720) << " secondEdit" << endl;
if ( edit == mThirdEdit ) kdDebug(5720) << " thirdEdit" << endl;
if ( edit == mFourthEdit ) kdDebug(5720) << " fourthEdit" << endl;
#endif
PhoneNumber::List::Iterator it = combo->selectedElement();
if ( it != mPhoneList.end() ) {
edit->setText( (*it).number() );
} else {
kdDebug(5720) << "PhoneEditWidget::updateEdit(): no selected element" << endl;
}
}
void PhoneEditWidget::slotPrefEditChanged()
{
updatePhoneNumber( mPrefCombo );
}
void PhoneEditWidget::slotSecondEditChanged()
{
updatePhoneNumber( mSecondCombo );
}
void PhoneEditWidget::slotThirdEditChanged()
{
updatePhoneNumber( mThirdCombo );
}
void PhoneEditWidget::slotFourthEditChanged()
{
updatePhoneNumber( mFourthCombo );
}
void PhoneEditWidget::updatePhoneNumber( PhoneTypeCombo *combo )
{
QLineEdit *edit = combo->lineEdit();
if ( !edit ) return;
PhoneNumber::List::Iterator it = combo->selectedElement();
if ( it != mPhoneList.end() ) {
(*it).setNumber( edit->text() );
- } else {
- kdDebug(5720) << "PhoneEditWidget::updatePhoneNumber(): no selected element"
- << endl;
- }
+ }
updateOtherEdit( combo, mPrefCombo );
updateOtherEdit( combo, mSecondCombo );
updateOtherEdit( combo, mThirdCombo );
updateOtherEdit( combo, mFourthCombo );
emit modified();
}
void PhoneEditWidget::updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo )
{
if ( combo == otherCombo ) return;
if ( combo->currentItem() == otherCombo->currentItem() ) {
updateEdit( otherCombo );
}
}
///////////////////////////////////////////
// PhoneEditDialog
class PhoneViewItem : public QListViewItem
{
public:
PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number );
void setPhoneNumber( const KABC::PhoneNumber &number )
{
mPhoneNumber = number;
makeText();
}
QString key() { return mPhoneNumber.id(); }
QString country() { return ""; }
QString region() { return ""; }
QString number() { return ""; }
KABC::PhoneNumber phoneNumber() { return mPhoneNumber; }
private:
void makeText();
KABC::PhoneNumber mPhoneNumber;
};
PhoneViewItem::PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number )
: QListViewItem( parent ), mPhoneNumber( number )
{
makeText();
}
void PhoneViewItem::makeText()
{
/**
* Will be used in future versions of kaddressbook/libkabc
setText( 0, mPhoneNumber.country() );
setText( 1, mPhoneNumber.region() );
setText( 2, mPhoneNumber.number() );
setText( 3, mPhoneNumber.typeLabel() );
*/
setText( 0, mPhoneNumber.number() );
setText( 1, mPhoneNumber.typeLabel() );
}
PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name )
: KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Numbers" ),
KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok,
parent, name, true)
{
mPhoneNumberList = list;
QWidget *page = plainPage();
QGridLayout *layout = new QGridLayout( page, 1, 2 );
layout->setSpacing( spacingHint() );
mListView = new KListView( page );
mListView->setAllColumnsShowFocus( true );
mListView->addColumn( i18n( "Number" ) );
mListView->addColumn( i18n( "Type" ) );
KButtonBox *buttonBox = new KButtonBox( page, Vertical );
buttonBox->addButton( i18n( "&Add..." ), this, SLOT( slotAddPhoneNumber() ) );
mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( slotEditPhoneNumber() ) );
mEditButton->setEnabled( false );
mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( slotRemovePhoneNumber() ) );
mRemoveButton->setEnabled( false );
buttonBox->layout();
layout->addWidget( mListView, 0, 0 );
layout->addWidget( buttonBox, 0, 1 );
connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) );