author | zautrix <zautrix> | 2004-06-26 19:01:18 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2004-06-26 19:01:18 (UTC) |
commit | b9aad1f15dc600e4dbe4c62d3fcced6363188ba3 (patch) (unidiff) | |
tree | 2c3d4004fb21c72cba65793859f9bcd8ffd3a49c /kaddressbook/phoneeditwidget.cpp | |
download | kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.zip kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.tar.gz kdepimpi-b9aad1f15dc600e4dbe4c62d3fcced6363188ba3.tar.bz2 |
Initial revision
Diffstat (limited to 'kaddressbook/phoneeditwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kaddressbook/phoneeditwidget.cpp | 532 |
1 files changed, 532 insertions, 0 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp new file mode 100644 index 0000000..78b9941 --- a/dev/null +++ b/kaddressbook/phoneeditwidget.cpp | |||
@@ -0,0 +1,532 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> | ||
4 | |||
5 | This program is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation; either version 2 of the License, or | ||
8 | (at your option) any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software | ||
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
18 | |||
19 | As a special exception, permission is given to link this program | ||
20 | with any edition of Qt, and distribute the resulting executable, | ||
21 | without including the source code for Qt in the source distribution. | ||
22 | */ | ||
23 | |||
24 | #include <qlayout.h> | ||
25 | #include <qlabel.h> | ||
26 | #include <qtooltip.h> | ||
27 | #include <qpushbutton.h> | ||
28 | #include <qcheckbox.h> | ||
29 | #include <qstring.h> | ||
30 | #include <qlistbox.h> | ||
31 | #include <qlistview.h> | ||
32 | #include <qbuttongroup.h> | ||
33 | |||
34 | #include <kbuttonbox.h> | ||
35 | #include <klistview.h> | ||
36 | #include <kapplication.h> | ||
37 | #include <qapplication.h> | ||
38 | #include <kconfig.h> | ||
39 | #include <klineedit.h> | ||
40 | #include <kcombobox.h> | ||
41 | #include <klocale.h> | ||
42 | #include <kdebug.h> | ||
43 | #include <kglobal.h> | ||
44 | #include <kiconloader.h> | ||
45 | |||
46 | #include <kabc/phonenumber.h> | ||
47 | |||
48 | #include "typecombo.h" | ||
49 | |||
50 | #include "phoneeditwidget.h" | ||
51 | |||
52 | PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) | ||
53 | : QWidget( parent, name ) | ||
54 | { | ||
55 | QGridLayout *layout = new QGridLayout( this, 4, 1 ); | ||
56 | //US layout->setSpacing( KDialog::spacingHint() ); | ||
57 | layout->setSpacing( KDialogBase::spacingHintSmall() ); | ||
58 | |||
59 | |||
60 | |||
61 | QLabel* label = new QLabel( this ); | ||
62 | //US loadIcon call is ambiguous. Add one more parameter | ||
63 | //US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); | ||
64 | label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); | ||
65 | label->setAlignment( AlignCenter ); | ||
66 | //US layout->addMultiCellWidget( label, 0, 1, 3, 3 ); | ||
67 | layout->addWidget( label, 0, 0 ); | ||
68 | |||
69 | QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ), | ||
70 | this ); | ||
71 | if ( QApplication::desktop()->width() < 640 ) | ||
72 | layout->addWidget( editButton, 0, 1 ); | ||
73 | else | ||
74 | layout->addMultiCellWidget( editButton, 0, 0, 1, 3); | ||
75 | |||
76 | mPrefCombo = new PhoneTypeCombo( mPhoneList, this ); | ||
77 | mPrefEdit = new KLineEdit( this ); | ||
78 | //mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) ); | ||
79 | mPrefCombo->setLineEdit( mPrefEdit ); | ||
80 | layout->addWidget( mPrefCombo, 1, 0 ); | ||
81 | layout->addWidget( mPrefEdit, 1, 1 ); | ||
82 | int x = 1, y = 2; | ||
83 | if ( QApplication::desktop()->width() < 640 ) { | ||
84 | ++x; | ||
85 | y = 0; | ||
86 | } | ||
87 | mSecondCombo = new PhoneTypeCombo( mPhoneList, this ); | ||
88 | mSecondEdit = new KLineEdit( this ); | ||
89 | mSecondCombo->setLineEdit( mSecondEdit ); | ||
90 | layout->addWidget( mSecondCombo, x, y++ ); | ||
91 | layout->addWidget( mSecondEdit, x, y++ ); | ||
92 | |||
93 | y = 0; | ||
94 | ++x; | ||
95 | mThirdCombo = new PhoneTypeCombo( mPhoneList, this ); | ||
96 | mThirdEdit = new KLineEdit( this ); | ||
97 | mThirdCombo->setLineEdit( mThirdEdit ); | ||
98 | layout->addWidget( mThirdCombo, x, y++ ); | ||
99 | layout->addWidget( mThirdEdit, x, y++ ); | ||
100 | if ( QApplication::desktop()->width() < 640 ) { | ||
101 | ++x; | ||
102 | y = 0; | ||
103 | } | ||
104 | mFourthCombo = new PhoneTypeCombo( mPhoneList, this ); | ||
105 | mFourthEdit = new KLineEdit( this ); | ||
106 | mFourthCombo->setLineEdit( mFourthEdit ); | ||
107 | layout->addWidget( mFourthCombo, x, y++ ); | ||
108 | layout->addWidget( mFourthEdit, x, y++ ); | ||
109 | |||
110 | // Four numbers don't fit in the current dialog | ||
111 | if ( QApplication::desktop()->width() < 640 ) { | ||
112 | mFourthCombo->hide(); | ||
113 | mFourthEdit->hide(); | ||
114 | } else { | ||
115 | QFontMetrics fm ( font () ) ; | ||
116 | int wid = fm.width( "Messenger" ) +60; | ||
117 | mPrefCombo->setMaximumWidth( wid ); | ||
118 | mSecondCombo->setMaximumWidth( wid ); | ||
119 | mThirdCombo->setMaximumWidth( wid ); | ||
120 | mFourthCombo->setMaximumWidth( wid ); | ||
121 | } | ||
122 | |||
123 | |||
124 | connect( mPrefEdit, SIGNAL( textChanged( const QString& ) ), | ||
125 | SLOT( slotPrefEditChanged() ) ); | ||
126 | connect( mSecondEdit, SIGNAL( textChanged( const QString& ) ), | ||
127 | SLOT( slotSecondEditChanged() ) ); | ||
128 | connect( mThirdEdit, SIGNAL( textChanged( const QString& ) ), | ||
129 | SLOT( slotThirdEditChanged() ) ); | ||
130 | connect( mFourthEdit, SIGNAL( textChanged( const QString& ) ), | ||
131 | SLOT( slotFourthEditChanged() ) ); | ||
132 | |||
133 | connect( editButton, SIGNAL( clicked() ), SLOT( edit() ) ); | ||
134 | |||
135 | connect( mPrefCombo, SIGNAL( activated( int ) ), | ||
136 | SLOT( updatePrefEdit() ) ); | ||
137 | connect( mSecondCombo, SIGNAL( activated( int ) ), | ||
138 | SLOT( updateSecondEdit() ) ); | ||
139 | connect( mThirdCombo, SIGNAL( activated( int ) ), | ||
140 | SLOT( updateThirdEdit() ) ); | ||
141 | connect( mFourthCombo, SIGNAL( activated( int ) ), | ||
142 | SLOT( updateFourthEdit() ) ); | ||
143 | } | ||
144 | |||
145 | PhoneEditWidget::~PhoneEditWidget() | ||
146 | { | ||
147 | } | ||
148 | |||
149 | void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &list ) | ||
150 | { | ||
151 | mPhoneList.clear(); | ||
152 | |||
153 | // Insert types for existing numbers. | ||
154 | mPrefCombo->insertTypeList( list ); | ||
155 | |||
156 | QValueList<int> defaultTypes; | ||
157 | defaultTypes << KABC::PhoneNumber::Home; | ||
158 | defaultTypes << KABC::PhoneNumber::Work; | ||
159 | defaultTypes << KABC::PhoneNumber::Cell; | ||
160 | defaultTypes << ( KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ); | ||
161 | defaultTypes << ( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ); | ||
162 | |||
163 | // Insert default types. | ||
164 | // Doing this for mPrefCombo is enough because the list is shared by all | ||
165 | // combos. | ||
166 | QValueList<int>::ConstIterator it; | ||
167 | for( it = defaultTypes.begin(); it != defaultTypes.end(); ++it ) { | ||
168 | if ( !mPrefCombo->hasType( *it ) ) | ||
169 | mPrefCombo->insertType( list, *it, PhoneNumber( "", *it ) ); | ||
170 | } | ||
171 | |||
172 | updateCombos(); | ||
173 | |||
174 | mPrefCombo->selectType( defaultTypes[ 0 ] ); | ||
175 | mSecondCombo->selectType( defaultTypes[ 1 ] ); | ||
176 | mThirdCombo->selectType( defaultTypes[ 2 ] ); | ||
177 | mFourthCombo->selectType( defaultTypes[ 3 ] ); | ||
178 | |||
179 | updateLineEdits(); | ||
180 | } | ||
181 | |||
182 | void PhoneEditWidget::updateLineEdits() | ||
183 | { | ||
184 | updatePrefEdit(); | ||
185 | updateSecondEdit(); | ||
186 | updateThirdEdit(); | ||
187 | updateFourthEdit(); | ||
188 | } | ||
189 | |||
190 | void PhoneEditWidget::updateCombos() | ||
191 | { | ||
192 | mPrefCombo->updateTypes(); | ||
193 | mSecondCombo->updateTypes(); | ||
194 | mThirdCombo->updateTypes(); | ||
195 | mFourthCombo->updateTypes(); | ||
196 | } | ||
197 | |||
198 | KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() | ||
199 | { | ||
200 | KABC::PhoneNumber::List retList; | ||
201 | |||
202 | KABC::PhoneNumber::List::Iterator it; | ||
203 | for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it ) | ||
204 | if ( !(*it).number().isEmpty() ) | ||
205 | retList.append( *it ); | ||
206 | |||
207 | return retList; | ||
208 | } | ||
209 | |||
210 | void PhoneEditWidget::edit() | ||
211 | { | ||
212 | PhoneEditDialog dlg( mPhoneList, this ); | ||
213 | |||
214 | if ( dlg.exec() ) { | ||
215 | if ( dlg.changed() ) { | ||
216 | mPhoneList = dlg.phoneNumbers(); | ||
217 | updateCombos(); | ||
218 | emit modified(); | ||
219 | } | ||
220 | } | ||
221 | } | ||
222 | |||
223 | void PhoneEditWidget::updatePrefEdit() | ||
224 | { | ||
225 | updateEdit( mPrefCombo ); | ||
226 | } | ||
227 | |||
228 | void PhoneEditWidget::updateSecondEdit() | ||
229 | { | ||
230 | updateEdit( mSecondCombo ); | ||
231 | } | ||
232 | |||
233 | void PhoneEditWidget::updateThirdEdit() | ||
234 | { | ||
235 | updateEdit( mThirdCombo ); | ||
236 | } | ||
237 | |||
238 | void PhoneEditWidget::updateFourthEdit() | ||
239 | { | ||
240 | updateEdit( mFourthCombo ); | ||
241 | } | ||
242 | |||
243 | void PhoneEditWidget::updateEdit( PhoneTypeCombo *combo ) | ||
244 | { | ||
245 | QLineEdit *edit = combo->lineEdit(); | ||
246 | if ( !edit ) | ||
247 | return; | ||
248 | |||
249 | #if 0 | ||
250 | if ( edit == mPrefEdit ) kdDebug(5720) << " prefEdit" << endl; | ||
251 | if ( edit == mSecondEdit ) kdDebug(5720) << " secondEdit" << endl; | ||
252 | if ( edit == mThirdEdit ) kdDebug(5720) << " thirdEdit" << endl; | ||
253 | if ( edit == mFourthEdit ) kdDebug(5720) << " fourthEdit" << endl; | ||
254 | #endif | ||
255 | |||
256 | PhoneNumber::List::Iterator it = combo->selectedElement(); | ||
257 | if ( it != mPhoneList.end() ) { | ||
258 | edit->setText( (*it).number() ); | ||
259 | } else { | ||
260 | kdDebug(5720) << "PhoneEditWidget::updateEdit(): no selected element" << endl; | ||
261 | } | ||
262 | } | ||
263 | |||
264 | void PhoneEditWidget::slotPrefEditChanged() | ||
265 | { | ||
266 | updatePhoneNumber( mPrefCombo ); | ||
267 | } | ||
268 | |||
269 | void PhoneEditWidget::slotSecondEditChanged() | ||
270 | { | ||
271 | updatePhoneNumber( mSecondCombo ); | ||
272 | } | ||
273 | |||
274 | void PhoneEditWidget::slotThirdEditChanged() | ||
275 | { | ||
276 | updatePhoneNumber( mThirdCombo ); | ||
277 | } | ||
278 | |||
279 | void PhoneEditWidget::slotFourthEditChanged() | ||
280 | { | ||
281 | updatePhoneNumber( mFourthCombo ); | ||
282 | } | ||
283 | |||
284 | void PhoneEditWidget::updatePhoneNumber( PhoneTypeCombo *combo ) | ||
285 | { | ||
286 | QLineEdit *edit = combo->lineEdit(); | ||
287 | if ( !edit ) return; | ||
288 | |||
289 | PhoneNumber::List::Iterator it = combo->selectedElement(); | ||
290 | if ( it != mPhoneList.end() ) { | ||
291 | (*it).setNumber( edit->text() ); | ||
292 | } else { | ||
293 | kdDebug(5720) << "PhoneEditWidget::updatePhoneNumber(): no selected element" | ||
294 | << endl; | ||
295 | } | ||
296 | |||
297 | updateOtherEdit( combo, mPrefCombo ); | ||
298 | updateOtherEdit( combo, mSecondCombo ); | ||
299 | updateOtherEdit( combo, mThirdCombo ); | ||
300 | updateOtherEdit( combo, mFourthCombo ); | ||
301 | |||
302 | emit modified(); | ||
303 | } | ||
304 | |||
305 | void PhoneEditWidget::updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo ) | ||
306 | { | ||
307 | if ( combo == otherCombo ) return; | ||
308 | |||
309 | if ( combo->currentItem() == otherCombo->currentItem() ) { | ||
310 | updateEdit( otherCombo ); | ||
311 | } | ||
312 | } | ||
313 | |||
314 | /////////////////////////////////////////// | ||
315 | // PhoneEditDialog | ||
316 | |||
317 | class PhoneViewItem : public QListViewItem | ||
318 | { | ||
319 | public: | ||
320 | PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ); | ||
321 | |||
322 | void setPhoneNumber( const KABC::PhoneNumber &number ) | ||
323 | { | ||
324 | mPhoneNumber = number; | ||
325 | makeText(); | ||
326 | } | ||
327 | |||
328 | QString key() { return mPhoneNumber.id(); } | ||
329 | QString country() { return ""; } | ||
330 | QString region() { return ""; } | ||
331 | QString number() { return ""; } | ||
332 | |||
333 | KABC::PhoneNumber phoneNumber() { return mPhoneNumber; } | ||
334 | |||
335 | private: | ||
336 | void makeText(); | ||
337 | |||
338 | KABC::PhoneNumber mPhoneNumber; | ||
339 | }; | ||
340 | |||
341 | PhoneViewItem::PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ) | ||
342 | : QListViewItem( parent ), mPhoneNumber( number ) | ||
343 | { | ||
344 | makeText(); | ||
345 | } | ||
346 | |||
347 | void PhoneViewItem::makeText() | ||
348 | { | ||
349 | /** | ||
350 | * Will be used in future versions of kaddressbook/libkabc | ||
351 | |||
352 | setText( 0, mPhoneNumber.country() ); | ||
353 | setText( 1, mPhoneNumber.region() ); | ||
354 | setText( 2, mPhoneNumber.number() ); | ||
355 | setText( 3, mPhoneNumber.typeLabel() ); | ||
356 | */ | ||
357 | |||
358 | setText( 0, mPhoneNumber.number() ); | ||
359 | setText( 1, mPhoneNumber.typeLabel() ); | ||
360 | } | ||
361 | |||
362 | PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name ) | ||
363 | : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Numbers" ), | ||
364 | KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, | ||
365 | parent, name, true) | ||
366 | { | ||
367 | mPhoneNumberList = list; | ||
368 | |||
369 | QWidget *page = plainPage(); | ||
370 | |||
371 | QGridLayout *layout = new QGridLayout( page, 1, 2 ); | ||
372 | layout->setSpacing( spacingHint() ); | ||
373 | |||
374 | mListView = new KListView( page ); | ||
375 | mListView->setAllColumnsShowFocus( true ); | ||
376 | mListView->addColumn( i18n( "Number" ) ); | ||
377 | mListView->addColumn( i18n( "Type" ) ); | ||
378 | |||
379 | KButtonBox *buttonBox = new KButtonBox( page, Vertical ); | ||
380 | |||
381 | buttonBox->addButton( i18n( "&Add..." ), this, SLOT( slotAddPhoneNumber() ) ); | ||
382 | mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( slotEditPhoneNumber() ) ); | ||
383 | mEditButton->setEnabled( false ); | ||
384 | mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( slotRemovePhoneNumber() ) ); | ||
385 | mRemoveButton->setEnabled( false ); | ||
386 | buttonBox->layout(); | ||
387 | |||
388 | layout->addWidget( mListView, 0, 0 ); | ||
389 | layout->addWidget( buttonBox, 0, 1 ); | ||
390 | |||
391 | connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) ); | ||
392 | connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber())); | ||
393 | |||
394 | KABC::PhoneNumber::List::Iterator it; | ||
395 | for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it ) | ||
396 | new PhoneViewItem( mListView, *it ); | ||
397 | |||
398 | mChanged = false; | ||
399 | } | ||
400 | |||
401 | PhoneEditDialog::~PhoneEditDialog() | ||
402 | { | ||
403 | } | ||
404 | |||
405 | void PhoneEditDialog::slotAddPhoneNumber() | ||
406 | { | ||
407 | KABC::PhoneNumber tmp( "", 0 ); | ||
408 | PhoneTypeDialog dlg( tmp, this ); | ||
409 | |||
410 | if ( dlg.exec() ) { | ||
411 | KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); | ||
412 | mPhoneNumberList.append( phoneNumber ); | ||
413 | new PhoneViewItem( mListView, phoneNumber ); | ||
414 | |||
415 | mChanged = true; | ||
416 | } | ||
417 | } | ||
418 | |||
419 | void PhoneEditDialog::slotRemovePhoneNumber() | ||
420 | { | ||
421 | PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); | ||
422 | if ( !item ) | ||
423 | return; | ||
424 | |||
425 | mPhoneNumberList.remove( item->phoneNumber() ); | ||
426 | QListViewItem *currItem = mListView->currentItem(); | ||
427 | mListView->takeItem( currItem ); | ||
428 | delete currItem; | ||
429 | |||
430 | mChanged = true; | ||
431 | } | ||
432 | |||
433 | void PhoneEditDialog::slotEditPhoneNumber() | ||
434 | { | ||
435 | PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); | ||
436 | if ( !item ) | ||
437 | return; | ||
438 | |||
439 | PhoneTypeDialog dlg( item->phoneNumber(), this ); | ||
440 | |||
441 | if ( dlg.exec() ) { | ||
442 | slotRemovePhoneNumber(); | ||
443 | KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); | ||
444 | mPhoneNumberList.append( phoneNumber ); | ||
445 | new PhoneViewItem( mListView, phoneNumber ); | ||
446 | |||
447 | mChanged = true; | ||
448 | } | ||
449 | } | ||
450 | |||
451 | void PhoneEditDialog::slotSelectionChanged() | ||
452 | { | ||
453 | bool state = ( mListView->currentItem() != 0 ); | ||
454 | |||
455 | mRemoveButton->setEnabled( state ); | ||
456 | mEditButton->setEnabled( state ); | ||
457 | } | ||
458 | |||
459 | const KABC::PhoneNumber::List &PhoneEditDialog::phoneNumbers() | ||
460 | { | ||
461 | return mPhoneNumberList; | ||
462 | } | ||
463 | |||
464 | bool PhoneEditDialog::changed() const | ||
465 | { | ||
466 | return mChanged; | ||
467 | } | ||
468 | |||
469 | /////////////////////////////////////////// | ||
470 | // PhoneTypeDialog | ||
471 | PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, | ||
472 | QWidget *parent, const char *name) | ||
473 | : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Number" ), | ||
474 | KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, | ||
475 | parent, name, true), mPhoneNumber( phoneNumber ) | ||
476 | { | ||
477 | QWidget *page = plainPage(); | ||
478 | QLabel *label = 0; | ||
479 | QGridLayout *layout = new QGridLayout( page, 3, 2, marginHint(), spacingHint() ); | ||
480 | |||
481 | label = new QLabel( i18n( "Number:" ), page ); | ||
482 | layout->addWidget( label, 0, 0 ); | ||
483 | mNumber = new KLineEdit( page ); | ||
484 | layout->addWidget( mNumber, 0, 1 ); | ||
485 | |||
486 | mPreferredBox = new QCheckBox( i18n( "This is the preferred phone number" ), page ); | ||
487 | layout->addMultiCellWidget( mPreferredBox, 1, 1, 0, 1 ); | ||
488 | |||
489 | mGroup = new QButtonGroup( 2, Horizontal, i18n( "Types" ), page ); | ||
490 | layout->addMultiCellWidget( mGroup, 2, 2, 0, 1 ); | ||
491 | |||
492 | // fill widgets | ||
493 | mNumber->setText( mPhoneNumber.number() ); | ||
494 | |||
495 | mTypeList = KABC::PhoneNumber::typeList(); | ||
496 | mTypeList.remove( KABC::PhoneNumber::Pref ); | ||
497 | |||
498 | KABC::PhoneNumber::TypeList::Iterator it; | ||
499 | for ( it = mTypeList.begin(); it != mTypeList.end(); ++it ) | ||
500 | new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup ); | ||
501 | |||
502 | for ( int i = 0; i < mGroup->count(); ++i ) { | ||
503 | int type = mPhoneNumber.type(); | ||
504 | QCheckBox *box = (QCheckBox*)mGroup->find( i ); | ||
505 | box->setChecked( type & mTypeList[ i ] ); | ||
506 | } | ||
507 | |||
508 | mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref ); | ||
509 | } | ||
510 | |||
511 | KABC::PhoneNumber PhoneTypeDialog::phoneNumber() | ||
512 | { | ||
513 | mPhoneNumber.setNumber( mNumber->text() ); | ||
514 | |||
515 | int type = 0; | ||
516 | for ( int i = 0; i < mGroup->count(); ++i ) { | ||
517 | QCheckBox *box = (QCheckBox*)mGroup->find( i ); | ||
518 | if ( box->isChecked() ) | ||
519 | type += mTypeList[ i ]; | ||
520 | } | ||
521 | |||
522 | if ( mPreferredBox->isChecked() ) | ||
523 | mPhoneNumber.setType( type | KABC::PhoneNumber::Pref ); | ||
524 | else | ||
525 | mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref ); | ||
526 | |||
527 | return mPhoneNumber; | ||
528 | } | ||
529 | |||
530 | #ifndef KAB_EMBEDDED | ||
531 | #include "phoneeditwidget.moc" | ||
532 | #endif //KAB_EMBEDDED | ||