kaddressbook Library API Documentation

nameeditdialog.cpp

00001 /* 00002 This file is part of KAddressBook. 00003 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 00004 00005 This program is free software; you can redistribute it and/or modify 00006 it under the terms of the GNU General Public License as published by 00007 the Free Software Foundation; either version 2 of the License, or 00008 (at your option) any later version. 00009 00010 This program is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00013 GNU General Public License for more details. 00014 00015 You should have received a copy of the GNU General Public License 00016 along with this program; if not, write to the Free Software 00017 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 00018 00019 As a special exception, permission is given to link this program 00020 with any edition of Qt, and distribute the resulting executable, 00021 without including the source code for Qt in the source distribution. 00022 */ 00023 00024 #include <qlayout.h> 00025 #include <qlabel.h> 00026 #include <qlistbox.h> 00027 #include <qlistview.h> 00028 #include <qtooltip.h> 00029 #include <qpushbutton.h> 00030 #include <qcheckbox.h> 00031 #include <qstring.h> 00032 00033 #include <kaccelmanager.h> 00034 #include <kapplication.h> 00035 #include <kbuttonbox.h> 00036 #include <kconfig.h> 00037 #include <klineedit.h> 00038 #include <klistview.h> 00039 #include <kcombobox.h> 00040 #include <klocale.h> 00041 #include <kdebug.h> 00042 #include <kiconloader.h> 00043 #include <kmessagebox.h> 00044 00045 #include "nameeditdialog.h" 00046 00047 NameEditDialog::NameEditDialog( const KABC::Addressee &addr, int type, 00048 bool readOnly, QWidget *parent, const char *name ) 00049 : KDialogBase( Plain, i18n( "Edit Contact Name" ), Help | Ok | Cancel, 00050 Ok, parent, name, true ) 00051 { 00052 QWidget *page = plainPage(); 00053 QGridLayout *layout = new QGridLayout( page ); 00054 layout->setSpacing( spacingHint() ); 00055 layout->addColSpacing( 2, 100 ); 00056 QLabel *label; 00057 00058 label = new QLabel( i18n( "Honorific prefixes:" ), page ); 00059 layout->addWidget( label, 0, 0 ); 00060 mPrefixCombo = new KComboBox( page ); 00061 mPrefixCombo->setDuplicatesEnabled( false ); 00062 mPrefixCombo->setEditable( true ); 00063 mPrefixCombo->setEnabled( !readOnly ); 00064 label->setBuddy( mPrefixCombo ); 00065 layout->addMultiCellWidget( mPrefixCombo, 0, 0, 1, 2 ); 00066 00067 label = new QLabel( i18n( "Given name:" ), page ); 00068 layout->addWidget( label, 1, 0 ); 00069 mGivenNameEdit = new KLineEdit( page ); 00070 mGivenNameEdit->setReadOnly( readOnly ); 00071 label->setBuddy( mGivenNameEdit ); 00072 layout->addMultiCellWidget( mGivenNameEdit, 1, 1, 1, 2 ); 00073 00074 label = new QLabel( i18n( "Additional names:" ), page ); 00075 layout->addWidget( label, 2, 0 ); 00076 mAdditionalNameEdit = new KLineEdit( page ); 00077 mAdditionalNameEdit->setReadOnly( readOnly ); 00078 label->setBuddy( mAdditionalNameEdit ); 00079 layout->addMultiCellWidget( mAdditionalNameEdit, 2, 2, 1, 2 ); 00080 00081 label = new QLabel( i18n( "Family names:" ), page ); 00082 layout->addWidget( label, 3, 0 ); 00083 mFamilyNameEdit = new KLineEdit( page ); 00084 mFamilyNameEdit->setReadOnly( readOnly ); 00085 label->setBuddy( mFamilyNameEdit ); 00086 layout->addMultiCellWidget( mFamilyNameEdit, 3, 3, 1, 2 ); 00087 00088 label = new QLabel( i18n( "Honorific suffixes:" ), page ); 00089 layout->addWidget( label, 4, 0 ); 00090 mSuffixCombo = new KComboBox( page ); 00091 mSuffixCombo->setDuplicatesEnabled( false ); 00092 mSuffixCombo->setEditable( true ); 00093 mSuffixCombo->setEnabled( !readOnly ); 00094 label->setBuddy( mSuffixCombo ); 00095 layout->addMultiCellWidget( mSuffixCombo, 4, 4, 1, 2 ); 00096 00097 mFormattedNameCombo = new KComboBox( page ); 00098 mFormattedNameCombo->setEnabled( !readOnly ); 00099 layout->addWidget( mFormattedNameCombo, 5, 0 ); 00100 connect( mFormattedNameCombo, SIGNAL( activated( int ) ), SLOT( typeChanged( int ) ) ); 00101 00102 mFormattedNameEdit = new KLineEdit( page ); 00103 mFormattedNameEdit->setEnabled( type == CustomName && !readOnly ); 00104 layout->addWidget( mFormattedNameEdit, 5, 1 ); 00105 00106 mParseBox = new QCheckBox( i18n( "Parse name automatically" ), page ); 00107 mParseBox->setEnabled( !readOnly ); 00108 connect( mParseBox, SIGNAL( toggled(bool) ), SLOT( parseBoxChanged(bool) ) ); 00109 connect( mParseBox, SIGNAL( toggled(bool) ), SLOT( modified() ) ); 00110 layout->addMultiCellWidget( mParseBox, 6, 6, 0, 1 ); 00111 00112 // Fill in the values 00113 mFamilyNameEdit->setText( addr.familyName() ); 00114 mGivenNameEdit->setText( addr.givenName() ); 00115 mAdditionalNameEdit->setText( addr.additionalName() ); 00116 mFormattedNameEdit->setText( addr.formattedName() ); 00117 00118 // Prefix and suffix combos 00119 KConfig config( "kabcrc" ); 00120 config.setGroup( "General" ); 00121 00122 QStringList sTitle; 00123 sTitle += i18n( "Dr." ); 00124 sTitle += i18n( "Miss" ); 00125 sTitle += i18n( "Mr." ); 00126 sTitle += i18n( "Mrs." ); 00127 sTitle += i18n( "Ms." ); 00128 sTitle += i18n( "Prof." ); 00129 sTitle += config.readListEntry( "Prefixes" ); 00130 sTitle.sort(); 00131 00132 QStringList sSuffix; 00133 sSuffix += i18n( "I" ); 00134 sSuffix += i18n( "II" ); 00135 sSuffix += i18n( "III" ); 00136 sSuffix += i18n( "Jr." ); 00137 sSuffix += i18n( "Sr." ); 00138 sSuffix += config.readListEntry( "Suffixes" ); 00139 sSuffix.sort(); 00140 00141 mPrefixCombo->insertStringList( sTitle ); 00142 mSuffixCombo->insertStringList( sSuffix ); 00143 00144 mPrefixCombo->setCurrentText( addr.prefix() ); 00145 mSuffixCombo->setCurrentText( addr.suffix() ); 00146 00147 mAddresseeConfig.setAddressee( addr ); 00148 mParseBox->setChecked( mAddresseeConfig.automaticNameParsing() ); 00149 00150 KAcceleratorManager::manage( this ); 00151 00152 connect( mPrefixCombo, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); 00153 connect( mGivenNameEdit, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); 00154 connect( mAdditionalNameEdit, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); 00155 connect( mFamilyNameEdit, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); 00156 connect( mSuffixCombo, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); 00157 connect( mFormattedNameCombo, SIGNAL( activated( int ) ), SLOT( modified() ) ); 00158 connect( mFormattedNameEdit, SIGNAL( textChanged( const QString& ) ), SLOT( modified() ) ); 00159 00160 initTypeCombo(); 00161 mFormattedNameCombo->setCurrentItem( type ); 00162 mPrefixCombo->lineEdit()->setFocus(); 00163 mChanged = false; 00164 } 00165 00166 NameEditDialog::~NameEditDialog() 00167 { 00168 } 00169 00170 QString NameEditDialog::familyName() const 00171 { 00172 return mFamilyNameEdit->text(); 00173 } 00174 00175 QString NameEditDialog::givenName() const 00176 { 00177 return mGivenNameEdit->text(); 00178 } 00179 00180 QString NameEditDialog::prefix() const 00181 { 00182 return mPrefixCombo->currentText(); 00183 } 00184 00185 QString NameEditDialog::suffix() const 00186 { 00187 return mSuffixCombo->currentText(); 00188 } 00189 00190 QString NameEditDialog::additionalName() const 00191 { 00192 return mAdditionalNameEdit->text(); 00193 } 00194 00195 QString NameEditDialog::customFormattedName() const 00196 { 00197 return mFormattedNameEdit->text(); 00198 } 00199 00200 int NameEditDialog::formattedNameType() const 00201 { 00202 return mFormattedNameCombo->currentItem(); 00203 } 00204 00205 bool NameEditDialog::changed() const 00206 { 00207 return mChanged; 00208 } 00209 00210 QString NameEditDialog::formattedName( const KABC::Addressee &addr, int type ) 00211 { 00212 QString name; 00213 00214 switch ( type ) { 00215 case SimpleName: 00216 name = addr.givenName() + " " + addr.familyName(); 00217 break; 00218 case FullName: 00219 name = addr.assembledName(); 00220 break; 00221 case ReverseNameWithComma: 00222 name = addr.familyName() + ", " + addr.givenName(); 00223 break; 00224 case ReverseName: 00225 name = addr.familyName() + " " + addr.givenName(); 00226 break; 00227 case Organization: 00228 name = addr.organization(); 00229 break; 00230 default: 00231 name = ""; 00232 break; 00233 } 00234 00235 return name.simplifyWhiteSpace(); 00236 } 00237 00238 void NameEditDialog::parseBoxChanged( bool value ) 00239 { 00240 mAddresseeConfig.setAutomaticNameParsing( value ); 00241 } 00242 00243 void NameEditDialog::typeChanged( int pos ) 00244 { 00245 mFormattedNameEdit->setEnabled( pos == 0 ); 00246 } 00247 00248 void NameEditDialog::modified() 00249 { 00250 mChanged = true; 00251 } 00252 00253 void NameEditDialog::initTypeCombo() 00254 { 00255 int pos = mFormattedNameCombo->currentItem(); 00256 00257 mFormattedNameCombo->clear(); 00258 mFormattedNameCombo->insertItem( i18n( "Custom" ) ); 00259 mFormattedNameCombo->insertItem( i18n( "Simple Name" ) ); 00260 mFormattedNameCombo->insertItem( i18n( "Full Name" ) ); 00261 mFormattedNameCombo->insertItem( i18n( "Reverse Name with Comma" ) ); 00262 mFormattedNameCombo->insertItem( i18n( "Reverse Name" ) ); 00263 mFormattedNameCombo->insertItem( i18n( "Organization" ) ); 00264 00265 mFormattedNameCombo->setCurrentItem( pos ); 00266 } 00267 00268 void NameEditDialog::slotHelp() 00269 { 00270 kapp->invokeHelp( "managing-contacts-automatic-nameparsing" ); 00271 } 00272 00273 #include "nameeditdialog.moc"
KDE Logo
This file is part of the documentation for kaddressbook Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Oct 1 15:19:05 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003