Diffstat (limited to 'kaddressbook/addresseditwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kaddressbook/addresseditwidget.cpp | 622 |
1 files changed, 622 insertions, 0 deletions
diff --git a/kaddressbook/addresseditwidget.cpp b/kaddressbook/addresseditwidget.cpp new file mode 100644 index 0000000..3dcd592 --- a/dev/null +++ b/kaddressbook/addresseditwidget.cpp | |||
@@ -0,0 +1,622 @@ | |||
1 | /* | ||
2 | This file is part of KAddressBook. | ||
3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> | ||
4 | 2003 Tobias Koenig <tokoe@kde.org> | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2 of the License, or | ||
9 | (at your option) any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software | ||
18 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
19 | |||
20 | As a special exception, permission is given to link this program | ||
21 | with any edition of Qt, and distribute the resulting executable, | ||
22 | without including the source code for Qt in the source distribution. | ||
23 | */ | ||
24 | |||
25 | #include <qbuttongroup.h> | ||
26 | #include <qcheckbox.h> | ||
27 | #include <qhbox.h> | ||
28 | #include <qlabel.h> | ||
29 | #include <qlayout.h> | ||
30 | #include <qlistbox.h> | ||
31 | #include <qlistview.h> | ||
32 | #include <qpushbutton.h> | ||
33 | #include <qsignal.h> | ||
34 | #include <qstring.h> | ||
35 | #include <qapplication.h> | ||
36 | |||
37 | #ifndef KAB_EMBEDDED | ||
38 | #include <qtextedit.h> | ||
39 | #include <kaccelmanager.h> | ||
40 | #include <kbuttonbox.h> | ||
41 | #else //KAB_EMBEDDED | ||
42 | #include <qmultilineedit.h> | ||
43 | #endif //KAB_EMBEDDED | ||
44 | |||
45 | #include <qtoolbutton.h> | ||
46 | #include <qtooltip.h> | ||
47 | |||
48 | #include <kapplication.h> | ||
49 | #include <kcombobox.h> | ||
50 | #include <kconfig.h> | ||
51 | #include <kdebug.h> | ||
52 | #include <kdialog.h> | ||
53 | #include <kiconloader.h> | ||
54 | #include <klineedit.h> | ||
55 | #include <klistview.h> | ||
56 | #include <klocale.h> | ||
57 | #include <kglobal.h> | ||
58 | #include <kmessagebox.h> | ||
59 | #include <kseparator.h> | ||
60 | |||
61 | #include "addresseditwidget.h" | ||
62 | |||
63 | |||
64 | |||
65 | AddressEditWidget::AddressEditWidget( QWidget *parent, const char *name ) | ||
66 | : QWidget( parent, name ) | ||
67 | { | ||
68 | |||
69 | mConfig = AddresseeConfig::instance(); | ||
70 | QVBoxLayout *layout = new QVBoxLayout( this ); | ||
71 | layout->setSpacing( KDialog::spacingHintSmall() ); | ||
72 | QHBox *b1 = new QHBox( this); | ||
73 | //QLabel * label = new QLabel( b1 ); | ||
74 | //label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) ); | ||
75 | |||
76 | |||
77 | //label->setAlignment( AlignCenter); | ||
78 | layout->addWidget( b1 ); | ||
79 | mTypeCombo = new AddressTypeCombo( mAddressList, b1 ); | ||
80 | QPushButton *editButton = new QPushButton( i18n( "&Edit Addresses..." ), | ||
81 | b1 ); | ||
82 | connect( mTypeCombo, SIGNAL( activated( int ) ), | ||
83 | SLOT( updateAddressEdit() ) ); | ||
84 | // layout->addWidget( mTypeCombo ); | ||
85 | |||
86 | #ifndef KAB_EMBEDDED | ||
87 | mAddressTextEdit = new QTextEdit( this ); | ||
88 | mAddressTextEdit->setReadOnly( true ); | ||
89 | mAddressTextEdit->setMinimumHeight( 20 ); | ||
90 | #else //KAB_EMBEDDED | ||
91 | mAddressTextEdit = new QMultiLineEdit( this ); | ||
92 | mAddressTextEdit->setReadOnly( true ); | ||
93 | mAddressTextEdit->setMinimumHeight( 20 ); | ||
94 | #endif //KAB_EMBEDDED | ||
95 | |||
96 | layout->addWidget( mAddressTextEdit ); | ||
97 | |||
98 | |||
99 | connect( editButton, SIGNAL( clicked() ), SLOT( edit() ) ); | ||
100 | } | ||
101 | |||
102 | AddressEditWidget::~AddressEditWidget() | ||
103 | { | ||
104 | |||
105 | } | ||
106 | |||
107 | KABC::Address::List AddressEditWidget::addresses() | ||
108 | { | ||
109 | KABC::Address::List retList; | ||
110 | |||
111 | KABC::Address::List::Iterator it; | ||
112 | for ( it = mAddressList.begin(); it != mAddressList.end(); ++it ) | ||
113 | if ( !(*it).isEmpty() ) | ||
114 | retList.append( *it ); | ||
115 | |||
116 | return retList; | ||
117 | } | ||
118 | |||
119 | void AddressEditWidget::setAddresses( const KABC::Addressee &addr, | ||
120 | const KABC::Address::List &list ) | ||
121 | { | ||
122 | mAddressee = addr; | ||
123 | |||
124 | mAddressList.clear(); | ||
125 | |||
126 | // Insert types for existing numbers. | ||
127 | mTypeCombo->insertTypeList( list ); | ||
128 | |||
129 | QValueList<int> defaultTypes; | ||
130 | defaultTypes << KABC::Address::Home; | ||
131 | defaultTypes << KABC::Address::Work; | ||
132 | |||
133 | mConfig->setUid( mAddressee.uid() ); | ||
134 | QValueList<int> configList = mConfig->noDefaultAddrTypes(); | ||
135 | QValueList<int>::ConstIterator it; | ||
136 | for ( it = configList.begin(); it != configList.end(); ++it ) | ||
137 | defaultTypes.remove( *it ); | ||
138 | |||
139 | // Insert default types. | ||
140 | // Doing this for mPrefCombo is enough because the list is shared by all | ||
141 | // combos. | ||
142 | for( it = defaultTypes.begin(); it != defaultTypes.end(); ++it ) { | ||
143 | if ( !mTypeCombo->hasType( *it ) ) | ||
144 | mTypeCombo->insertType( list, *it, Address( *it ) ); | ||
145 | } | ||
146 | |||
147 | mTypeCombo->updateTypes(); | ||
148 | |||
149 | // find preferred address which will be shown | ||
150 | int preferred = KABC::Address::Home; // default if no preferred address set | ||
151 | uint i; | ||
152 | for (i = 0; i < list.count(); i++) | ||
153 | if ( list[i].type() & KABC::Address::Pref ) { | ||
154 | preferred = list[i].type(); | ||
155 | break; | ||
156 | } | ||
157 | |||
158 | mTypeCombo->selectType( preferred ); | ||
159 | |||
160 | updateAddressEdit(); | ||
161 | } | ||
162 | |||
163 | void AddressEditWidget::edit() | ||
164 | { | ||
165 | AddressEditDialog dialog( mAddressList, mTypeCombo->currentItem(), this ); | ||
166 | if ( dialog.exec() ) { | ||
167 | if ( dialog.changed() ) { | ||
168 | mAddressList = dialog.addresses(); | ||
169 | |||
170 | bool hasHome = false, hasWork = false; | ||
171 | KABC::Address::List::Iterator it; | ||
172 | for ( it = mAddressList.begin(); it != mAddressList.end(); ++it ) { | ||
173 | if ( (*it).type() == KABC::Address::Home ) { | ||
174 | if ( !(*it).isEmpty() ) | ||
175 | hasHome = true; | ||
176 | } | ||
177 | if ( (*it).type() == KABC::Address::Work ) { | ||
178 | if ( !(*it).isEmpty() ) | ||
179 | hasWork = true; | ||
180 | } | ||
181 | } | ||
182 | |||
183 | mConfig->setUid( mAddressee.uid() ); | ||
184 | QValueList<int> configList; | ||
185 | if ( !hasHome ) { | ||
186 | configList << KABC::Address::Home; | ||
187 | } | ||
188 | if ( !hasWork ) { | ||
189 | configList << KABC::Address::Work; | ||
190 | } | ||
191 | mConfig->setNoDefaultAddrTypes( configList ); | ||
192 | |||
193 | mTypeCombo->updateTypes(); | ||
194 | updateAddressEdit(); | ||
195 | emit modified(); | ||
196 | } | ||
197 | } | ||
198 | } | ||
199 | |||
200 | void AddressEditWidget::updateAddressEdit() | ||
201 | { | ||
202 | KABC::Address::List::Iterator it = mTypeCombo->selectedElement(); | ||
203 | |||
204 | bool block = signalsBlocked(); | ||
205 | blockSignals( true ); | ||
206 | |||
207 | mAddressTextEdit->setText( "" ); | ||
208 | |||
209 | if ( it != mAddressList.end() ) { | ||
210 | KABC::Address a = *it; | ||
211 | if ( !a.isEmpty() ) { | ||
212 | #if KDE_VERSION >= 319 | ||
213 | if ( a.type() & KABC::Address::Work ) { | ||
214 | mAddressTextEdit->setText( a.formattedAddress( mAddressee.realName(), | ||
215 | mAddressee.organization() ) ); | ||
216 | } else { | ||
217 | mAddressTextEdit->setText( a.formattedAddress( mAddressee.realName() ) ); | ||
218 | } | ||
219 | #else | ||
220 | QString text; | ||
221 | if ( !a.street().isEmpty() ) | ||
222 | text += a.street() + "\n"; | ||
223 | |||
224 | if ( !a.postOfficeBox().isEmpty() ) | ||
225 | text += a.postOfficeBox() + "\n"; | ||
226 | |||
227 | text += a.locality() + QString(" ") + a.region(); | ||
228 | |||
229 | if ( !a.postalCode().isEmpty() ) | ||
230 | text += QString(", ") + a.postalCode(); | ||
231 | |||
232 | text += "\n"; | ||
233 | |||
234 | if ( !a.country().isEmpty() ) | ||
235 | text += a.country() + "\n"; | ||
236 | |||
237 | text += a.extended(); | ||
238 | |||
239 | mAddressTextEdit->setText( text ); | ||
240 | #endif | ||
241 | } | ||
242 | } | ||
243 | |||
244 | blockSignals( block ); | ||
245 | } | ||
246 | |||
247 | AddressEditDialog::AddressEditDialog( const KABC::Address::List &list, | ||
248 | int selected, QWidget *parent, | ||
249 | const char *name ) | ||
250 | : KDialogBase( Plain, i18n( "Edit Address" ), Ok | Cancel, Ok, | ||
251 | parent, name, true, true ), | ||
252 | mPreviousAddress( 0 ) | ||
253 | { | ||
254 | mAddressList = list; | ||
255 | |||
256 | QWidget *page = plainPage(); | ||
257 | |||
258 | QGridLayout *topLayout = new QGridLayout( page, 8, 2 ); | ||
259 | topLayout->setSpacing( spacingHintSmall() ); | ||
260 | |||
261 | mTypeCombo = new AddressTypeCombo( mAddressList, page ); | ||
262 | topLayout->addMultiCellWidget( mTypeCombo, 0, 0, 0, 1 ); | ||
263 | |||
264 | QLabel *label = new QLabel( i18n( "Street:" ), page ); | ||
265 | label->setAlignment( Qt::AlignTop | Qt::AlignLeft ); | ||
266 | topLayout->addWidget( label, 1, 0 ); | ||
267 | |||
268 | #ifndef KAB_EMBEDDED | ||
269 | mStreetTextEdit = new QTextEdit( page ); | ||
270 | #else //KAB_EMBEDDED | ||
271 | mStreetTextEdit = new QMultiLineEdit( page ); | ||
272 | //US qDebug("AddressEditDialog::AddressEditDialog has to be changed"); | ||
273 | #endif //KAB_EMBEDDED | ||
274 | |||
275 | label->setBuddy( mStreetTextEdit ); | ||
276 | topLayout->addWidget( mStreetTextEdit, 1, 1 ); | ||
277 | |||
278 | label = new QLabel( i18n( "Post office box:" ), page ); | ||
279 | topLayout->addWidget( label, 2 , 0 ); | ||
280 | mPOBoxEdit = new KLineEdit( page ); | ||
281 | label->setBuddy( mPOBoxEdit ); | ||
282 | topLayout->addWidget( mPOBoxEdit, 2, 1 ); | ||
283 | int maxwid = QApplication::desktop()->width(); | ||
284 | maxwid -= (spacingHintSmall()+label->sizeHint().width() ); | ||
285 | label = new QLabel( i18n( "Locality:" ), page ); | ||
286 | topLayout->addWidget( label, 3, 0 ); | ||
287 | mLocalityEdit = new KLineEdit( page ); | ||
288 | label->setBuddy( mLocalityEdit ); | ||
289 | topLayout->addWidget( mLocalityEdit, 3, 1 ); | ||
290 | |||
291 | label = new QLabel( i18n( "Region:" ), page ); | ||
292 | topLayout->addWidget( label, 4, 0 ); | ||
293 | mRegionEdit = new KLineEdit( page ); | ||
294 | label->setBuddy( mRegionEdit ); | ||
295 | topLayout->addWidget( mRegionEdit, 4, 1 ); | ||
296 | |||
297 | label = new QLabel( i18n( "Postal code:" ), page ); | ||
298 | topLayout->addWidget( label, 5, 0 ); | ||
299 | mPostalCodeEdit = new KLineEdit( page ); | ||
300 | label->setBuddy( mPostalCodeEdit ); | ||
301 | topLayout->addWidget( mPostalCodeEdit, 5, 1 ); | ||
302 | |||
303 | label = new QLabel( i18n( "Country:" ), page ); | ||
304 | topLayout->addWidget( label, 6, 0 ); | ||
305 | mCountryCombo = new KComboBox( page ); | ||
306 | |||
307 | mCountryCombo->setMaximumWidth( maxwid -10 ); | ||
308 | mCountryCombo->setEditable( true ); | ||
309 | mCountryCombo->setDuplicatesEnabled( false ); | ||
310 | mCountryCombo->setAutoCompletion( true ); | ||
311 | fillCountryCombo(); | ||
312 | label->setBuddy( mCountryCombo ); | ||
313 | topLayout->addWidget( mCountryCombo, 6, 1 ); | ||
314 | mCountryCombo->setSizeLimit( 8); | ||
315 | mPreferredCheckBox = new QCheckBox( i18n( "This is the preferred address" ), page ); | ||
316 | topLayout->addMultiCellWidget( mPreferredCheckBox, 7, 7, 0, 1 ); | ||
317 | /* | ||
318 | KSeparator *sep = new KSeparator( KSeparator::HLine, page ); | ||
319 | topLayout->addMultiCellWidget( sep, 8, 8, 0, 1 ); | ||
320 | */ | ||
321 | QHBox *buttonBox = new QHBox( page ); | ||
322 | buttonBox->setSpacing( spacingHint() ); | ||
323 | topLayout->addMultiCellWidget( buttonBox, 9, 9, 0, 1 ); | ||
324 | |||
325 | QPushButton *addButton = new QPushButton( i18n( "New..." ), buttonBox ); | ||
326 | connect( addButton, SIGNAL( clicked() ), SLOT( addAddress() ) ); | ||
327 | |||
328 | mRemoveButton = new QPushButton( i18n( "Remove" ), buttonBox ); | ||
329 | connect( mRemoveButton, SIGNAL( clicked() ), SLOT( removeAddress() ) ); | ||
330 | |||
331 | mChangeTypeButton = new QPushButton( i18n( "Change Type" ), buttonBox ); | ||
332 | connect( mChangeTypeButton, SIGNAL( clicked() ), SLOT( changeType() ) ); | ||
333 | |||
334 | mTypeCombo->updateTypes(); | ||
335 | mTypeCombo->setCurrentItem( selected ); | ||
336 | |||
337 | updateAddressEdits(); | ||
338 | |||
339 | connect( mTypeCombo, SIGNAL( activated( int ) ), | ||
340 | SLOT( updateAddressEdits() ) ); | ||
341 | connect( mStreetTextEdit, SIGNAL( textChanged() ), SLOT( modified() ) ); | ||
342 | connect( mPOBoxEdit, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); | ||
343 | connect( mLocalityEdit, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); | ||
344 | connect( mRegionEdit, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); | ||
345 | connect( mPostalCodeEdit, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); | ||
346 | connect( mCountryCombo, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); | ||
347 | connect( mPreferredCheckBox, SIGNAL( toggled( bool ) ), SLOT( modified() ) ); | ||
348 | |||
349 | #ifndef KAB_EMBEDDED | ||
350 | KAcceleratorManager::manage( this ); | ||
351 | #else //KAB_EMBEDDED | ||
352 | //US qDebug("AddressEditDialog::AddressEditDialog has to be changed 2"); | ||
353 | #endif //KAB_EMBEDDED | ||
354 | |||
355 | mChanged = false; | ||
356 | |||
357 | bool state = (mAddressList.count() > 0); | ||
358 | mRemoveButton->setEnabled( state ); | ||
359 | mChangeTypeButton->setEnabled( state ); | ||
360 | #ifndef DESKTOP_VERSION | ||
361 | showMaximized(); | ||
362 | #endif | ||
363 | } | ||
364 | |||
365 | AddressEditDialog::~AddressEditDialog() | ||
366 | { | ||
367 | } | ||
368 | |||
369 | KABC::Address::List AddressEditDialog::addresses() | ||
370 | { | ||
371 | saveAddress( *(mTypeCombo->selectedElement()) ); | ||
372 | |||
373 | return mAddressList; | ||
374 | } | ||
375 | |||
376 | bool AddressEditDialog::changed() const | ||
377 | { | ||
378 | return mChanged; | ||
379 | } | ||
380 | |||
381 | void AddressEditDialog::addAddress() | ||
382 | { | ||
383 | AddressTypeDialog dlg( mTypeCombo->selectedType(), this ); | ||
384 | if ( dlg.exec() ) { | ||
385 | mAddressList.append( Address( dlg.type() ) ); | ||
386 | |||
387 | mTypeCombo->updateTypes(); | ||
388 | mTypeCombo->setCurrentItem( mTypeCombo->count() - 1 ); | ||
389 | updateAddressEdits(); | ||
390 | |||
391 | modified(); | ||
392 | |||
393 | mRemoveButton->setEnabled( true ); | ||
394 | mChangeTypeButton->setEnabled( true ); | ||
395 | } | ||
396 | } | ||
397 | |||
398 | void AddressEditDialog::removeAddress() | ||
399 | { | ||
400 | if ( mAddressList.count() > 0 ) { | ||
401 | KABC::Address::List::Iterator it = mTypeCombo->selectedElement(); | ||
402 | if ( mPreviousAddress && mPreviousAddress->id() == (*it).id() ) | ||
403 | mPreviousAddress = 0; | ||
404 | |||
405 | mAddressList.remove( it ); | ||
406 | mTypeCombo->updateTypes(); | ||
407 | updateAddressEdits(); | ||
408 | |||
409 | modified(); | ||
410 | } | ||
411 | |||
412 | bool state = ( mAddressList.count() > 0 ); | ||
413 | mRemoveButton->setEnabled( state ); | ||
414 | mChangeTypeButton->setEnabled( state ); | ||
415 | } | ||
416 | |||
417 | void AddressEditDialog::changeType() | ||
418 | { | ||
419 | KABC::Address::List::Iterator a = mTypeCombo->selectedElement(); | ||
420 | |||
421 | AddressTypeDialog dlg( (*a).type(), this ); | ||
422 | if ( dlg.exec() ) { | ||
423 | (*a).setType( dlg.type() ); | ||
424 | |||
425 | mTypeCombo->updateTypes(); | ||
426 | |||
427 | modified(); | ||
428 | } | ||
429 | } | ||
430 | |||
431 | void AddressEditDialog::updateAddressEdits() | ||
432 | { | ||
433 | if ( mPreviousAddress ) | ||
434 | saveAddress( *mPreviousAddress ); | ||
435 | |||
436 | KABC::Address::List::Iterator it = mTypeCombo->selectedElement(); | ||
437 | KABC::Address a = *it; | ||
438 | mPreviousAddress = &(*it); | ||
439 | |||
440 | bool tmp = mChanged; | ||
441 | |||
442 | mStreetTextEdit->setText( a.street() ); | ||
443 | mRegionEdit->setText( a.region() ); | ||
444 | mLocalityEdit->setText( a.locality() ); | ||
445 | mPostalCodeEdit->setText( a.postalCode() ); | ||
446 | mPOBoxEdit->setText( a.postOfficeBox() ); | ||
447 | |||
448 | #ifndef KAB_EMBEDDED | ||
449 | mCountryCombo->setCurrentText( a.country() ); | ||
450 | #else //KAB_EMBEDDED | ||
451 | mCountryCombo->setEditText( a.country() ); | ||
452 | //US qDebug("AddressEditDialog::updateAddressEdits has to be changed 1"); | ||
453 | #endif //KAB_EMBEDDED | ||
454 | |||
455 | mPreferredCheckBox->setChecked( a.type() & KABC::Address::Pref ); | ||
456 | |||
457 | mStreetTextEdit->setFocus(); | ||
458 | |||
459 | mChanged = tmp; | ||
460 | } | ||
461 | |||
462 | void AddressEditDialog::modified() | ||
463 | { | ||
464 | mChanged = true; | ||
465 | } | ||
466 | |||
467 | void AddressEditDialog::saveAddress( KABC::Address &addr ) | ||
468 | { | ||
469 | addr.setLocality( mLocalityEdit->text() ); | ||
470 | addr.setRegion( mRegionEdit->text() ); | ||
471 | addr.setPostalCode( mPostalCodeEdit->text() ); | ||
472 | addr.setCountry( mCountryCombo->currentText() ); | ||
473 | addr.setPostOfficeBox( mPOBoxEdit->text() ); | ||
474 | addr.setStreet( mStreetTextEdit->text() ); | ||
475 | |||
476 | |||
477 | if ( mPreferredCheckBox->isChecked() ) { | ||
478 | KABC::Address::List::Iterator it; | ||
479 | for ( it = mAddressList.begin(); it != mAddressList.end(); ++it ) | ||
480 | (*it).setType( (*it).type() & ~( KABC::Address::Pref ) ); | ||
481 | |||
482 | addr.setType( addr.type() | KABC::Address::Pref ); | ||
483 | } | ||
484 | } | ||
485 | |||
486 | void AddressEditDialog::fillCountryCombo() | ||
487 | { | ||
488 | QString country[] = { | ||
489 | i18n( "Afghanistan" ), i18n( "Albania" ), i18n( "Algeria" ), | ||
490 | i18n( "American Samoa" ), i18n( "Andorra" ), i18n( "Angola" ), | ||
491 | i18n( "Anguilla" ), i18n( "Antarctica" ), i18n( "Antigua and Barbuda" ), | ||
492 | i18n( "Argentina" ), i18n( "Armenia" ), i18n( "Aruba" ), | ||
493 | i18n( "Ashmore and Cartier Islands" ), i18n( "Australia" ), | ||
494 | i18n( "Austria" ), i18n( "Azerbaijan" ), i18n( "Bahamas" ), | ||
495 | i18n( "Bahrain" ), i18n( "Bangladesh" ), i18n( "Barbados" ), | ||
496 | i18n( "Belarus" ), i18n( "Belgium" ), i18n( "Belize" ), | ||
497 | i18n( "Benin" ), i18n( "Bermuda" ), i18n( "Bhutan" ), | ||
498 | i18n( "Bolivia" ), i18n( "Bosnia and Herzegovina" ), i18n( "Botswana" ), | ||
499 | i18n( "Brazil" ), i18n( "Brunei" ), i18n( "Bulgaria" ), | ||
500 | i18n( "Burkina Faso" ), i18n( "Burundi" ), i18n( "Cambodia" ), | ||
501 | i18n( "Cameroon" ), i18n( "Canada" ), i18n( "Cape Verde" ), | ||
502 | i18n( "Cayman Islands" ), i18n( "Central African Republic" ), | ||
503 | i18n( "Chad" ), i18n( "Chile" ), i18n( "China" ), i18n( "Colombia" ), | ||
504 | i18n( "Comoros" ), i18n( "Congo" ), i18n( "Congo, Dem. Rep." ), | ||
505 | i18n( "Costa Rica" ), i18n( "Croatia" ), | ||
506 | i18n( "Cuba" ), i18n( "Cyprus" ), i18n( "Czech Republic" ), | ||
507 | i18n( "Denmark" ), i18n( "Djibouti" ), | ||
508 | i18n( "Dominica" ), i18n( "Dominican Republic" ), i18n( "Ecuador" ), | ||
509 | i18n( "Egypt" ), i18n( "El Salvador" ), i18n( "Equatorial Guinea" ), | ||
510 | i18n( "Eritrea" ), i18n( "Estonia" ), i18n( "England" ), | ||
511 | i18n( "Ethiopia" ), i18n( "European Union" ), i18n( "Faroe Islands" ), | ||
512 | i18n( "Fiji" ), i18n( "Finland" ), i18n( "France" ), | ||
513 | i18n( "French Polynesia" ), i18n( "Gabon" ), i18n( "Gambia" ), | ||
514 | i18n( "Georgia" ), i18n( "Germany" ), i18n( "Ghana" ), | ||
515 | i18n( "Greece" ), i18n( "Greenland" ), i18n( "Grenada" ), | ||
516 | i18n( "Guam" ), i18n( "Guatemala" ), i18n( "Guinea" ), | ||
517 | i18n( "Guinea-Bissau" ), i18n( "Guyana" ), i18n( "Haiti" ), | ||
518 | i18n( "Honduras" ), i18n( "Hong Kong" ), i18n( "Hungary" ), | ||
519 | i18n( "Iceland" ), i18n( "India" ), i18n( "Indonesia" ), | ||
520 | i18n( "Iran" ), i18n( "Iraq" ), i18n( "Ireland" ), | ||
521 | i18n( "Israel" ), i18n( "Italy" ), i18n( "Ivory Coast" ), | ||
522 | i18n( "Jamaica" ), i18n( "Japan" ), i18n( "Jordan" ), | ||
523 | i18n( "Kazakhstan" ), i18n( "Kenya" ), i18n( "Kiribati" ), | ||
524 | i18n( "Korea, North" ), i18n( "Korea, South" ), | ||
525 | i18n( "Kuwait" ), i18n( "Kyrgyzstan" ), i18n( "Laos" ), | ||
526 | i18n( "Latvia" ), i18n( "Lebanon" ), i18n( "Lesotho" ), | ||
527 | i18n( "Liberia" ), i18n( "Libya" ), i18n( "Liechtenstein" ), | ||
528 | i18n( "Lithuania" ), i18n( "Luxembourg" ), i18n( "Macau" ), | ||
529 | i18n( "Madagascar" ), i18n( "Malawi" ), i18n( "Malaysia" ), | ||
530 | i18n( "Maldives" ), i18n( "Mali" ), i18n( "Malta" ), | ||
531 | i18n( "Marshall Islands" ), i18n( "Martinique" ), i18n( "Mauritania" ), | ||
532 | i18n( "Mauritius" ), i18n( "Mexico" ), | ||
533 | i18n( "Micronesia, Federated States Of" ), i18n( "Moldova" ), | ||
534 | i18n( "Monaco" ), i18n( "Mongolia" ), i18n( "Montserrat" ), | ||
535 | i18n( "Morocco" ), i18n( "Mozambique" ), i18n( "Myanmar" ), | ||
536 | i18n( "Namibia" ), | ||
537 | i18n( "Nauru" ), i18n( "Nepal" ), i18n( "Netherlands" ), | ||
538 | i18n( "Netherlands Antilles" ), i18n( "New Caledonia" ), | ||
539 | i18n( "New Zealand" ), i18n( "Nicaragua" ), i18n( "Niger" ), | ||
540 | i18n( "Nigeria" ), i18n( "Niue" ), i18n( "North Korea" ), | ||
541 | i18n( "Northern Ireland" ), i18n( "Northern Mariana Islands" ), | ||
542 | i18n( "Norway" ), i18n( "Oman" ), i18n( "Pakistan" ), i18n( "Palau" ), | ||
543 | i18n( "Palestinian" ), i18n( "Panama" ), i18n( "Papua New Guinea" ), | ||
544 | i18n( "Paraguay" ), i18n( "Peru" ), i18n( "Philippines" ), | ||
545 | i18n( "Poland" ), i18n( "Portugal" ), i18n( "Puerto Rico" ), | ||
546 | i18n( "Qatar" ), i18n( "Romania" ), i18n( "Russia" ), i18n( "Rwanda" ), | ||
547 | i18n( "St. Kitts and Nevis" ), i18n( "St. Lucia" ), | ||
548 | i18n( "St. Vincent and the Grenadines" ), i18n( "San Marino" ), | ||
549 | i18n( "Sao Tome and Principe" ), i18n( "Saudi Arabia" ), | ||
550 | i18n( "Senegal" ), i18n( "Serbia & Montenegro" ), i18n( "Seychelles" ), | ||
551 | i18n( "Sierra Leone" ), i18n( "Singapore" ), i18n( "Slovakia" ), | ||
552 | i18n( "Slovenia" ), i18n( "Solomon Islands" ), i18n( "Somalia" ), | ||
553 | i18n( "South Africa" ), i18n( "South Korea" ), i18n( "Spain" ), | ||
554 | i18n( "Sri Lanka" ), i18n( "St. Kitts and Nevis" ), i18n( "Sudan" ), | ||
555 | i18n( "Suriname" ), i18n( "Swaziland" ), i18n( "Sweden" ), | ||
556 | i18n( "Switzerland" ), i18n( "Syria" ), i18n( "Taiwan" ), | ||
557 | i18n( "Tajikistan" ), i18n( "Tanzania" ), i18n( "Thailand" ), | ||
558 | i18n( "Tibet" ), i18n( "Togo" ), i18n( "Tonga" ), | ||
559 | i18n( "Trinidad and Tobago" ), i18n( "Tunisia" ), i18n( "Turkey" ), | ||
560 | i18n( "Turkmenistan" ), i18n( "Turks and Caicos Islands" ), | ||
561 | i18n( "Tuvalu" ), i18n( "Uganda " ), i18n( "Ukraine" ), | ||
562 | i18n( "United Arab Emirates" ), i18n( "United Kingdom" ), | ||
563 | i18n( "United States" ), i18n( "Uruguay" ), i18n( "Uzbekistan" ), | ||
564 | i18n( "Vanuatu" ), i18n( "Vatican City" ), i18n( "Venezuela" ), | ||
565 | i18n( "Vietnam" ), i18n( "Western Samoa" ), i18n( "Yemen" ), | ||
566 | i18n( "Yugoslavia" ), i18n( "Zaire" ), i18n( "Zambia" ), | ||
567 | i18n( "Zimbabwe" ), | ||
568 | "" | ||
569 | }; | ||
570 | |||
571 | QStringList countries; | ||
572 | for ( int i = 0; !country[ i ].isEmpty(); ++i ) | ||
573 | countries.append( country[ i ] ); | ||
574 | |||
575 | countries.sort(); | ||
576 | |||
577 | mCountryCombo->insertStringList( countries ); | ||
578 | } | ||
579 | |||
580 | |||
581 | AddressTypeDialog::AddressTypeDialog( int type, QWidget *parent ) | ||
582 | : KDialogBase( Plain, i18n( "Edit Address Type" ), Ok | Cancel, Ok, | ||
583 | parent, "AddressTypeDialog" ) | ||
584 | { | ||
585 | QWidget *page = plainPage(); | ||
586 | QVBoxLayout *layout = new QVBoxLayout( page ); | ||
587 | |||
588 | mGroup = new QButtonGroup( 2, Horizontal, i18n( "Address Types" ), page ); | ||
589 | layout->addWidget( mGroup ); | ||
590 | |||
591 | mTypeList = KABC::Address::typeList(); | ||
592 | mTypeList.remove( KABC::Address::Pref ); | ||
593 | |||
594 | KABC::Address::TypeList::Iterator it; | ||
595 | for ( it = mTypeList.begin(); it != mTypeList.end(); ++it ) | ||
596 | new QCheckBox( KABC::Address::typeLabel( *it ), mGroup ); | ||
597 | |||
598 | for ( int i = 0; i < mGroup->count(); ++i ) { | ||
599 | QCheckBox *box = (QCheckBox*)mGroup->find( i ); | ||
600 | box->setChecked( type & mTypeList[ i ] ); | ||
601 | } | ||
602 | } | ||
603 | |||
604 | AddressTypeDialog::~AddressTypeDialog() | ||
605 | { | ||
606 | } | ||
607 | |||
608 | int AddressTypeDialog::type() const | ||
609 | { | ||
610 | int type = 0; | ||
611 | for ( int i = 0; i < mGroup->count(); ++i ) { | ||
612 | QCheckBox *box = (QCheckBox*)mGroup->find( i ); | ||
613 | if ( box->isChecked() ) | ||
614 | type += mTypeList[ i ]; | ||
615 | } | ||
616 | |||
617 | return type; | ||
618 | } | ||
619 | |||
620 | #ifndef KAB_EMBEDDED | ||
621 | #include "addresseditwidget.moc" | ||
622 | #endif //KAB_EMBEDDED | ||