author | zautrix <zautrix> | 2005-10-28 11:31:59 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-10-28 11:31:59 (UTC) |
commit | b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2 (patch) (unidiff) | |
tree | a7ac6002208ddedcd9dc13cd0e91294519883007 /kaddressbook | |
parent | 5ceebb8563f134c789e9082d1bc49723beb28c8c (diff) | |
download | kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.zip kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.tar.gz kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.tar.bz2 |
commit
-rw-r--r-- | kaddressbook/phoneeditwidget.cpp | 112 | ||||
-rw-r--r-- | kaddressbook/phoneeditwidget.h | 87 |
2 files changed, 187 insertions, 12 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp index 2bce39a..b20275d 100644 --- a/kaddressbook/phoneeditwidget.cpp +++ b/kaddressbook/phoneeditwidget.cpp | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <qlistbox.h> | 30 | #include <qlistbox.h> |
31 | #include <qlistview.h> | 31 | #include <qlistview.h> |
32 | #include <qbuttongroup.h> | 32 | #include <qbuttongroup.h> |
33 | #include <qhbox.h> | ||
33 | 34 | ||
34 | #include <kbuttonbox.h> | 35 | #include <kbuttonbox.h> |
35 | #include <klistview.h> | 36 | #include <klistview.h> |
@@ -50,6 +51,115 @@ | |||
50 | #include "phoneeditwidget.h" | 51 | #include "phoneeditwidget.h" |
51 | 52 | ||
52 | PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) | 53 | PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) |
54 | : QScrollView(parent,name) | ||
55 | { | ||
56 | setFrameStyle ( QFrame::Panel | QFrame::Plain ); | ||
57 | setLineWidth ( 1 ); | ||
58 | setMidLineWidth ( 1 ); | ||
59 | mw = new QWidget ( viewport() ); | ||
60 | addChild(mw); | ||
61 | setResizePolicy( AutoOneFit ); | ||
62 | mainLayout = new QVBoxLayout ( mw ); | ||
63 | mainLayout->setMargin( 2 ); | ||
64 | mainLayout->setSpacing( 2 ); | ||
65 | QWidget* hb = new QWidget ( mw ); | ||
66 | mainLayout->add( hb ); | ||
67 | QHBoxLayout* hbLayout = new QHBoxLayout ( hb ); | ||
68 | QPushButton *addBut = new QPushButton ( "add", hb ); | ||
69 | hbLayout->add( addBut ); | ||
70 | addBut->setPixmap ( SmallIcon("plus")); | ||
71 | addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() ); | ||
72 | connect(addBut,SIGNAL(clicked()),SLOT(addNumber())); | ||
73 | //QLabel * temp = new QLabel( i18n("Phone Type"), hb ); | ||
74 | QLabel *temp = new QLabel( i18n("Phone Number"),hb ); | ||
75 | temp->setAlignment( Qt::AlignCenter ); | ||
76 | temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); | ||
77 | hbLayout->add( temp ); | ||
78 | appendEditCombo(); | ||
79 | appendEditCombo(); | ||
80 | appendEditCombo(); | ||
81 | setDefaults(); | ||
82 | } | ||
83 | |||
84 | PhoneEditWidget::~PhoneEditWidget() | ||
85 | { | ||
86 | } | ||
87 | void PhoneEditWidget::setDefaults() | ||
88 | { | ||
89 | PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); | ||
90 | KABC::PhoneNumber phoneNumber; | ||
91 | phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref ); | ||
92 | edit->setPhoneNumber( phoneNumber ); | ||
93 | edit = mTypeNumberEditList.next(); | ||
94 | phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); | ||
95 | edit->setPhoneNumber( phoneNumber ); | ||
96 | edit = mTypeNumberEditList.next(); | ||
97 | phoneNumber.setType( KABC::PhoneNumber::Cell ); | ||
98 | edit->setPhoneNumber( phoneNumber ); | ||
99 | edit = mTypeNumberEditList.next(); | ||
100 | while ( edit ) { | ||
101 | edit->hide(); | ||
102 | edit = mTypeNumberEditList.next(); | ||
103 | } | ||
104 | } | ||
105 | void PhoneEditWidget::addNumber() | ||
106 | { | ||
107 | |||
108 | } | ||
109 | PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo() | ||
110 | { | ||
111 | PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw ); | ||
112 | connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) ); | ||
113 | connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) ); | ||
114 | connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) ); | ||
115 | |||
116 | mainLayout->add( edit ); | ||
117 | mTypeNumberEditList.append( edit ); | ||
118 | return edit; | ||
119 | } | ||
120 | |||
121 | void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li ) | ||
122 | { | ||
123 | if ( li.isEmpty() ) { | ||
124 | setDefaults(); | ||
125 | return; | ||
126 | } | ||
127 | KABC::PhoneNumber::List::Iterator it; | ||
128 | KABC::PhoneNumber::List list = li; | ||
129 | PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); | ||
130 | for ( it = list.begin(); it != list.end(); ++it ) { | ||
131 | if ( edit ) { | ||
132 | edit->setPhoneNumber( (*it ) ); | ||
133 | edit = mTypeNumberEditList.next(); | ||
134 | } else { | ||
135 | PhoneTypeNumberEdit* editNew = appendEditCombo(); | ||
136 | editNew->setPhoneNumber( (*it ) ); | ||
137 | } | ||
138 | } | ||
139 | while ( edit ) { | ||
140 | edit->hide(); | ||
141 | edit = mTypeNumberEditList.next(); | ||
142 | } | ||
143 | //mainLayout->invalidate (); | ||
144 | mw->update(); | ||
145 | } | ||
146 | KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() | ||
147 | { | ||
148 | KABC::PhoneNumber::List retList; | ||
149 | |||
150 | PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); | ||
151 | while ( edit ) { | ||
152 | if ( edit->isValid() ) { | ||
153 | retList.append( edit->phoneNumber()); | ||
154 | } | ||
155 | edit = mTypeNumberEditList.next(); | ||
156 | |||
157 | } | ||
158 | return retList; | ||
159 | } | ||
160 | |||
161 | #if 0 | ||
162 | PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) | ||
53 | : QWidget( parent, name ) | 163 | : QWidget( parent, name ) |
54 | { | 164 | { |
55 | QGridLayout *layout = new QGridLayout( this, 4, 1 ); | 165 | QGridLayout *layout = new QGridLayout( this, 4, 1 ); |
@@ -550,7 +660,7 @@ KABC::PhoneNumber PhoneTypeDialog::phoneNumber() | |||
550 | 660 | ||
551 | return mPhoneNumber; | 661 | return mPhoneNumber; |
552 | } | 662 | } |
553 | 663 | #endif | |
554 | #ifndef KAB_EMBEDDED | 664 | #ifndef KAB_EMBEDDED |
555 | #include "phoneeditwidget.moc" | 665 | #include "phoneeditwidget.moc" |
556 | #endif //KAB_EMBEDDED | 666 | #endif //KAB_EMBEDDED |
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h index 0241cf0..6a514ed 100644 --- a/kaddressbook/phoneeditwidget.h +++ b/kaddressbook/phoneeditwidget.h | |||
@@ -28,23 +28,26 @@ | |||
28 | #include <qpushbutton.h> | 28 | #include <qpushbutton.h> |
29 | #include <qlayout.h> | 29 | #include <qlayout.h> |
30 | 30 | ||
31 | #include <qptrlist.h> | ||
32 | #include <qscrollview.h> | ||
31 | 33 | ||
32 | #include "addresseeconfig.h" | 34 | #include "addresseeconfig.h" |
33 | #include "typecombo.h" | 35 | #include "typecombo.h" |
34 | 36 | ||
35 | class QButtonGroup; | 37 | class QButtonGroup; |
36 | class QCheckBox; | 38 | class QCheckBox; |
39 | class PhoneTypeNumberEdit; | ||
37 | 40 | ||
38 | #include <klineedit.h> | 41 | #include <klineedit.h> |
39 | #include <kcombobox.h> | 42 | #include <kcombobox.h> |
40 | class KListView; | 43 | #include <kabc/phonenumber.h> |
41 | 44 | ||
42 | typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo; | 45 | typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo; |
43 | 46 | ||
44 | /** | 47 | /** |
45 | Widget for editing phone numbers. | 48 | Widget for editing phone numbers. |
46 | */ | 49 | */ |
47 | class PhoneEditWidget : public QWidget | 50 | class PhoneEditWidget : public QScrollView |
48 | { | 51 | { |
49 | Q_OBJECT | 52 | Q_OBJECT |
50 | 53 | ||
@@ -55,13 +58,51 @@ class PhoneEditWidget : public QWidget | |||
55 | void setPhoneNumbers( const KABC::PhoneNumber::List &list ); | 58 | void setPhoneNumbers( const KABC::PhoneNumber::List &list ); |
56 | KABC::PhoneNumber::List phoneNumbers(); | 59 | KABC::PhoneNumber::List phoneNumbers(); |
57 | 60 | ||
58 | void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* ); | 61 | // void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* ); |
59 | KABC::PhoneNumber currentPhoneNumber( KComboBox*, int ); | 62 | //KABC::PhoneNumber currentPhoneNumber( KComboBox*, int ); |
60 | 63 | ||
61 | signals: | 64 | signals: |
62 | void modified(); | 65 | void modified(); |
66 | void typeChange( int oldType, int newType ); | ||
63 | 67 | ||
64 | private slots: | 68 | private slots: |
69 | void addNumber(); | ||
70 | protected: | ||
71 | |||
72 | private: | ||
73 | void setDefaults(); | ||
74 | PhoneTypeNumberEdit* appendEditCombo(); | ||
75 | QWidget* mw; | ||
76 | QVBoxLayout* mainLayout; | ||
77 | QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList; | ||
78 | |||
79 | KABC::PhoneNumber::List mPhoneList; | ||
80 | }; | ||
81 | |||
82 | |||
83 | |||
84 | |||
85 | |||
86 | #if 0 | ||
87 | class PhoneEditWidget : public QWidget | ||
88 | { | ||
89 | Q___OBJECT | ||
90 | |||
91 | public: | ||
92 | PhoneEditWidget( QWidget *parent, const char *name = 0 ); | ||
93 | ~PhoneEditWidget(); | ||
94 | |||
95 | void setPhoneNumbers( const KABC::PhoneNumber::List &list ); | ||
96 | KABC::PhoneNumber::List phoneNumbers(); | ||
97 | |||
98 | void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* ); | ||
99 | KABC::PhoneNumber currentPhoneNumber( KComboBox*, int ); | ||
100 | |||
101 | sig_nals: | ||
102 | void modified(); | ||
103 | void typeChange( int oldType, int newType ); | ||
104 | |||
105 | private sl_ots: | ||
65 | void edit(); | 106 | void edit(); |
66 | 107 | ||
67 | void updatePrefEdit(); | 108 | void updatePrefEdit(); |
@@ -79,6 +120,7 @@ class PhoneEditWidget : public QWidget | |||
79 | void updateCombos(); | 120 | void updateCombos(); |
80 | 121 | ||
81 | private: | 122 | private: |
123 | QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList; | ||
82 | void updateEdit( PhoneTypeCombo *combo ); | 124 | void updateEdit( PhoneTypeCombo *combo ); |
83 | void updatePhoneNumber( PhoneTypeCombo *combo ); | 125 | void updatePhoneNumber( PhoneTypeCombo *combo ); |
84 | void updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo ); | 126 | void updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo ); |
@@ -101,7 +143,7 @@ class PhoneEditWidget : public QWidget | |||
101 | */ | 143 | */ |
102 | class PhoneEditDialog : public KDialogBase | 144 | class PhoneEditDialog : public KDialogBase |
103 | { | 145 | { |
104 | Q_OBJECT | 146 | Q___OBJECT |
105 | 147 | ||
106 | public: | 148 | public: |
107 | PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 ); | 149 | PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 ); |
@@ -110,7 +152,7 @@ class PhoneEditDialog : public KDialogBase | |||
110 | const KABC::PhoneNumber::List &phoneNumbers(); | 152 | const KABC::PhoneNumber::List &phoneNumbers(); |
111 | bool changed() const; | 153 | bool changed() const; |
112 | 154 | ||
113 | protected slots: | 155 | protected s__lots: |
114 | void slotAddPhoneNumber(); | 156 | void slotAddPhoneNumber(); |
115 | void slotRemovePhoneNumber(); | 157 | void slotRemovePhoneNumber(); |
116 | void slotEditPhoneNumber(); | 158 | void slotEditPhoneNumber(); |
@@ -133,7 +175,7 @@ class PhoneEditDialog : public KDialogBase | |||
133 | */ | 175 | */ |
134 | class PhoneTypeDialog : public KDialogBase | 176 | class PhoneTypeDialog : public KDialogBase |
135 | { | 177 | { |
136 | Q_OBJECT | 178 | Q___OBJECT |
137 | public: | 179 | public: |
138 | PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, QWidget *parent, const char *name = 0 ); | 180 | PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, QWidget *parent, const char *name = 0 ); |
139 | 181 | ||
@@ -147,11 +189,13 @@ private: | |||
147 | QCheckBox *mPreferredBox; | 189 | QCheckBox *mPreferredBox; |
148 | KLineEdit *mNumber; | 190 | KLineEdit *mNumber; |
149 | }; | 191 | }; |
192 | #endif | ||
193 | |||
150 | class PhoneTypeNumberEdit : public QWidget | 194 | class PhoneTypeNumberEdit : public QWidget |
151 | { | 195 | { |
152 | Q_OBJECT | 196 | Q_OBJECT |
153 | public: | 197 | public: |
154 | PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) | 198 | PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) :QWidget( parent ) |
155 | { | 199 | { |
156 | QHBoxLayout * lay = new QHBoxLayout( this ); | 200 | QHBoxLayout * lay = new QHBoxLayout( this ); |
157 | lay->setSpacing( KDialogBase::spacingHintSmall() ); | 201 | lay->setSpacing( KDialogBase::spacingHintSmall() ); |
@@ -165,7 +209,10 @@ public: | |||
165 | lay->addWidget( mNumber ); | 209 | lay->addWidget( mNumber ); |
166 | connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) ); | 210 | connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) ); |
167 | connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) ); | 211 | connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) ); |
212 | connect( mNumber , SIGNAL ( textChanged ( const QString & ) ), | ||
213 | this, SLOT ( textChanged ( const QString & ) ) ); | ||
168 | mCombo->insertStringList( PhoneNumber::supportedTypeListNames() ); | 214 | mCombo->insertStringList( PhoneNumber::supportedTypeListNames() ); |
215 | mIsValid = true; | ||
169 | } | 216 | } |
170 | 217 | ||
171 | void setPhoneNumber( const KABC::PhoneNumber &phoneNumber ) | 218 | void setPhoneNumber( const KABC::PhoneNumber &phoneNumber ) |
@@ -174,6 +221,7 @@ public: | |||
174 | int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); | 221 | int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); |
175 | mCombo->setCurrentItem( index ); | 222 | mCombo->setCurrentItem( index ); |
176 | mNumber->setText( mPhoneNumber.number() ); | 223 | mNumber->setText( mPhoneNumber.number() ); |
224 | mIsValid = true; | ||
177 | show(); | 225 | show(); |
178 | 226 | ||
179 | } | 227 | } |
@@ -183,8 +231,13 @@ public: | |||
183 | int index = mCombo->currentItem(); | 231 | int index = mCombo->currentItem(); |
184 | mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] ); | 232 | mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] ); |
185 | return mPhoneNumber; | 233 | return mPhoneNumber; |
186 | |||
187 | } | 234 | } |
235 | bool isValid() | ||
236 | { | ||
237 | if ( !mIsValid ) return false; | ||
238 | if ( mNumber->text().isEmpty() )return false; | ||
239 | return true; | ||
240 | } | ||
188 | private slots: | 241 | private slots: |
189 | void typeExternalChanged( int oldType, int newType ) | 242 | void typeExternalChanged( int oldType, int newType ) |
190 | { | 243 | { |
@@ -193,26 +246,38 @@ public: | |||
193 | int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); | 246 | int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); |
194 | mCombo->setCurrentItem( index ); | 247 | mCombo->setCurrentItem( index ); |
195 | } | 248 | } |
196 | |||
197 | } | 249 | } |
198 | void deleteNumber() | 250 | void deleteNumber() |
199 | { | 251 | { |
252 | emit modified(); | ||
200 | hide(); | 253 | hide(); |
254 | mIsValid = false; | ||
201 | } | 255 | } |
202 | void comboTypeChange( int index ) | 256 | void comboTypeChange( int index ) |
203 | { | 257 | { |
204 | int old = mPhoneNumber.type(); | 258 | int old = mPhoneNumber.type(); |
205 | int newT = PhoneNumber::supportedTypeList()[index]; | 259 | int newT = PhoneNumber::supportedTypeList()[index]; |
206 | if ( old != newT ) { | 260 | if ( old != newT ) { |
207 | mPhoneNumber.setType(newT ); | 261 | emit modified(); |
208 | emit typeChange ( old, newT ); | 262 | emit typeChange ( old, newT ); |
263 | mPhoneNumber.setType(newT ); | ||
209 | } | 264 | } |
210 | 265 | ||
211 | } | 266 | } |
267 | int currentType() | ||
268 | { | ||
269 | return mCombo->currentItem(); | ||
270 | } | ||
271 | void textChanged ( const QString & ) | ||
272 | { | ||
273 | emit modified(); | ||
274 | } | ||
212 | signals: | 275 | signals: |
213 | void typeChange( int oldType, int newType ); | 276 | void typeChange( int oldType, int newType ); |
277 | void modified(); | ||
214 | 278 | ||
215 | private: | 279 | private: |
280 | bool mIsValid; | ||
216 | KABC::PhoneNumber mPhoneNumber; | 281 | KABC::PhoneNumber mPhoneNumber; |
217 | QPushButton* mMinusButton; | 282 | QPushButton* mMinusButton; |
218 | KComboBox *mCombo; | 283 | KComboBox *mCombo; |