25#include <tqbuttongroup.h>
26#include <tqcheckbox.h>
31#include <tqlistview.h>
32#include <tqpushbutton.h>
35#include <tqtextedit.h>
36#include <tqtoolbutton.h>
39#include <tdeaccelmanager.h>
40#include <kactivelabel.h>
41#include <tdeapplication.h>
42#include <kbuttonbox.h>
47#include <kiconloader.h>
48#include <kinputdialog.h>
50#include <tdelistview.h>
52#include <tdemessagebox.h>
53#include <kseparator.h>
55#include "addresseditwidget.h"
57class TabPressEater : public TQObject
60 TabPressEater( TQObject *parent )
61 : TQObject( parent, "TabPressEater" )
66 bool eventFilter( TQObject*, TQEvent *event )
68 if ( event->type() == TQEvent::KeyPress ) {
69 TQKeyEvent *keyEvent = (TQKeyEvent*)event;
70 if ( keyEvent->key() == TQt::Key_Tab ) {
71 TQApplication::sendEvent( parent(), event );
82AddressEditWidget::AddressEditWidget( TQWidget *parent, const char *name )
83 : TQWidget( parent, name )
85 TQBoxLayout *layout = new TQVBoxLayout( this, 4, 2 );
86 layout->setSpacing( KDialog::spacingHint() );
89 connect( mTypeCombo, TQ_SIGNAL( activated( int ) ),
90 TQ_SLOT( updateAddressEdit() ) );
91 layout->addWidget( mTypeCombo );
93 mAddressField = new KActiveLabel( this );
94 mAddressField->setFrameStyle( TQFrame::Panel | TQFrame::Sunken );
95 mAddressField->setMinimumHeight( 20 );
96 mAddressField->setAlignment( TQt::AlignTop );
97 mAddressField->setTextFormat( TQt::PlainText );
98 layout->addWidget( mAddressField );
100 mEditButton = new TQPushButton( i18n( "street/postal", "&Edit Addresses..." ), this );
101 connect( mEditButton, TQ_SIGNAL( clicked() ), this, TQ_SLOT( edit() ) );
103 layout->addWidget( mEditButton );
106AddressEditWidget::~AddressEditWidget()
110void AddressEditWidget::setReadOnly( bool readOnly )
112 mEditButton->setEnabled( !readOnly );
115TDEABC::Address::List AddressEditWidget::addresses()
117 TDEABC::Address::List retList;
119 TDEABC::Address::List::ConstIterator it;
120 for ( it = mAddressList.begin(); it != mAddressList.end(); ++it )
121 if ( !(*it).isEmpty() )
122 retList.append( *it );
127void AddressEditWidget::setAddresses( const TDEABC::Addressee &addr,
128 const TDEABC::Address::List &list )
132 mAddressList.clear();
135 mTypeCombo->insertTypeList( list );
137 TQValueList<int> defaultTypes;
138 defaultTypes << TDEABC::Address::Home;
139 defaultTypes << TDEABC::Address::Work;
141 AddresseeConfig config( mAddressee );
142 const TQValueList<int> configList = config.noDefaultAddrTypes();
143 TQValueList<int>::ConstIterator it;
144 for ( it = configList.begin(); it != configList.end(); ++it )
145 defaultTypes.remove( *it );
150 for ( it = defaultTypes.begin(); it != defaultTypes.end(); ++it ) {
151 if ( !mTypeCombo->hasType( *it ) )
152 mTypeCombo->insertType( list, *it, Address( *it ) );
155 mTypeCombo->updateTypes();
158 int preferred = TDEABC::Address::Home;
159 TDEABC::Address::List::ConstIterator addrIt;
160 for ( addrIt = list.begin(); addrIt != list.end(); ++addrIt )
161 if ( (*addrIt).type() & TDEABC::Address::Pref ) {
162 preferred = (*addrIt).type();
166 mTypeCombo->selectType( preferred );
171void AddressEditWidget::updateAddressee( const TDEABC::Addressee &addr )
177void AddressEditWidget::edit()
180 if ( dialog.exec() ) {
181 if ( dialog.changed() ) {
182 mAddressList = dialog.addresses();
184 bool hasHome = false, hasWork = false;
185 TDEABC::Address::List::ConstIterator it;
186 for ( it = mAddressList.begin(); it != mAddressList.end(); ++it ) {
187 if ( (*it).type() == TDEABC::Address::Home ) {
188 if ( !(*it).isEmpty() )
191 if ( (*it).type() == TDEABC::Address::Work ) {
192 if ( !(*it).isEmpty() )
197 AddresseeConfig config( mAddressee );
198 TQValueList<int> configList;
200 configList << TDEABC::Address::Home;
202 configList << TDEABC::Address::Work;
203 config.setNoDefaultAddrTypes( configList );
205 mTypeCombo->updateTypes();
212void AddressEditWidget::updateAddressEdit()
214 TDEABC::Address::List::Iterator it = mTypeCombo->selectedElement();
216 bool block = signalsBlocked();
217 blockSignals( true );
219 mAddressField->setText( "" );
221 if ( it != mAddressList.end() ) {
222 TDEABC::Address a = *it;
223 if ( !a.isEmpty() ) {
224#if TDE_VERSION >= 319
225 if ( a.type() & TDEABC::Address::Work && mAddressee.realName() != mAddressee.organization() ) {
226 mAddressField->setText( a.formattedAddress( mAddressee.realName(),
227 mAddressee.organization() ) );
229 mAddressField->setText( a.formattedAddress( mAddressee.realName() ) );
233 if ( !a.street().isEmpty() )
234 text += a.street() + "\n";
236 if ( !a.postOfficeBox().isEmpty() )
237 text += a.postOfficeBox() + "\n";
239 text += a.locality() + TQString( " ") + a.region();
241 if ( !a.postalCode().isEmpty() )
242 text += TQString( ", ") + a.postalCode();
246 if ( !a.country().isEmpty() )
247 text += a.country() + "\n";
249 text += a.extended();
251 mAddressField->setText( text );
256 blockSignals( block );
259AddressEditDialog::AddressEditDialog( const TDEABC::Address::List &list,
260 int selected, TQWidget *parent,
262 : KDialogBase( Plain, i18n( "street/postal", "Edit Address" ), Ok | Cancel, Ok,
263 parent, name, true, true ),
264 mPreviousAddress( 0 )
268 TQWidget *page = plainPage();
270 TQGridLayout *topLayout = new TQGridLayout( page, 8, 2 );
271 topLayout->setSpacing( spacingHint() );
274 topLayout->addMultiCellWidget( mTypeCombo, 0, 0, 0, 1 );
276 TQLabel *label = new TQLabel( i18n( "<streetLabel>:", "%1:" ).arg( TDEABC::Address::streetLabel() ), page );
277 label->setAlignment( TQt::AlignTop | TQt::AlignLeft );
278 topLayout->addWidget( label, 1, 0 );
279 mStreetTextEdit = new TQTextEdit( page );
280 mStreetTextEdit->setTextFormat( TQt::PlainText );
281 label->setBuddy( mStreetTextEdit );
282 topLayout->addWidget( mStreetTextEdit, 1, 1 );
284 TabPressEater *eater = new TabPressEater( this );
285 mStreetTextEdit->installEventFilter( eater );
287 label = new TQLabel( i18n( "<postOfficeBoxLabel>:", "%1:" ).arg( TDEABC::Address::postOfficeBoxLabel() ), page );
288 topLayout->addWidget( label, 2 , 0 );
289 mPOBoxEdit = new KLineEdit( page );
290 label->setBuddy( mPOBoxEdit );
291 topLayout->addWidget( mPOBoxEdit, 2, 1 );
293 label = new TQLabel( i18n( "<localityLabel>:", "%1:" ).arg( TDEABC::Address::localityLabel() ), page );
294 topLayout->addWidget( label, 3, 0 );
295 mLocalityEdit = new KLineEdit( page );
296 label->setBuddy( mLocalityEdit );
297 topLayout->addWidget( mLocalityEdit, 3, 1 );
299 label = new TQLabel( i18n( "<regionLabel>:", "%1:" ).arg( TDEABC::Address::regionLabel() ), page );
300 topLayout->addWidget( label, 4, 0 );
301 mRegionEdit = new KLineEdit( page );
302 label->setBuddy( mRegionEdit );
303 topLayout->addWidget( mRegionEdit, 4, 1 );
305 label = new TQLabel( i18n( "<postalCodeLabel>:", "%1:" ).arg( TDEABC::Address::postalCodeLabel() ), page );
306 topLayout->addWidget( label, 5, 0 );
307 mPostalCodeEdit = new KLineEdit( page );
308 label->setBuddy( mPostalCodeEdit );
309 topLayout->addWidget( mPostalCodeEdit, 5, 1 );
311 label = new TQLabel( i18n( "<countryLabel>:", "%1:" ).arg( TDEABC::Address::countryLabel() ), page );
312 topLayout->addWidget( label, 6, 0 );
313 mCountryCombo = new KComboBox( page );
314 mCountryCombo->setEditable( true );
315 mCountryCombo->setDuplicatesEnabled( false );
317 TQPushButton *labelButton = new TQPushButton( i18n( "Edit Label..." ), page );
318 topLayout->addMultiCellWidget( labelButton, 7, 7, 0, 1 );
319 connect( labelButton, TQ_SIGNAL( clicked() ), TQ_SLOT( editLabel() ) );
322 label->setBuddy( mCountryCombo );
323 topLayout->addWidget( mCountryCombo, 6, 1 );
325 mPreferredCheckBox = new TQCheckBox( i18n( "street/postal", "This is the preferred address" ), page );
326 topLayout->addMultiCellWidget( mPreferredCheckBox, 8, 8, 0, 1 );
328 KSeparator *sep = new KSeparator( KSeparator::HLine, page );
329 topLayout->addMultiCellWidget( sep, 9, 9, 0, 1 );
331 TQHBox *buttonBox = new TQHBox( page );
332 buttonBox->setSpacing( spacingHint() );
333 topLayout->addMultiCellWidget( buttonBox, 10, 10, 0, 1 );
335 TQPushButton *addButton = new TQPushButton( i18n( "New..." ), buttonBox );
336 connect( addButton, TQ_SIGNAL( clicked() ), TQ_SLOT( addAddress() ) );
338 mRemoveButton = new TQPushButton( i18n( "Remove" ), buttonBox );
339 connect( mRemoveButton, TQ_SIGNAL( clicked() ), TQ_SLOT( removeAddress() ) );
341 mChangeTypeButton = new TQPushButton( i18n( "Change Type..." ), buttonBox );
342 connect( mChangeTypeButton, TQ_SIGNAL( clicked() ), TQ_SLOT( changeType() ) );
344 mTypeCombo->updateTypes();
345 mTypeCombo->setCurrentItem( selected );
347 updateAddressEdits();
349 connect( mTypeCombo, TQ_SIGNAL( activated( int ) ),
350 TQ_SLOT( updateAddressEdits() ) );
351 connect( mStreetTextEdit, TQ_SIGNAL( textChanged() ), TQ_SLOT( modified() ) );
352 connect( mPOBoxEdit, TQ_SIGNAL( textChanged( const TQString& ) ), TQ_SLOT( modified() ) );
353 connect( mLocalityEdit, TQ_SIGNAL( textChanged( const TQString& ) ), TQ_SLOT( modified() ) );
354 connect( mRegionEdit, TQ_SIGNAL( textChanged( const TQString& ) ), TQ_SLOT( modified() ) );
355 connect( mPostalCodeEdit, TQ_SIGNAL( textChanged( const TQString& ) ), TQ_SLOT( modified() ) );
356 connect( mCountryCombo, TQ_SIGNAL( textChanged( const TQString& ) ), TQ_SLOT( modified() ) );
357 connect( mPreferredCheckBox, TQ_SIGNAL( toggled( bool ) ), TQ_SLOT( modified() ) );
359 TDEAcceleratorManager::manage( this );
363 bool state = (mAddressList.count() > 0);
364 mRemoveButton->setEnabled( state );
365 mChangeTypeButton->setEnabled( state );
368AddressEditDialog::~AddressEditDialog()
372TDEABC::Address::List AddressEditDialog::addresses()
374 saveAddress( *(mTypeCombo->selectedElement()) );
379bool AddressEditDialog::changed() const
384void AddressEditDialog::addAddress()
388 mAddressList.append( Address( dlg.type() ) );
390 mTypeCombo->updateTypes();
391 mTypeCombo->setCurrentItem( mTypeCombo->count() - 1 );
392 updateAddressEdits();
396 mRemoveButton->setEnabled( true );
397 mChangeTypeButton->setEnabled( true );
401void AddressEditDialog::removeAddress()
403 if ( mAddressList.count() > 0 ) {
404 TDEABC::Address::List::Iterator it = mTypeCombo->selectedElement();
405 if ( mPreviousAddress && mPreviousAddress->id() == (*it).id() )
406 mPreviousAddress = 0;
408 mAddressList.remove( it );
409 mTypeCombo->updateTypes();
410 updateAddressEdits();
415 bool state = ( mAddressList.count() > 0 );
416 mRemoveButton->setEnabled( state );
417 mChangeTypeButton->setEnabled( state );
420void AddressEditDialog::changeType()
422 TDEABC::Address::List::Iterator a = mTypeCombo->selectedElement();
426 (*a).setType( dlg.type() );
428 mTypeCombo->updateTypes();
434void AddressEditDialog::editLabel()
437 TQString result = KInputDialog::getMultiLineText( TDEABC::Address::labelLabel(),
438 TDEABC::Address::labelLabel(),
446void AddressEditDialog::updateAddressEdits()
448 if ( mPreviousAddress )
449 saveAddress( *mPreviousAddress );
451 TDEABC::Address::List::Iterator it = mTypeCombo->selectedElement();
452 TDEABC::Address a = *it;
453 mPreviousAddress = &(*it);
457 mStreetTextEdit->setText( a.street() );
458 mRegionEdit->setText( a.region() );
459 mLocalityEdit->setText( a.locality() );
460 mPostalCodeEdit->setText( a.postalCode() );
461 mPOBoxEdit->setText( a.postOfficeBox() );
462 mCountryCombo->setCurrentText( a.country() );
465 mPreferredCheckBox->setChecked( a.type() & TDEABC::Address::Pref );
468 mCountryCombo->setCurrentText( TDEGlobal::locale()->twoAlphaToCountryName( TDEGlobal::locale()->country() ) );
470 mStreetTextEdit->setFocus();
475void AddressEditDialog::modified()
480void AddressEditDialog::saveAddress( TDEABC::Address &addr )
482 addr.setLocality( mLocalityEdit->text() );
483 addr.setRegion( mRegionEdit->text() );
484 addr.setPostalCode( mPostalCodeEdit->text() );
485 addr.setCountry( mCountryCombo->currentText() );
486 addr.setPostOfficeBox( mPOBoxEdit->text() );
487 addr.setStreet( mStreetTextEdit->text() );
488 addr.setLabel( mLabel );
491 if ( mPreferredCheckBox->isChecked() ) {
492 TDEABC::Address::List::Iterator it;
493 for ( it = mAddressList.begin(); it != mAddressList.end(); ++it )
494 (*it).setType( (*it).type() & ~( TDEABC::Address::Pref ) );
496 addr.setType( addr.type() | TDEABC::Address::Pref );
498 addr.setType( addr.type() & ~( TDEABC::Address::Pref ) );
501void AddressEditDialog::fillCountryCombo()
503 TQString country[] = {
504 i18n( "Afghanistan" ), i18n( "Albania" ), i18n( "Algeria" ),
505 i18n( "American Samoa" ), i18n( "Andorra" ), i18n( "Angola" ),
506 i18n( "Anguilla" ), i18n( "Antarctica" ), i18n( "Antigua and Barbuda" ),
507 i18n( "Argentina" ), i18n( "Armenia" ), i18n( "Aruba" ),
508 i18n( "Ashmore and Cartier Islands" ), i18n( "Australia" ),
509 i18n( "Austria" ), i18n( "Azerbaijan" ), i18n( "Bahamas" ),
510 i18n( "Bahrain" ), i18n( "Bangladesh" ), i18n( "Barbados" ),
511 i18n( "Belarus" ), i18n( "Belgium" ), i18n( "Belize" ),
512 i18n( "Benin" ), i18n( "Bermuda" ), i18n( "Bhutan" ),
513 i18n( "Bolivia" ), i18n( "Bosnia and Herzegovina" ), i18n( "Botswana" ),
514 i18n( "Brazil" ), i18n( "Brunei" ), i18n( "Bulgaria" ),
515 i18n( "Burkina Faso" ), i18n( "Burundi" ), i18n( "Cambodia" ),
516 i18n( "Cameroon" ), i18n( "Canada" ), i18n( "Cape Verde" ),
517 i18n( "Cayman Islands" ), i18n( "Central African Republic" ),
518 i18n( "Chad" ), i18n( "Chile" ), i18n( "China" ), i18n( "Colombia" ),
519 i18n( "Comoros" ), i18n( "Congo" ), i18n( "Congo, Dem. Rep." ),
520 i18n( "Costa Rica" ), i18n( "Croatia" ),
521 i18n( "Cuba" ), i18n( "Cyprus" ), i18n( "Czech Republic" ),
522 i18n( "Denmark" ), i18n( "Djibouti" ),
523 i18n( "Dominica" ), i18n( "Dominican Republic" ), i18n( "Ecuador" ),
524 i18n( "Egypt" ), i18n( "El Salvador" ), i18n( "Equatorial Guinea" ),
525 i18n( "Eritrea" ), i18n( "Estonia" ), i18n( "England" ),
526 i18n( "Ethiopia" ), i18n( "European Union" ), i18n( "Faroe Islands" ),
527 i18n( "Fiji" ), i18n( "Finland" ), i18n( "France" ),
528 i18n( "French Polynesia" ), i18n( "Gabon" ), i18n( "Gambia" ),
529 i18n( "Georgia" ), i18n( "Germany" ), i18n( "Ghana" ),
530 i18n( "Greece" ), i18n( "Greenland" ), i18n( "Grenada" ),
531 i18n( "Guam" ), i18n( "Guatemala" ), i18n( "Guinea" ),
532 i18n( "Guinea-Bissau" ), i18n( "Guyana" ), i18n( "Haiti" ),
533 i18n( "Honduras" ), i18n( "Hong Kong" ), i18n( "Hungary" ),
534 i18n( "Iceland" ), i18n( "India" ), i18n( "Indonesia" ),
535 i18n( "Iran" ), i18n( "Iraq" ), i18n( "Ireland" ),
536 i18n( "Israel" ), i18n( "Italy" ), i18n( "Ivory Coast" ),
537 i18n( "Jamaica" ), i18n( "Japan" ), i18n( "Jordan" ),
538 i18n( "Kazakhstan" ), i18n( "Kenya" ), i18n( "Kiribati" ),
539 i18n( "Korea, North" ), i18n( "Korea, South" ),
540 i18n( "Kuwait" ), i18n( "Kyrgyzstan" ), i18n( "Laos" ),
541 i18n( "Latvia" ), i18n( "Lebanon" ), i18n( "Lesotho" ),
542 i18n( "Liberia" ), i18n( "Libya" ), i18n( "Liechtenstein" ),
543 i18n( "Lithuania" ), i18n( "Luxembourg" ), i18n( "Macau" ),
544 i18n( "Madagascar" ), i18n( "Malawi" ), i18n( "Malaysia" ),
545 i18n( "Maldives" ), i18n( "Mali" ), i18n( "Malta" ),
546 i18n( "Marshall Islands" ), i18n( "Martinique" ), i18n( "Mauritania" ),
547 i18n( "Mauritius" ), i18n( "Mexico" ),
548 i18n( "Micronesia, Federated States Of" ), i18n( "Moldova" ),
549 i18n( "Monaco" ), i18n( "Mongolia" ), i18n( "Montserrat" ),
550 i18n( "Morocco" ), i18n( "Mozambique" ), i18n( "Myanmar" ),
552 i18n( "Nauru" ), i18n( "Nepal" ), i18n( "Netherlands" ),
553 i18n( "Netherlands Antilles" ), i18n( "New Caledonia" ),
554 i18n( "New Zealand" ), i18n( "Nicaragua" ), i18n( "Niger" ),
555 i18n( "Nigeria" ), i18n( "Niue" ), i18n( "North Korea" ),
556 i18n( "Northern Ireland" ), i18n( "Northern Mariana Islands" ),
557 i18n( "Norway" ), i18n( "Oman" ), i18n( "Pakistan" ), i18n( "Palau" ),
558 i18n( "Palestinian" ), i18n( "Panama" ), i18n( "Papua New Guinea" ),
559 i18n( "Paraguay" ), i18n( "Peru" ), i18n( "Philippines" ),
560 i18n( "Poland" ), i18n( "Portugal" ), i18n( "Puerto Rico" ),
561 i18n( "Qatar" ), i18n( "Romania" ), i18n( "Russia" ), i18n( "Rwanda" ),
562 i18n( "St. Kitts and Nevis" ), i18n( "St. Lucia" ),
563 i18n( "St. Vincent and the Grenadines" ), i18n( "San Marino" ),
564 i18n( "Sao Tome and Principe" ), i18n( "Saudi Arabia" ),
565 i18n( "Senegal" ), i18n( "Serbia & Montenegro" ), i18n( "Seychelles" ),
566 i18n( "Sierra Leone" ), i18n( "Singapore" ), i18n( "Slovakia" ),
567 i18n( "Slovenia" ), i18n( "Solomon Islands" ), i18n( "Somalia" ),
568 i18n( "South Africa" ), i18n( "South Korea" ), i18n( "Spain" ),
569 i18n( "Sri Lanka" ), i18n( "St. Kitts and Nevis" ), i18n( "Sudan" ),
570 i18n( "Suriname" ), i18n( "Swaziland" ), i18n( "Sweden" ),
571 i18n( "Switzerland" ), i18n( "Syria" ), i18n( "Taiwan" ),
572 i18n( "Tajikistan" ), i18n( "Tanzania" ), i18n( "Thailand" ),
573 i18n( "Tibet" ), i18n( "Togo" ), i18n( "Tonga" ),
574 i18n( "Trinidad and Tobago" ), i18n( "Tunisia" ), i18n( "Turkey" ),
575 i18n( "Turkmenistan" ), i18n( "Turks and Caicos Islands" ),
576 i18n( "Tuvalu" ), i18n( "Uganda" ), i18n( "Ukraine" ),
577 i18n( "United Arab Emirates" ), i18n( "United Kingdom" ),
578 i18n( "United States" ), i18n( "Uruguay" ), i18n( "Uzbekistan" ),
579 i18n( "Vanuatu" ), i18n( "Vatican City" ), i18n( "Venezuela" ),
580 i18n( "Vietnam" ), i18n( "Western Samoa" ), i18n( "Yemen" ),
581 i18n( "Yugoslavia" ), i18n( "Zaire" ), i18n( "Zambia" ),
586 TQStringList countries;
587 for ( int i = 0; !country[ i ].isEmpty(); ++i )
588 countries.append( country[ i ] );
590 countries = sortLocaleAware( countries );
592 mCountryCombo->insertStringList( countries );
593 mCountryCombo->completionObject()->setItems( countries );
594 mCountryCombo->setAutoCompletion( true );
598AddressTypeDialog::AddressTypeDialog( int type, TQWidget *parent )
599 : KDialogBase( Plain, i18n( "street/postal", "Edit Address Type" ), Ok | Cancel, Ok,
600 parent, "AddressTypeDialog" )
602 TQWidget *page = plainPage();
603 TQVBoxLayout *layout = new TQVBoxLayout( page );
605 mGroup = new TQButtonGroup( 2, TQt::Horizontal, i18n( "street/postal", "Address Types" ), page );
606 layout->addWidget( mGroup );
608 mTypeList = TDEABC::Address::typeList();
609 mTypeList.remove( TDEABC::Address::Pref );
611 TDEABC::Address::TypeList::ConstIterator it;
612 for ( it = mTypeList.begin(); it != mTypeList.end(); ++it )
613 new TQCheckBox( TDEABC::Address::typeLabel( *it ), mGroup );
615 for ( int i = 0; i < mGroup->count(); ++i ) {
616 TQCheckBox *box = (TQCheckBox*)mGroup->find( i );
617 box->setChecked( type & mTypeList[ i ] );
621AddressTypeDialog::~AddressTypeDialog()
625int AddressTypeDialog::type() const
628 for ( int i = 0; i < mGroup->count(); ++i ) {
629 TQCheckBox *box = (TQCheckBox*)mGroup->find( i );
630 if ( box->isChecked() )
631 type += mTypeList[ i ];
641class LocaleAwareString : public TQString
644 LocaleAwareString() : TQString()
647 LocaleAwareString( const TQString &str ) : TQString( str )
651static bool operator<( const LocaleAwareString &s1, const LocaleAwareString &s2 )
653 return ( TQString::localeAwareCompare( s1, s2 ) < 0 );
656TQStringList AddressEditDialog::sortLocaleAware( const TQStringList &list )
658 TQValueList<LocaleAwareString> sortedList;
660 TQStringList::ConstIterator it;
661 for ( it = list.begin(); it != list.end(); ++it )
662 sortedList.append( LocaleAwareString( *it ) );
664 qHeapSort( sortedList );
667 TQValueList<LocaleAwareString>::ConstIterator retIt;
668 for ( retIt = sortedList.begin(); retIt != sortedList.end(); ++retIt )
669 retval.append( *retIt );
674#include "addresseditwidget.moc"
Dialog for editing address details.
Dialog for selecting an address type.
Combo box for type information of Addresses and Phone numbers.
|