Diffstat (limited to 'kaddressbook/phoneeditwidget.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kaddressbook/phoneeditwidget.h | 87 |
1 files changed, 76 insertions, 11 deletions
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h index 0241cf0..6a514ed 100644 --- a/kaddressbook/phoneeditwidget.h +++ b/kaddressbook/phoneeditwidget.h @@ -23,50 +23,91 @@ 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> -class KListView; +#include <kabc/phonenumber.h> typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo; /** Widget for editing phone numbers. */ -class PhoneEditWidget : public QWidget +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 ); + // 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(); + protected: + + private: + 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(); @@ -74,16 +115,17 @@ class PhoneEditWidget : public QWidget 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; @@ -96,26 +138,26 @@ class PhoneEditWidget : public QWidget KABC::PhoneNumber::List mPhoneList; }; /** Dialog for editing lists of phonenumbers. */ class PhoneEditDialog : public KDialogBase { - Q_OBJECT + 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 slots: + protected s__lots: void slotAddPhoneNumber(); void slotRemovePhoneNumber(); void slotEditPhoneNumber(); void slotSelectionChanged(); private: KABC::PhoneNumber::List mPhoneNumberList; KABC::PhoneNumber::TypeList mTypeList; @@ -128,95 +170,118 @@ class PhoneEditDialog : public KDialogBase bool mChanged; }; /** Dialog for editing phone number types. */ class PhoneTypeDialog : public KDialogBase { - Q_OBJECT + 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 ) + 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; } 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; } void comboTypeChange( int index ) { int old = mPhoneNumber.type(); int newT = PhoneNumber::supportedTypeList()[index]; if ( old != newT ) { - mPhoneNumber.setType(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(); private: + bool mIsValid; KABC::PhoneNumber mPhoneNumber; QPushButton* mMinusButton; KComboBox *mCombo; KLineEdit *mNumber; }; #endif |