summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorzautrix <zautrix>2005-10-28 12:10:35 (UTC)
committer zautrix <zautrix>2005-10-28 12:10:35 (UTC)
commitcee83f70d8e4a6945f4456c55ab1b280d3425f0f (patch) (side-by-side diff)
tree1b317655a344f1a3640ef2561d61075e0feddd64 /kaddressbook
parentb27cb619bb9005ad4345d38bbee3b1c3d0eda1b2 (diff)
downloadkdepimpi-cee83f70d8e4a6945f4456c55ab1b280d3425f0f.zip
kdepimpi-cee83f70d8e4a6945f4456c55ab1b280d3425f0f.tar.gz
kdepimpi-cee83f70d8e4a6945f4456c55ab1b280d3425f0f.tar.bz2
commit
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/phoneeditwidget.cpp37
-rw-r--r--kaddressbook/phoneeditwidget.h18
2 files changed, 31 insertions, 24 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp
index b20275d..997fc05 100644
--- a/kaddressbook/phoneeditwidget.cpp
+++ b/kaddressbook/phoneeditwidget.cpp
@@ -1,240 +1,246 @@
/*
This file is part of KAddressBook.
Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#include <qlayout.h>
#include <qlabel.h>
#include <qtooltip.h>
#include <qpushbutton.h>
#include <qcheckbox.h>
#include <qstring.h>
#include <qlistbox.h>
#include <qlistview.h>
#include <qbuttongroup.h>
#include <qhbox.h>
#include <kbuttonbox.h>
#include <klistview.h>
#include <kapplication.h>
#include <qapplication.h>
#include <kconfig.h>
#include <klineedit.h>
#include <kcombobox.h>
#include <klocale.h>
#include <kdebug.h>
#include <kglobal.h>
#include <kiconloader.h>
#include <kabc/phonenumber.h>
#include "typecombo.h"
#include "phoneeditwidget.h"
PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
: QScrollView(parent,name)
{
setFrameStyle ( QFrame::Panel | QFrame::Plain );
setLineWidth ( 1 );
setMidLineWidth ( 1 );
mw = new QWidget ( viewport() );
addChild(mw);
setResizePolicy( AutoOneFit );
mainLayout = new QVBoxLayout ( mw );
mainLayout->setMargin( 2 );
mainLayout->setSpacing( 2 );
QWidget* hb = new QWidget ( mw );
mainLayout->add( hb );
QHBoxLayout* hbLayout = new QHBoxLayout ( hb );
QPushButton *addBut = new QPushButton ( "add", hb );
hbLayout->add( addBut );
addBut->setPixmap ( SmallIcon("plus"));
addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() );
connect(addBut,SIGNAL(clicked()),SLOT(addNumber()));
//QLabel * temp = new QLabel( i18n("Phone Type"), hb );
QLabel *temp = new QLabel( i18n("Phone Number"),hb );
temp->setAlignment( Qt::AlignCenter );
temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
hbLayout->add( temp );
- appendEditCombo();
- appendEditCombo();
- appendEditCombo();
setDefaults();
+ mTypeNumberEditList.setAutoDelete( true );
}
PhoneEditWidget::~PhoneEditWidget()
{
}
void PhoneEditWidget::setDefaults()
{
- PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
+ mTypeNumberEditList.clear();
+ PhoneTypeNumberEdit* edit = appendEditCombo();
KABC::PhoneNumber phoneNumber;
phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref );
edit->setPhoneNumber( phoneNumber );
- edit = mTypeNumberEditList.next();
+ edit = appendEditCombo();
phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref );
edit->setPhoneNumber( phoneNumber );
- edit = mTypeNumberEditList.next();
+ edit = appendEditCombo();
phoneNumber.setType( KABC::PhoneNumber::Cell );
edit->setPhoneNumber( phoneNumber );
- edit = mTypeNumberEditList.next();
- while ( edit ) {
- edit->hide();
- edit = mTypeNumberEditList.next();
- }
+
}
void PhoneEditWidget::addNumber()
{
}
PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo()
{
PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw );
connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) );
connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) );
+ connect ( edit, SIGNAL ( deleteMe( PhoneTypeNumberEdit* ) ), this, SLOT ( deleteEdit( PhoneTypeNumberEdit*) ) );
connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) );
mainLayout->add( edit );
mTypeNumberEditList.append( edit );
return edit;
}
+void PhoneEditWidget::deleteEdit( PhoneTypeNumberEdit* ew )
+{
+ mPendingDelete = ew;
+ QTimer::singleShot( 0, this, SLOT ( pendingDelete() ) );
+}
+void PhoneEditWidget::pendingDelete()
+{
+ mTypeNumberEditList.removeRef( mPendingDelete );
+ emit modified();
+}
+
void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li )
{
if ( li.isEmpty() ) {
setDefaults();
return;
- }
+ }
+ mTypeNumberEditList.clear();
KABC::PhoneNumber::List::Iterator it;
KABC::PhoneNumber::List list = li;
- PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
+ PhoneTypeNumberEdit* edit = 0;//mTypeNumberEditList.first();
for ( it = list.begin(); it != list.end(); ++it ) {
if ( edit ) {
edit->setPhoneNumber( (*it ) );
edit = mTypeNumberEditList.next();
} else {
PhoneTypeNumberEdit* editNew = appendEditCombo();
editNew->setPhoneNumber( (*it ) );
}
}
while ( edit ) {
edit->hide();
edit = mTypeNumberEditList.next();
}
- //mainLayout->invalidate ();
- mw->update();
}
KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
{
KABC::PhoneNumber::List retList;
PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
while ( edit ) {
if ( edit->isValid() ) {
retList.append( edit->phoneNumber());
}
edit = mTypeNumberEditList.next();
}
return retList;
}
#if 0
PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
: QWidget( parent, name )
{
QGridLayout *layout = new QGridLayout( this, 4, 1 );
//US layout->setSpacing( KDialog::spacingHint() );
layout->setSpacing( KDialogBase::spacingHintSmall() );
QLabel* label = new QLabel( this );
//US loadIcon call is ambiguous. Add one more parameter
//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
label->setAlignment( AlignCenter );
//US layout->addMultiCellWidget( label, 0, 1, 3, 3 );
layout->addWidget( label, 0, 0 );
QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ),
this );
if ( QApplication::desktop()->width() < 640 )
layout->addWidget( editButton, 0, 1 );
else
layout->addMultiCellWidget( editButton, 0, 0, 1, 3);
mPrefCombo = new PhoneTypeCombo( mPhoneList, this );
mPrefEdit = new KLineEdit( this );
//mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) );
mPrefCombo->setLineEdit( mPrefEdit );
layout->addWidget( mPrefCombo, 1, 0 );
layout->addWidget( mPrefEdit, 1, 1 );
int x = 1, y = 2;
if ( QApplication::desktop()->width() < 640 ) {
++x;
y = 0;
}
mSecondCombo = new PhoneTypeCombo( mPhoneList, this );
mSecondEdit = new KLineEdit( this );
mSecondCombo->setLineEdit( mSecondEdit );
layout->addWidget( mSecondCombo, x, y++ );
layout->addWidget( mSecondEdit, x, y++ );
y = 0;
++x;
mThirdCombo = new PhoneTypeCombo( mPhoneList, this );
mThirdEdit = new KLineEdit( this );
mThirdCombo->setLineEdit( mThirdEdit );
layout->addWidget( mThirdCombo, x, y++ );
layout->addWidget( mThirdEdit, x, y++ );
if ( QApplication::desktop()->width() < 640 ) {
++x;
y = 0;
}
mFourthCombo = new PhoneTypeCombo( mPhoneList, this );
mFourthEdit = new KLineEdit( this );
mFourthCombo->setLineEdit( mFourthEdit );
layout->addWidget( mFourthCombo, x, y++ );
layout->addWidget( mFourthEdit, x, y++ );
// Four numbers don't fit in the current dialog
if ( QApplication::desktop()->width() < 640 ) {
mFourthCombo->hide();
mFourthEdit->hide();
} else {
QFontMetrics fm ( font () ) ;
int wid = fm.width( "Messenger" ) +60;
mPrefCombo->setMaximumWidth( wid );
mSecondCombo->setMaximumWidth( wid );
mThirdCombo->setMaximumWidth( wid );
mFourthCombo->setMaximumWidth( wid );
}
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& ) ),
@@ -422,192 +428,193 @@ void PhoneEditWidget::updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *ot
///////////////////////////////////////////
// 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 )
{
#ifdef DESKTOP_VERSION
setRenameEnabled ( 0, true );
#endif
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()) );
connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber()));
KABC::PhoneNumber::List::Iterator it;
for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it )
new PhoneViewItem( mListView, *it );
if (QApplication::desktop()->width() < 480 )
showMaximized();
else
resize( 400, 400 );
mChanged = false;
}
PhoneEditDialog::~PhoneEditDialog()
{
+ qDebug("PhoneEditDialog::~PhoneEditDialog() ");
}
void PhoneEditDialog::slotAddPhoneNumber()
{
KABC::PhoneNumber tmp( "", 0 );
PhoneTypeDialog dlg( tmp, this );
if ( dlg.exec() ) {
QListViewItem* i = mListView->firstChild();
KABC::PhoneNumber phoneNumber = dlg.phoneNumber();
bool insert = true;
while ( i ) {
PhoneViewItem* p = ( PhoneViewItem* ) i;
KABC::PhoneNumber pn = p->phoneNumber();
if ( (pn.type() | KABC::PhoneNumber::Pref) == (phoneNumber.type() | KABC::PhoneNumber::Pref) ) {
if ( p->text(0).isEmpty()) {
p->setPhoneNumber( phoneNumber );
mPhoneNumberList.remove( pn );
mPhoneNumberList.append( phoneNumber );
insert = false;
break;
}
}
i = i->nextSibling();
}
if ( insert ) {
mPhoneNumberList.append( phoneNumber );
new PhoneViewItem( mListView, phoneNumber );
}
mChanged = true;
}
}
void PhoneEditDialog::slotRemovePhoneNumber()
{
PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() );
if ( !item )
return;
mPhoneNumberList.remove( item->phoneNumber() );
QListViewItem *currItem = mListView->currentItem();
mListView->takeItem( currItem );
delete currItem;
mChanged = true;
}
void PhoneEditDialog::slotEditPhoneNumber()
{
PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() );
if ( !item )
return;
PhoneTypeDialog dlg( item->phoneNumber(), this );
if ( dlg.exec() ) {
slotRemovePhoneNumber();
KABC::PhoneNumber phoneNumber = dlg.phoneNumber();
mPhoneNumberList.append( phoneNumber );
new PhoneViewItem( mListView, phoneNumber );
mChanged = true;
}
}
void PhoneEditDialog::slotSelectionChanged()
{
bool state = ( mListView->currentItem() != 0 );
mRemoveButton->setEnabled( state );
mEditButton->setEnabled( state );
}
const KABC::PhoneNumber::List &PhoneEditDialog::phoneNumbers()
{
return mPhoneNumberList;
}
bool PhoneEditDialog::changed() const
{
return mChanged;
}
///////////////////////////////////////////
// PhoneTypeDialog
PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber,
QWidget *parent, const char *name)
: KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Number" ),
KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok,
parent, name, true), mPhoneNumber( phoneNumber )
{
QWidget *page = plainPage();
QLabel *label = 0;
QGridLayout *layout = new QGridLayout( page, 3, 2, marginHint(), spacingHint() );
label = new QLabel( i18n( "Number:" ), page );
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h
index 6a514ed..c730c7b 100644
--- a/kaddressbook/phoneeditwidget.h
+++ b/kaddressbook/phoneeditwidget.h
@@ -1,287 +1,287 @@
#ifndef PHONEEDITWIDGET_H
#define PHONEEDITWIDGET_H
/*
This file is part of KAddressBook.
Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
without including the source code for Qt in the source distribution.
*/
#include <kdialogbase.h>
#include <kiconloader.h>
#include <qpushbutton.h>
#include <qlayout.h>
#include <qptrlist.h>
#include <qscrollview.h>
#include "addresseeconfig.h"
#include "typecombo.h"
class QButtonGroup;
class QCheckBox;
class PhoneTypeNumberEdit;
#include <klineedit.h>
#include <kcombobox.h>
#include <kabc/phonenumber.h>
typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo;
/**
Widget for editing phone numbers.
*/
class PhoneEditWidget : public QScrollView
{
Q_OBJECT
public:
PhoneEditWidget( QWidget *parent, const char *name = 0 );
~PhoneEditWidget();
void setPhoneNumbers( const KABC::PhoneNumber::List &list );
KABC::PhoneNumber::List phoneNumbers();
// void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
//KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
signals:
void modified();
void typeChange( int oldType, int newType );
private slots:
- void addNumber();
+ void deleteEdit( PhoneTypeNumberEdit* ew );
+ void addNumber();
+ void pendingDelete();
protected:
private:
+ PhoneTypeNumberEdit* mPendingDelete;
void setDefaults();
PhoneTypeNumberEdit* appendEditCombo();
QWidget* mw;
QVBoxLayout* mainLayout;
QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList;
KABC::PhoneNumber::List mPhoneList;
};
#if 0
class PhoneEditWidget : public QWidget
{
Q___OBJECT
public:
PhoneEditWidget( QWidget *parent, const char *name = 0 );
~PhoneEditWidget();
void setPhoneNumbers( const KABC::PhoneNumber::List &list );
KABC::PhoneNumber::List phoneNumbers();
void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
sig_nals:
void modified();
void typeChange( int oldType, int newType );
private sl_ots:
void edit();
void updatePrefEdit();
void updateSecondEdit();
void updateThirdEdit();
void updateFourthEdit();
void slotPrefEditChanged();
void slotSecondEditChanged();
void slotThirdEditChanged();
void slotFourthEditChanged();
protected:
void updateLineEdits();
void updateCombos();
private:
QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList;
void updateEdit( PhoneTypeCombo *combo );
void updatePhoneNumber( PhoneTypeCombo *combo );
void updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo );
PhoneTypeCombo *mPrefCombo;
PhoneTypeCombo *mSecondCombo;
PhoneTypeCombo *mThirdCombo;
PhoneTypeCombo *mFourthCombo;
KLineEdit *mPrefEdit;
KLineEdit *mSecondEdit;
KLineEdit *mThirdEdit;
KLineEdit *mFourthEdit;
KABC::PhoneNumber::List mPhoneList;
};
/**
Dialog for editing lists of phonenumbers.
*/
class PhoneEditDialog : public KDialogBase
{
Q___OBJECT
public:
PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 );
~PhoneEditDialog();
const KABC::PhoneNumber::List &phoneNumbers();
bool changed() const;
protected s__lots:
void slotAddPhoneNumber();
void slotRemovePhoneNumber();
void slotEditPhoneNumber();
void slotSelectionChanged();
private:
KABC::PhoneNumber::List mPhoneNumberList;
KABC::PhoneNumber::TypeList mTypeList;
KComboBox *mTypeBox;
KListView *mListView;
QPushButton *mRemoveButton;
QPushButton *mEditButton;
bool mChanged;
};
/**
Dialog for editing phone number types.
*/
class PhoneTypeDialog : public KDialogBase
{
Q___OBJECT
public:
PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, QWidget *parent, const char *name = 0 );
KABC::PhoneNumber phoneNumber();
private:
KABC::PhoneNumber mPhoneNumber;
KABC::PhoneNumber::TypeList mTypeList;
QButtonGroup *mGroup;
QCheckBox *mPreferredBox;
KLineEdit *mNumber;
};
#endif
class PhoneTypeNumberEdit : public QWidget
{
Q_OBJECT
public:
PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) :QWidget( parent )
{
QHBoxLayout * lay = new QHBoxLayout( this );
lay->setSpacing( KDialogBase::spacingHintSmall() );
lay->setMargin( KDialogBase::marginHintSmall() );
mMinusButton = new QPushButton ( this );
mMinusButton->setPixmap ( SmallIcon("minus"));
mCombo = new KComboBox( this );
mNumber = new KLineEdit( this );
lay->addWidget( mMinusButton );
lay->addWidget( mCombo );
lay->addWidget( mNumber );
connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) );
connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) );
connect( mNumber , SIGNAL ( textChanged ( const QString & ) ),
this, SLOT ( textChanged ( const QString & ) ) );
mCombo->insertStringList( PhoneNumber::supportedTypeListNames() );
- mIsValid = true;
}
-
+ ~PhoneTypeNumberEdit() {
+ // qDebug("~PhoneTypeNumberEdit() ");
+ }
void setPhoneNumber( const KABC::PhoneNumber &phoneNumber )
{
mPhoneNumber = phoneNumber;
int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
mCombo->setCurrentItem( index );
mNumber->setText( mPhoneNumber.number() );
- mIsValid = true;
show();
}
KABC::PhoneNumber phoneNumber()
{
mPhoneNumber.setNumber( mNumber->text() );
int index = mCombo->currentItem();
mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
return mPhoneNumber;
}
bool isValid()
{
- if ( !mIsValid ) return false;
if ( mNumber->text().isEmpty() )return false;
return true;
}
private slots:
void typeExternalChanged( int oldType, int newType )
{
if ( mPhoneNumber.type() == newType ) {
mPhoneNumber.setType(oldType);
int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
mCombo->setCurrentItem( index );
}
}
void deleteNumber()
{
- emit modified();
- hide();
- mIsValid = false;
+ emit deleteMe( this );
}
void comboTypeChange( int index )
{
int old = mPhoneNumber.type();
int newT = PhoneNumber::supportedTypeList()[index];
if ( old != newT ) {
emit modified();
emit typeChange ( old, newT );
mPhoneNumber.setType(newT );
}
}
int currentType()
{
return mCombo->currentItem();
}
void textChanged ( const QString & )
{
emit modified();
}
signals:
void typeChange( int oldType, int newType );
void modified();
+ void deleteMe( PhoneTypeNumberEdit* );
private:
- bool mIsValid;
KABC::PhoneNumber mPhoneNumber;
QPushButton* mMinusButton;
KComboBox *mCombo;
KLineEdit *mNumber;
};
#endif