summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Unidiff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/addresseeeditorwidget.cpp21
-rw-r--r--kaddressbook/phoneeditwidget.cpp8
-rw-r--r--kaddressbook/phoneeditwidget.h112
3 files changed, 18 insertions, 123 deletions
diff --git a/kaddressbook/addresseeeditorwidget.cpp b/kaddressbook/addresseeeditorwidget.cpp
index 966efa5..c4083a9 100644
--- a/kaddressbook/addresseeeditorwidget.cpp
+++ b/kaddressbook/addresseeeditorwidget.cpp
@@ -1,774 +1,779 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 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 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 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 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 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. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qcheckbox.h> 24#include <qcheckbox.h>
25#include <qhbox.h> 25#include <qhbox.h>
26#include <qlabel.h> 26#include <qlabel.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qlistbox.h> 28#include <qlistbox.h>
29#include <qpushbutton.h> 29#include <qpushbutton.h>
30#include <qtabwidget.h> 30#include <qtabwidget.h>
31#include <qapplication.h> 31#include <qapplication.h>
32 32
33#ifndef KAB_EMBEDDED 33#ifndef KAB_EMBEDDED
34#include <qtextedit.h> 34#include <qtextedit.h>
35 35
36#include <kaccelmanager.h> 36#include <kaccelmanager.h>
37#include "keywidget.h" 37#include "keywidget.h"
38#include "soundwidget.h" 38#include "soundwidget.h"
39 39
40#else //KAB_EMBEDDED 40#else //KAB_EMBEDDED
41#include <qmultilineedit.h> 41#include <qmultilineedit.h>
42#endif //KAB_EMBEDDED 42#endif //KAB_EMBEDDED
43 43
44 44
45#include "keywidget.h" 45#include "keywidget.h"
46#include "geowidget.h" 46#include "geowidget.h"
47#include "imagewidget.h" 47#include "imagewidget.h"
48#include "nameeditdialog.h" 48#include "nameeditdialog.h"
49#include "phoneeditwidget.h" 49#include "phoneeditwidget.h"
50#include "secrecywidget.h" 50#include "secrecywidget.h"
51 51
52 52
53#include <qtoolbutton.h> 53#include <qtoolbutton.h>
54#include <qtooltip.h> 54#include <qtooltip.h>
55 55
56#include <kapplication.h> 56#include <kapplication.h>
57#include <kconfig.h> 57#include <kconfig.h>
58#include <kcombobox.h> 58#include <kcombobox.h>
59#include <kdebug.h> 59#include <kdebug.h>
60#include <kdialogbase.h> 60#include <kdialogbase.h>
61#include <kglobal.h> 61#include <kglobal.h>
62#include <kiconloader.h> 62#include <kiconloader.h>
63#include <klineedit.h> 63#include <klineedit.h>
64#include <klocale.h> 64#include <klocale.h>
65#include <kmessagebox.h> 65#include <kmessagebox.h>
66#include <kseparator.h> 66#include <kseparator.h>
67#include <ksqueezedtextlabel.h> 67#include <ksqueezedtextlabel.h>
68 68
69#include <libkdepim/categoryeditdialog.h> 69#include <libkdepim/categoryeditdialog.h>
70#include <libkdepim/categoryselectdialog.h> 70#include <libkdepim/categoryselectdialog.h>
71 71
72#include <libkdepim/kdateedit.h> 72#include <libkdepim/kdateedit.h>
73 73
74#include "addresseditwidget.h" 74#include "addresseditwidget.h"
75#include "emaileditwidget.h" 75#include "emaileditwidget.h"
76#include "kabcore.h" 76#include "kabcore.h"
77#include "kabprefs.h" 77#include "kabprefs.h"
78 78
79#include "addresseeeditorwidget.h" 79#include "addresseeeditorwidget.h"
80 80
81 81
82 82
83AddresseeEditorWidget::AddresseeEditorWidget( KABCore *core, bool isExtension, 83AddresseeEditorWidget::AddresseeEditorWidget( KABCore *core, bool isExtension,
84 QWidget *parent, const char *name ) 84 QWidget *parent, const char *name )
85 : ExtensionWidget( core, parent, name ), mIsExtension( isExtension ), 85 : ExtensionWidget( core, parent, name ), mIsExtension( isExtension ),
86 mBlockSignals( false ) 86 mBlockSignals( false )
87{ 87{
88 88
89 mAConfig = AddresseeConfig::instance(); 89 mAConfig = AddresseeConfig::instance();
90 90
91 mFormattedNameType = NameEditDialog::CustomName; 91 mFormattedNameType = NameEditDialog::CustomName;
92 initGUI(); 92 initGUI();
93 mCategoryDialog = 0; 93 mCategoryDialog = 0;
94 mCategoryEditDialog = 0; 94 mCategoryEditDialog = 0;
95 95
96 // Load the empty addressee as defaults 96 // Load the empty addressee as defaults
97 load(); 97 load();
98 98
99 mDirty = false; 99 mDirty = false;
100} 100}
101 101
102AddresseeEditorWidget::~AddresseeEditorWidget() 102AddresseeEditorWidget::~AddresseeEditorWidget()
103{ 103{
104 kdDebug(5720) << "~AddresseeEditorWidget()" << endl; 104 kdDebug(5720) << "~AddresseeEditorWidget()" << endl;
105} 105}
106 106
107void AddresseeEditorWidget::contactsSelectionChanged() 107void AddresseeEditorWidget::contactsSelectionChanged()
108{ 108{
109 KABC::Addressee::List list = selectedContacts(); 109 KABC::Addressee::List list = selectedContacts();
110 110
111 mAddressee = list[ 0 ]; 111 mAddressee = list[ 0 ];
112 load(); 112 load();
113} 113}
114 114
115void AddresseeEditorWidget::setAddressee( const KABC::Addressee &addr ) 115void AddresseeEditorWidget::setAddressee( const KABC::Addressee &addr )
116{ 116{
117 mAddressee = addr; 117 mAddressee = addr;
118 load(); 118 load();
119} 119}
120 120
121const KABC::Addressee &AddresseeEditorWidget::addressee() 121const KABC::Addressee &AddresseeEditorWidget::addressee()
122{ 122{
123 return mAddressee; 123 return mAddressee;
124} 124}
125 125
126void AddresseeEditorWidget::textChanged( const QString& ) 126void AddresseeEditorWidget::textChanged( const QString& )
127{ 127{
128 emitModified(); 128 emitModified();
129} 129}
130 130
131void AddresseeEditorWidget::initGUI() 131void AddresseeEditorWidget::initGUI()
132{ 132{
133 QVBoxLayout *layout = new QVBoxLayout( this ); 133 QVBoxLayout *layout = new QVBoxLayout( this );
134 134
135 mTabWidget = new QTabWidget( this ); 135 mTabWidget = new QTabWidget( this );
136 layout->addWidget( mTabWidget ); 136 layout->addWidget( mTabWidget );
137 137
138 setupTab1(); 138 setupTab1();
139 setupTab1_1(); 139 setupTab1_1();
140 setupTab2(); 140 setupTab2();
141 setupTab2_1(); 141 setupTab2_1();
142 setupTab3(); 142 setupTab3();
143 setupTab3_1(); 143 setupTab3_1();
144 144
145 mNameEdit->setFocus(); 145 mNameEdit->setFocus();
146 146
147 connect( mTabWidget, SIGNAL( currentChanged(QWidget*) ), 147 connect( mTabWidget, SIGNAL( currentChanged(QWidget*) ),
148 SLOT( pageChanged(QWidget*) ) ); 148 SLOT( pageChanged(QWidget*) ) );
149} 149}
150 150
151void AddresseeEditorWidget::setupTab1() 151void AddresseeEditorWidget::setupTab1()
152{ 152{
153 // This is the General tab 153 // This is the General tab
154 QWidget *tab1 = new QWidget( mTabWidget ); 154 QWidget *tab1 = new QWidget( mTabWidget );
155 155
156//US QGridLayout *layout = new QGridLayout( tab1, 11, 7 ); 156//US QGridLayout *layout = new QGridLayout( tab1, 11, 7 );
157 bool horLayout = false; 157 bool horLayout = false;
158 int maxCol = 1; 158 int maxCol = 1;
159 if ( QApplication::desktop()->width() == 640 || QApplication::desktop()->width() == 320 ) { 159 if ( QApplication::desktop()->width() == 640 || QApplication::desktop()->width() == 320 ) {
160 horLayout = true; 160 horLayout = true;
161 maxCol = 3; 161 maxCol = 3;
162 } 162 }
163 QGridLayout *layout = new QGridLayout( tab1, 8-maxCol, maxCol ); 163 QGridLayout *layout = new QGridLayout( tab1, 7-maxCol, maxCol );
164 164
165 layout->setMargin( KDialogBase::marginHintSmall() ); 165 layout->setMargin( KDialogBase::marginHintSmall() );
166 layout->setSpacing( KDialogBase::spacingHintSmall() ); 166 layout->setSpacing( KDialogBase::spacingHintSmall() );
167 167
168 QLabel *label; 168 QLabel *label;
169 KSeparator* bar; 169 KSeparator* bar;
170 QPushButton *button; 170 QPushButton *button;
171 171
172 ////////////////////////////////// 172 //////////////////////////////////
173 // Upper left group (person info) 173 // Upper left group (person info)
174 174
175 // Person icon 175 // Person icon
176 /* LR 176 /* LR
177 label = new QLabel( tab1 ); 177 label = new QLabel( tab1 );
178//US ambiguous call. Add one more parameter 178//US ambiguous call. Add one more parameter
179//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) ); 179//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) );
180 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) ); 180 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) );
181 layout->addMultiCellWidget( label, 0, 1, 0, 0 ); 181 layout->addMultiCellWidget( label, 0, 1, 0, 0 );
182 */ 182 */
183 // First name 183 // First name
184 button = new QPushButton( i18n( "Name..." ), tab1 ); 184 button = new QPushButton( i18n( "Name..." ), tab1 );
185//US QToolTip::add( button, i18n( "Edit the contact's name" ) ); 185//US QToolTip::add( button, i18n( "Edit the contact's name" ) );
186 mNameEdit = new KLineEdit( tab1, "mNameEdit" ); 186 mNameEdit = new KLineEdit( tab1, "mNameEdit" );
187 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ), 187 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ),
188 SLOT( nameTextChanged( const QString& ) ) ); 188 SLOT( nameTextChanged( const QString& ) ) );
189 connect( button, SIGNAL( clicked() ), SLOT( nameButtonClicked() ) ); 189 connect( button, SIGNAL( clicked() ), SLOT( nameButtonClicked() ) );
190 190
191 mNameLabel = new KSqueezedTextLabel( tab1 ); 191 mNameLabel = new KSqueezedTextLabel( tab1 );
192 mNameLabel->hide(); 192 mNameLabel->hide();
193 193
194 layout->addWidget( button, 0, 0 ); 194 layout->addWidget( button, 0, 0 );
195 layout->addWidget( mNameEdit, 0, 1 ); 195 layout->addWidget( mNameEdit, 0, 1 );
196 layout->addWidget( mNameLabel, 0, 1 ); 196 layout->addWidget( mNameLabel, 0, 1 );
197 197
198 button = new QPushButton( i18n( "Role:" ), tab1 ); 198 button = new QPushButton( i18n( "Role:" ), tab1 );
199 connect( button, SIGNAL( clicked() ), SLOT( setRole2FN() ) ); 199 connect( button, SIGNAL( clicked() ), SLOT( setRole2FN() ) );
200 //label = new QLabel( i18n( "Role:" ), tab1 ); 200 //label = new QLabel( i18n( "Role:" ), tab1 );
201 mRoleEdit = new KLineEdit( tab1 ); 201 mRoleEdit = new KLineEdit( tab1 );
202 connect( mRoleEdit, SIGNAL( textChanged( const QString& ) ), 202 connect( mRoleEdit, SIGNAL( textChanged( const QString& ) ),
203 SLOT( textChanged( const QString& ) ) ); 203 SLOT( textChanged( const QString& ) ) );
204 //label->setBuddy( mRoleEdit ); 204 //label->setBuddy( mRoleEdit );
205 layout->addWidget( button, 1, 0 ); 205 if ( horLayout ) {
206 layout->addWidget( mRoleEdit, 1, 1 ); 206 layout->addWidget( button, 0, 2 );
207 207 layout->addWidget( mRoleEdit, 0, 3 );
208
209 } else {
210 layout->addWidget( button, 1, 0 );
211 layout->addWidget( mRoleEdit, 1, 1 );
212 }
208 // Organization 213 // Organization
209 button = new QPushButton( i18n( "Organization:" ), tab1 ); 214 button = new QPushButton( i18n( "Organization:" ), tab1 );
210 connect( button, SIGNAL( clicked() ), SLOT( setCompany2FN() ) ); 215 connect( button, SIGNAL( clicked() ), SLOT( setCompany2FN() ) );
211 //label = new QLabel( i18n( "Organization:" ), tab1 ); 216 //label = new QLabel( i18n( "Organization:" ), tab1 );
212 mOrgEdit = new KLineEdit( tab1 ); 217 mOrgEdit = new KLineEdit( tab1 );
213 //label->setBuddy( mOrgEdit ); 218 //label->setBuddy( mOrgEdit );
214 connect( mOrgEdit, SIGNAL( textChanged( const QString& ) ), 219 connect( mOrgEdit, SIGNAL( textChanged( const QString& ) ),
215 SLOT( textChanged( const QString& ) ) ); 220 SLOT( textChanged( const QString& ) ) );
216 if ( horLayout ) { 221 if ( horLayout ) {
217 layout->addWidget( button, 1, 2 ); 222 layout->addWidget( button, 1, 2 );
218 layout->addWidget( mOrgEdit, 1, 3 ); 223 layout->addWidget( mOrgEdit, 1, 3 );
219 224
220 } else { 225 } else {
221 layout->addWidget( button, 2, 0 ); 226 layout->addWidget( button, 2, 0 );
222 layout->addWidget( mOrgEdit, 2, 1 ); 227 layout->addWidget( mOrgEdit, 2, 1 );
223 } 228 }
224 229
225 // File as (formatted name) 230 // File as (formatted name)
226 label = new QLabel( i18n( "Format.n.:" ), tab1 ); 231 label = new QLabel( i18n( "Format.n.:" ), tab1 );
227 mFormattedNameLabel = new KSqueezedTextLabel( tab1 ); 232 mFormattedNameLabel = new KSqueezedTextLabel( tab1 );
228 if ( horLayout ) { 233 if ( horLayout ) {
229 layout->addWidget( label, 0,2 ); 234 layout->addWidget( label, 1,0 );
230 layout->addWidget( mFormattedNameLabel, 0, 3 ); 235 layout->addWidget( mFormattedNameLabel, 1, 1 );
231 } else { 236 } else {
232 layout->addWidget( label, 3, 0 ); 237 layout->addWidget( label, 3, 0 );
233 layout->addWidget( mFormattedNameLabel, 3, 1 ); 238 layout->addWidget( mFormattedNameLabel, 3, 1 );
234 } 239 }
235 /* LR 240 /* LR
236 // Left hand separator. This separator doesn't go all the way 241 // Left hand separator. This separator doesn't go all the way
237 // across so the dialog still flows from top to bottom 242 // across so the dialog still flows from top to bottom
238 bar = new KSeparator( KSeparator::HLine, tab1 ); 243 bar = new KSeparator( KSeparator::HLine, tab1 );
239 layout->addMultiCellWidget( bar, 4, 4, 0, 2 ); 244 layout->addMultiCellWidget( bar, 4, 4, 0, 2 );
240 */ 245 */
241 ////////////////////////////////////// 246 //////////////////////////////////////
242 247
243 /* LR 248 /* LR
244 // Phone numbers (upper right) 249 // Phone numbers (upper right)
245 label = new QLabel( tab1 ); 250 label = new QLabel( tab1 );
246//US loadIcon call is ambiguous. Add one more parameter 251//US loadIcon call is ambiguous. Add one more parameter
247//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); 252//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
248 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 253 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
249//US layout->addMultiCellWidget( label, 0, 1, 3, 3 ); 254//US layout->addMultiCellWidget( label, 0, 1, 3, 3 );
250 layout->addMultiCellWidget( label, 5, 6, 0, 0 ); 255 layout->addMultiCellWidget( label, 5, 6, 0, 0 );
251 */ 256 */
252 mPhoneEditWidget = new PhoneEditWidget( tab1 ); 257 mPhoneEditWidget = new PhoneEditWidget( tab1 );
253 connect( mPhoneEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 258 connect( mPhoneEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
254//US layout->addMultiCellWidget( mPhoneEditWidget, 0, 3, 4, 6 ); 259//US layout->addMultiCellWidget( mPhoneEditWidget, 0, 3, 4, 6 );
255 int iii; 260 int iii;
256#ifndef DESKTOP_VERSION 261#ifndef DESKTOP_VERSION
257 iii = 7; 262 iii = 7;
258#else 263#else
259 iii = 8; 264 iii = 8;
260#endif 265#endif
261 layout->addMultiCellWidget( mPhoneEditWidget, 4, iii, 0, maxCol ); 266 layout->addMultiCellWidget( mPhoneEditWidget, 5-maxCol, 5-maxCol+4, 0, maxCol );
262 ++iii; 267 iii = 6-maxCol+4;
263 /* LR 268 /* LR
264 bar = new KSeparator( KSeparator::HLine, tab1 ); 269 bar = new KSeparator( KSeparator::HLine, tab1 );
265//US layout->addMultiCellWidget( bar, 4, 4, 3, 6 ); 270//US layout->addMultiCellWidget( bar, 4, 4, 3, 6 );
266 layout->addMultiCellWidget( bar, 9, 9, 0, 2 ); 271 layout->addMultiCellWidget( bar, 9, 9, 0, 2 );
267 */ 272 */
268/*US 273/*US
269 ////////////////////////////////////// 274 //////////////////////////////////////
270 // Addresses (lower left) 275 // Addresses (lower left)
271 label = new QLabel( tab1 ); 276 label = new QLabel( tab1 );
272//US loadIcon call is ambiguous. Add one more parameter 277//US loadIcon call is ambiguous. Add one more parameter
273//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop ) ); 278//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop ) );
274 label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) ); 279 label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) );
275 layout->addMultiCellWidget( label, 5, 6, 0, 0 ); 280 layout->addMultiCellWidget( label, 5, 6, 0, 0 );
276 281
277 mAddressEditWidget = new AddressEditWidget( tab1 ); 282 mAddressEditWidget = new AddressEditWidget( tab1 );
278 connect( mAddressEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 283 connect( mAddressEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
279 layout->addMultiCellWidget( mAddressEditWidget, 5, 9, 1, 2 ); 284 layout->addMultiCellWidget( mAddressEditWidget, 5, 9, 1, 2 );
280 285
281 ////////////////////////////////////// 286 //////////////////////////////////////
282 // Email / Web (lower right) 287 // Email / Web (lower right)
283 label = new QLabel( tab1 ); 288 label = new QLabel( tab1 );
284//US loadIcon call is ambiguous. Add one more parameter 289//US loadIcon call is ambiguous. Add one more parameter
285//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop) ); 290//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop) );
286 label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop, 0) ); 291 label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop, 0) );
287 layout->addMultiCellWidget( label, 5, 6, 3, 3 ); 292 layout->addMultiCellWidget( label, 5, 6, 3, 3 );
288 293
289 mEmailWidget = new EmailEditWidget( tab1 ); 294 mEmailWidget = new EmailEditWidget( tab1 );
290 connect( mEmailWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 295 connect( mEmailWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
291 layout->addMultiCellWidget( mEmailWidget, 5, 6, 4, 6 ); 296 layout->addMultiCellWidget( mEmailWidget, 5, 6, 4, 6 );
292 297
293 // add the separator 298 // add the separator
294 bar = new KSeparator( KSeparator::HLine, tab1 ); 299 bar = new KSeparator( KSeparator::HLine, tab1 );
295 layout->addMultiCellWidget( bar, 7, 7, 3, 6 ); 300 layout->addMultiCellWidget( bar, 7, 7, 3, 6 );
296 301
297 label = new QLabel( tab1 ); 302 label = new QLabel( tab1 );
298//US loadIcon call is ambiguous. Add one more parameter 303//US loadIcon call is ambiguous. Add one more parameter
299//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop) ); 304//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop) );
300 label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop, 0) ); 305 label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop, 0) );
301 layout->addMultiCellWidget( label, 8, 9, 3, 3 ); 306 layout->addMultiCellWidget( label, 8, 9, 3, 3 );
302 307
303 label = new QLabel( i18n( "URL:" ), tab1 ); 308 label = new QLabel( i18n( "URL:" ), tab1 );
304 mURLEdit = new KLineEdit( tab1 ); 309 mURLEdit = new KLineEdit( tab1 );
305 connect( mURLEdit, SIGNAL( textChanged( const QString& ) ), 310 connect( mURLEdit, SIGNAL( textChanged( const QString& ) ),
306 SLOT( textChanged( const QString& ) ) ); 311 SLOT( textChanged( const QString& ) ) );
307 label->setBuddy( mURLEdit ); 312 label->setBuddy( mURLEdit );
308 layout->addWidget( label, 8, 4 ); 313 layout->addWidget( label, 8, 4 );
309 layout->addMultiCellWidget( mURLEdit, 8, 8, 5, 6 ); 314 layout->addMultiCellWidget( mURLEdit, 8, 8, 5, 6 );
310 315
311 label = new QLabel( i18n( "&IM address:" ), tab1 ); 316 label = new QLabel( i18n( "&IM address:" ), tab1 );
312 mIMAddressEdit = new KLineEdit( tab1 ); 317 mIMAddressEdit = new KLineEdit( tab1 );
313 connect( mIMAddressEdit, SIGNAL( textChanged( const QString& ) ), 318 connect( mIMAddressEdit, SIGNAL( textChanged( const QString& ) ),
314 SLOT( textChanged( const QString& ) ) ); 319 SLOT( textChanged( const QString& ) ) );
315 label->setBuddy( mIMAddressEdit ); 320 label->setBuddy( mIMAddressEdit );
316 layout->addWidget( label, 9, 4 ); 321 layout->addWidget( label, 9, 4 );
317 layout->addMultiCellWidget( mIMAddressEdit, 9, 9, 5, 6 ); 322 layout->addMultiCellWidget( mIMAddressEdit, 9, 9, 5, 6 );
318 323
319 layout->addColSpacing( 6, 50 ); 324 layout->addColSpacing( 6, 50 );
320 325
321 bar = new KSeparator( KSeparator::HLine, tab1 ); 326 bar = new KSeparator( KSeparator::HLine, tab1 );
322 layout->addMultiCellWidget( bar, 10, 10, 0, 6 ); 327 layout->addMultiCellWidget( bar, 10, 10, 0, 6 );
323*/ 328*/
324 /////////////////////////////////////// 329 ///////////////////////////////////////
325 QHBox *categoryBox = new QHBox( tab1 ,"cato"); 330 QHBox *categoryBox = new QHBox( tab1 ,"cato");
326 categoryBox->setSpacing( KDialogBase::spacingHint() ); 331 categoryBox->setSpacing( KDialogBase::spacingHint() );
327 categoryBox->setMargin( KDialogBase::marginHintSmall() ); 332 categoryBox->setMargin( KDialogBase::marginHintSmall() );
328 333
329 // Categories 334 // Categories
330 button = new QPushButton( i18n( "Categories" ), categoryBox ); 335 button = new QPushButton( i18n( "Categories" ), categoryBox );
331 connect( button, SIGNAL( clicked() ), SLOT( categoryButtonClicked() ) ); 336 connect( button, SIGNAL( clicked() ), SLOT( categoryButtonClicked() ) );
332 337
333 mCategoryEdit = new KLineEdit( categoryBox ); 338 mCategoryEdit = new KLineEdit( categoryBox );
334 mCategoryEdit->setReadOnly( true ); 339 mCategoryEdit->setReadOnly( true );
335 connect( mCategoryEdit, SIGNAL( textChanged( const QString& ) ), 340 connect( mCategoryEdit, SIGNAL( textChanged( const QString& ) ),
336 SLOT( textChanged( const QString& ) ) ); 341 SLOT( textChanged( const QString& ) ) );
337 342
338 mSecrecyWidget = new SecrecyWidget( categoryBox ); 343 mSecrecyWidget = new SecrecyWidget( categoryBox );
339 connect( mSecrecyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 344 connect( mSecrecyWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
340 345
341//US layout->addMultiCellWidget( categoryBox, 11, 11, 0, 6 ); 346//US layout->addMultiCellWidget( categoryBox, 11, 11, 0, 6 );
342 layout->addMultiCellWidget( categoryBox, iii, iii, 0, maxCol ); 347 layout->addMultiCellWidget( categoryBox, iii, iii, 0, maxCol );
343 348
344 // Build the layout and add to the tab widget 349 // Build the layout and add to the tab widget
345 layout->activate(); // required 350 layout->activate(); // required
346 351
347 mTabWidget->addTab( tab1, i18n( "&General" ) ); 352 mTabWidget->addTab( tab1, i18n( "&General" ) );
348} 353}
349 354
350void AddresseeEditorWidget::setRole2FN() 355void AddresseeEditorWidget::setRole2FN()
351{ 356{
352 if ( mRoleEdit->text().isEmpty() ) return; 357 if ( mRoleEdit->text().isEmpty() ) return;
353 mFormattedNameType = NameEditDialog::CustomName; 358 mFormattedNameType = NameEditDialog::CustomName;
354 mAddressee.setFormattedName( mRoleEdit->text() ); 359 mAddressee.setFormattedName( mRoleEdit->text() );
355 mFormattedNameLabel->setText( mRoleEdit->text() ); 360 mFormattedNameLabel->setText( mRoleEdit->text() );
356 mDirty = true; 361 mDirty = true;
357} 362}
358void AddresseeEditorWidget::setCompany2FN() 363void AddresseeEditorWidget::setCompany2FN()
359{ 364{
360 if ( mOrgEdit->text().isEmpty() ) return; 365 if ( mOrgEdit->text().isEmpty() ) return;
361 mFormattedNameType = NameEditDialog::CustomName; 366 mFormattedNameType = NameEditDialog::CustomName;
362 mAddressee.setFormattedName( mOrgEdit->text() ); 367 mAddressee.setFormattedName( mOrgEdit->text() );
363 mFormattedNameLabel->setText( mOrgEdit->text() ); 368 mFormattedNameLabel->setText( mOrgEdit->text() );
364 mDirty = true; 369 mDirty = true;
365} 370}
366 371
367void AddresseeEditorWidget::setupTab1_1() 372void AddresseeEditorWidget::setupTab1_1()
368{ 373{
369 // This is the Address tab 374 // This is the Address tab
370 QWidget *tab1_1 = new QWidget( mTabWidget ); 375 QWidget *tab1_1 = new QWidget( mTabWidget );
371 376
372//US QGridLayout *layout = new QGridLayout( tab1_1, 11, 7 ); 377//US QGridLayout *layout = new QGridLayout( tab1_1, 11, 7 );
373 QGridLayout *layout = new QGridLayout( tab1_1, 7, 2 ); 378 QGridLayout *layout = new QGridLayout( tab1_1, 7, 2 );
374 layout->setMargin( KDialogBase::marginHintSmall() ); 379 layout->setMargin( KDialogBase::marginHintSmall() );
375 layout->setSpacing( KDialogBase::spacingHintSmall() ); 380 layout->setSpacing( KDialogBase::spacingHintSmall() );
376 381
377 QLabel *label; 382 QLabel *label;
378 KSeparator* bar; 383 KSeparator* bar;
379 QPushButton *button; 384 QPushButton *button;
380 385
381/*US 386/*US
382 ////////////////////////////////// 387 //////////////////////////////////
383 // Upper left group (person info) 388 // Upper left group (person info)
384 389
385 // Person icon 390 // Person icon
386 label = new QLabel( tab1 ); 391 label = new QLabel( tab1 );
387//US ambiguous call. Add one more parameter 392//US ambiguous call. Add one more parameter
388//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) ); 393//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) );
389 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) ); 394 label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) );
390 layout->addMultiCellWidget( label, 0, 1, 0, 0 ); 395 layout->addMultiCellWidget( label, 0, 1, 0, 0 );
391 396
392 // First name 397 // First name
393 button = new QPushButton( i18n( "Name..." ), tab1 ); 398 button = new QPushButton( i18n( "Name..." ), tab1 );
394 QToolTip::add( button, i18n( "Edit the contact's name" ) ); 399 QToolTip::add( button, i18n( "Edit the contact's name" ) );
395 mNameEdit = new KLineEdit( tab1, "mNameEdit" ); 400 mNameEdit = new KLineEdit( tab1, "mNameEdit" );
396 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ), 401 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ),
397 SLOT( nameTextChanged( const QString& ) ) ); 402 SLOT( nameTextChanged( const QString& ) ) );
398 connect( button, SIGNAL( clicked() ), SLOT( nameButtonClicked() ) ); 403 connect( button, SIGNAL( clicked() ), SLOT( nameButtonClicked() ) );
399 404
400#ifndef KAB_EMBEDDED 405#ifndef KAB_EMBEDDED
401 mNameLabel = new KSqueezedTextLabel( tab1 ); 406 mNameLabel = new KSqueezedTextLabel( tab1 );
402 mNameLabel->hide(); 407 mNameLabel->hide();
403#else //KAB_EMBEDDED 408#else //KAB_EMBEDDED
404qDebug("AddresseeEditorWidget::setupTab1 has to be changed"); 409qDebug("AddresseeEditorWidget::setupTab1 has to be changed");
405#endif //KAB_EMBEDDED 410#endif //KAB_EMBEDDED
406 411
407 layout->addWidget( button, 0, 1 ); 412 layout->addWidget( button, 0, 1 );
408 layout->addWidget( mNameEdit, 0, 2 ); 413 layout->addWidget( mNameEdit, 0, 2 );
409 414
410#ifndef KAB_EMBEDDED 415#ifndef KAB_EMBEDDED
411 layout->addWidget( mNameLabel, 0, 2 ); 416 layout->addWidget( mNameLabel, 0, 2 );
412#else //KAB_EMBEDDED 417#else //KAB_EMBEDDED
413qDebug("AddresseeEditorWidget::setupTab1 has to be changed"); 418qDebug("AddresseeEditorWidget::setupTab1 has to be changed");
414#endif //KAB_EMBEDDED 419#endif //KAB_EMBEDDED
415 420
416 label = new QLabel( i18n( "Role:" ), tab1 ); 421 label = new QLabel( i18n( "Role:" ), tab1 );
417 mRoleEdit = new KLineEdit( tab1 ); 422 mRoleEdit = new KLineEdit( tab1 );
418 connect( mRoleEdit, SIGNAL( textChanged( const QString& ) ), 423 connect( mRoleEdit, SIGNAL( textChanged( const QString& ) ),
419 SLOT( textChanged( const QString& ) ) ); 424 SLOT( textChanged( const QString& ) ) );
420 label->setBuddy( mRoleEdit ); 425 label->setBuddy( mRoleEdit );
421 layout->addWidget( label, 1, 1 ); 426 layout->addWidget( label, 1, 1 );
422 layout->addWidget( mRoleEdit, 1, 2 ); 427 layout->addWidget( mRoleEdit, 1, 2 );
423 428
424 // Organization 429 // Organization
425 label = new QLabel( i18n( "Organization:" ), tab1 ); 430 label = new QLabel( i18n( "Organization:" ), tab1 );
426 mOrgEdit = new KLineEdit( tab1 ); 431 mOrgEdit = new KLineEdit( tab1 );
427 label->setBuddy( mOrgEdit ); 432 label->setBuddy( mOrgEdit );
428 connect( mOrgEdit, SIGNAL( textChanged( const QString& ) ), 433 connect( mOrgEdit, SIGNAL( textChanged( const QString& ) ),
429 SLOT( textChanged( const QString& ) ) ); 434 SLOT( textChanged( const QString& ) ) );
430 layout->addWidget( label, 2, 1 ); 435 layout->addWidget( label, 2, 1 );
431 layout->addWidget( mOrgEdit, 2, 2 ); 436 layout->addWidget( mOrgEdit, 2, 2 );
432 437
433 // File as (formatted name) 438 // File as (formatted name)
434 label = new QLabel( i18n( "Formatted name:" ), tab1 ); 439 label = new QLabel( i18n( "Formatted name:" ), tab1 );
435#ifndef KAB_EMBEDDED 440#ifndef KAB_EMBEDDED
436 mFormattedNameLabel = new KSqueezedTextLabel( tab1 ); 441 mFormattedNameLabel = new KSqueezedTextLabel( tab1 );
437#else //KAB_EMBEDDED 442#else //KAB_EMBEDDED
438qDebug("AddresseeEditorWidget::setupTab1 has to be changed"); 443qDebug("AddresseeEditorWidget::setupTab1 has to be changed");
439#endif //KAB_EMBEDDED 444#endif //KAB_EMBEDDED
440 layout->addWidget( label, 3, 1 ); 445 layout->addWidget( label, 3, 1 );
441#ifndef KAB_EMBEDDED 446#ifndef KAB_EMBEDDED
442 layout->addWidget( mFormattedNameLabel, 3, 2 ); 447 layout->addWidget( mFormattedNameLabel, 3, 2 );
443#else //KAB_EMBEDDED 448#else //KAB_EMBEDDED
444qDebug("AddresseeEditorWidget::setupTab1 has to be changed"); 449qDebug("AddresseeEditorWidget::setupTab1 has to be changed");
445#endif //KAB_EMBEDDED 450#endif //KAB_EMBEDDED
446 451
447 // Left hand separator. This separator doesn't go all the way 452 // Left hand separator. This separator doesn't go all the way
448 // across so the dialog still flows from top to bottom 453 // across so the dialog still flows from top to bottom
449 bar = new KSeparator( KSeparator::HLine, tab1 ); 454 bar = new KSeparator( KSeparator::HLine, tab1 );
450 layout->addMultiCellWidget( bar, 4, 4, 0, 2 ); 455 layout->addMultiCellWidget( bar, 4, 4, 0, 2 );
451 456
452 ////////////////////////////////////// 457 //////////////////////////////////////
453 // Phone numbers (upper right) 458 // Phone numbers (upper right)
454 label = new QLabel( tab1 ); 459 label = new QLabel( tab1 );
455//US loadIcon call is ambiguous. Add one more parameter 460//US loadIcon call is ambiguous. Add one more parameter
456//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); 461//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
457 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 462 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
458 layout->addMultiCellWidget( label, 0, 1, 3, 3 ); 463 layout->addMultiCellWidget( label, 0, 1, 3, 3 );
459 464
460 mPhoneEditWidget = new PhoneEditWidget( tab1 ); 465 mPhoneEditWidget = new PhoneEditWidget( tab1 );
461 connect( mPhoneEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 466 connect( mPhoneEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
462 layout->addMultiCellWidget( mPhoneEditWidget, 0, 3, 4, 6 ); 467 layout->addMultiCellWidget( mPhoneEditWidget, 0, 3, 4, 6 );
463 468
464 bar = new KSeparator( KSeparator::HLine, tab1 ); 469 bar = new KSeparator( KSeparator::HLine, tab1 );
465 layout->addMultiCellWidget( bar, 4, 4, 3, 6 ); 470 layout->addMultiCellWidget( bar, 4, 4, 3, 6 );
466*/ 471*/
467 ////////////////////////////////////// 472 //////////////////////////////////////
468 // Addresses (lower left) 473 // Addresses (lower left)
469 /* LR 474 /* LR
470 label = new QLabel( tab1_1 ); 475 label = new QLabel( tab1_1 );
471//US loadIcon call is ambiguous. Add one more parameter 476//US loadIcon call is ambiguous. Add one more parameter
472//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop ) ); 477//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop ) );
473 label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) ); 478 label->setPixmap( KGlobal::iconLoader()->loadIcon( "gohome", KIcon::Desktop, 0 ) );
474//US layout->addMultiCellWidget( label, 5, 6, 0, 0 ); 479//US layout->addMultiCellWidget( label, 5, 6, 0, 0 );
475 layout->addMultiCellWidget( label, 0, 1, 0, 0 ); 480 layout->addMultiCellWidget( label, 0, 1, 0, 0 );
476 */ 481 */
477 482
478 mAddressEditWidget = new AddressEditWidget( tab1_1 ); 483 mAddressEditWidget = new AddressEditWidget( tab1_1 );
479 connect( mAddressEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 484 connect( mAddressEditWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
480//US layout->addMultiCellWidget( mAddressEditWidget, 5, 9, 1, 2 ); 485//US layout->addMultiCellWidget( mAddressEditWidget, 5, 9, 1, 2 );
481 layout->addMultiCellWidget( mAddressEditWidget, 0, 4, 0, 1 ); 486 layout->addMultiCellWidget( mAddressEditWidget, 0, 4, 0, 1 );
482 487
483//US 488//US
484/* LR 489/* LR
485 bar = new KSeparator( KSeparator::HLine, tab1_1 ); 490 bar = new KSeparator( KSeparator::HLine, tab1_1 );
486 layout->addMultiCellWidget( bar, 5, 5, 0, 3 ); 491 layout->addMultiCellWidget( bar, 5, 5, 0, 3 );
487*/ 492*/
488 493
489 ////////////////////////////////////// 494 //////////////////////////////////////
490 // Email / Web (lower right) 495 // Email / Web (lower right)
491 /* LR 496 /* LR
492 label = new QLabel( tab1_1 ); 497 label = new QLabel( tab1_1 );
493//US loadIcon call is ambiguous. Add one more parameter 498//US loadIcon call is ambiguous. Add one more parameter
494//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop) ); 499//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop) );
495 label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop, 0) ); 500 label->setPixmap( KGlobal::iconLoader()->loadIcon( "email", KIcon::Desktop, 0) );
496//US layout->addMultiCellWidget( label, 5, 6, 3, 3 ); 501//US layout->addMultiCellWidget( label, 5, 6, 3, 3 );
497 layout->addMultiCellWidget( label, 6, 7, 0, 0 ); 502 layout->addMultiCellWidget( label, 6, 7, 0, 0 );
498 */ 503 */
499 mEmailWidget = new EmailEditWidget( tab1_1 ); 504 mEmailWidget = new EmailEditWidget( tab1_1 );
500 connect( mEmailWidget, SIGNAL( modified() ), SLOT( emitModified() ) ); 505 connect( mEmailWidget, SIGNAL( modified() ), SLOT( emitModified() ) );
501//US layout->addMultiCellWidget( mEmailWidget, 5, 6, 4, 6 ); 506//US layout->addMultiCellWidget( mEmailWidget, 5, 6, 4, 6 );
502 layout->addMultiCellWidget( mEmailWidget, 5, 6, 0, 1 ); 507 layout->addMultiCellWidget( mEmailWidget, 5, 6, 0, 1 );
503 508
504 /* LR 509 /* LR
505 // add the separator 510 // add the separator
506 bar = new KSeparator( KSeparator::HLine, tab1_1 ); 511 bar = new KSeparator( KSeparator::HLine, tab1_1 );
507//US layout->addMultiCellWidget( bar, 7, 7, 3, 6 ); 512//US layout->addMultiCellWidget( bar, 7, 7, 3, 6 );
508 layout->addMultiCellWidget( bar, 8, 8, 0, 3 ); 513 layout->addMultiCellWidget( bar, 8, 8, 0, 3 );
509 514
510 label = new QLabel( tab1_1 ); 515 label = new QLabel( tab1_1 );
511//US loadIcon call is ambiguous. Add one more parameter 516//US loadIcon call is ambiguous. Add one more parameter
512//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop) ); 517//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop) );
513 label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop, 0) ); 518 label->setPixmap( KGlobal::iconLoader()->loadIcon( "homepage", KIcon::Desktop, 0) );
514//US layout->addMultiCellWidget( label, 8, 9, 3, 3 ); 519//US layout->addMultiCellWidget( label, 8, 9, 3, 3 );
515 layout->addMultiCellWidget( label, 9, 10, 0, 0 ); 520 layout->addMultiCellWidget( label, 9, 10, 0, 0 );
516 */ 521 */
517 label = new QLabel( i18n( "URL:" ), tab1_1 ); 522 label = new QLabel( i18n( "URL:" ), tab1_1 );
518 mURLEdit = new KLineEdit( tab1_1 ); 523 mURLEdit = new KLineEdit( tab1_1 );
519 connect( mURLEdit, SIGNAL( textChanged( const QString& ) ), 524 connect( mURLEdit, SIGNAL( textChanged( const QString& ) ),
520 SLOT( textChanged( const QString& ) ) ); 525 SLOT( textChanged( const QString& ) ) );
521 label->setBuddy( mURLEdit ); 526 label->setBuddy( mURLEdit );
522//US layout->addWidget( label, 8, 4 ); 527//US layout->addWidget( label, 8, 4 );
523 layout->addWidget( label, 7,0 ); 528 layout->addWidget( label, 7,0 );
524//US layout->addMultiCellWidget( mURLEdit, 8, 8, 5, 6 ); 529//US layout->addMultiCellWidget( mURLEdit, 8, 8, 5, 6 );
525 layout->addWidget( mURLEdit, 7, 1); 530 layout->addWidget( mURLEdit, 7, 1);
526 531
527 label = new QLabel( i18n( "&IM address:" ), tab1_1 ); 532 label = new QLabel( i18n( "&IM address:" ), tab1_1 );
528 mIMAddressEdit = new KLineEdit( tab1_1 ); 533 mIMAddressEdit = new KLineEdit( tab1_1 );
529 connect( mIMAddressEdit, SIGNAL( textChanged( const QString& ) ), 534 connect( mIMAddressEdit, SIGNAL( textChanged( const QString& ) ),
530 SLOT( textChanged( const QString& ) ) ); 535 SLOT( textChanged( const QString& ) ) );
531 label->setBuddy( mIMAddressEdit ); 536 label->setBuddy( mIMAddressEdit );
532//US layout->addWidget( label, 9, 4 ); 537//US layout->addWidget( label, 9, 4 );
533 layout->addWidget( label, 8, 0 ); 538 layout->addWidget( label, 8, 0 );
534//US layout->addMultiCellWidget( mIMAddressEdit, 9, 9, 5, 6 ); 539//US layout->addMultiCellWidget( mIMAddressEdit, 9, 9, 5, 6 );
535 layout->addWidget( mIMAddressEdit, 8,1 ); 540 layout->addWidget( mIMAddressEdit, 8,1 );
536 541
537//US layout->addColSpacing( 6, 50 ); 542//US layout->addColSpacing( 6, 50 );
538 543
539//US bar = new KSeparator( KSeparator::HLine, tab1_1 ); 544//US bar = new KSeparator( KSeparator::HLine, tab1_1 );
540//US layout->addMultiCellWidget( bar, 10, 10, 0, 6 ); 545//US layout->addMultiCellWidget( bar, 10, 10, 0, 6 );
541 546
542/*US 547/*US
543 /////////////////////////////////////// 548 ///////////////////////////////////////
544 QHBox *categoryBox = new QHBox( tab1 ); 549 QHBox *categoryBox = new QHBox( tab1 );
545 categoryBox->setSpacing( KDialogBase::spacingHintSmall() ); 550 categoryBox->setSpacing( KDialogBase::spacingHintSmall() );
546 551
547 // Categories 552 // Categories
548 button = new QPushButton( i18n( "Categories" ), categoryBox ); 553 button = new QPushButton( i18n( "Categories" ), categoryBox );
549 connect( button, SIGNAL( clicked() ), SLOT( categoryButtonClicked() ) ); 554 connect( button, SIGNAL( clicked() ), SLOT( categoryButtonClicked() ) );
550 555
551 mCategoryEdit = new KLineEdit( categoryBox ); 556 mCategoryEdit = new KLineEdit( categoryBox );
552 mCategoryEdit->setReadOnly( true ); 557 mCategoryEdit->setReadOnly( true );
553 connect( mCategoryEdit, SIGNAL( textChanged( const QString& ) ), 558 connect( mCategoryEdit, SIGNAL( textChanged( const QString& ) ),
554 SLOT( textChanged( const QString& ) ) ); 559 SLOT( textChanged( const QString& ) ) );
555 560
556 mSecrecyWidget = new SecrecyWidget( categoryBox ); 561 mSecrecyWidget = new SecrecyWidget( categoryBox );
557 connect( mSecrecyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); 562 connect( mSecrecyWidget, SIGNAL( changed() ), SLOT( emitModified() ) );
558 563
559 layout->addMultiCellWidget( categoryBox, 11, 11, 0, 6 ); 564 layout->addMultiCellWidget( categoryBox, 11, 11, 0, 6 );
560*/ 565*/
561 // Build the layout and add to the tab widget 566 // Build the layout and add to the tab widget
562 layout->activate(); // required 567 layout->activate(); // required
563 568
564 mTabWidget->addTab( tab1_1, i18n( "&Address" ) ); 569 mTabWidget->addTab( tab1_1, i18n( "&Address" ) );
565} 570}
566 571
567 572
568 573
569void AddresseeEditorWidget::setupTab2() 574void AddresseeEditorWidget::setupTab2()
570{ 575{
571 // This is the Details tab 576 // This is the Details tab
572 QWidget *tab2 = new QWidget( mTabWidget ); 577 QWidget *tab2 = new QWidget( mTabWidget );
573 578
574 QGridLayout *layout = new QGridLayout( tab2, 8, 3 ); 579 QGridLayout *layout = new QGridLayout( tab2, 8, 3 );
575 layout->setMargin( KDialogBase::marginHintSmall() ); 580 layout->setMargin( KDialogBase::marginHintSmall() );
576 layout->setSpacing( KDialogBase::spacingHintSmall() ); 581 layout->setSpacing( KDialogBase::spacingHintSmall() );
577 582
578 QLabel *label; 583 QLabel *label;
579 KSeparator* bar; 584 KSeparator* bar;
580 585
581 /////////////////////// 586 ///////////////////////
582 // Office info 587 // Office info
583 588
584 // Department 589 // Department
585 label = new QLabel( tab2 ); 590 label = new QLabel( tab2 );
586//US loadIcon call is ambiguous. Add one more parameter 591//US loadIcon call is ambiguous. Add one more parameter
587//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop ) ); 592//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop ) );
588 label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop, 0 ) ); 593 label->setPixmap( KGlobal::iconLoader()->loadIcon( "folder", KIcon::Desktop, 0 ) );
589 layout->addMultiCellWidget( label, 0, 1, 0, 0 ); 594 layout->addMultiCellWidget( label, 0, 1, 0, 0 );
590 595
591 label = new QLabel( i18n( "Department:" ), tab2 ); 596 label = new QLabel( i18n( "Department:" ), tab2 );
592 layout->addWidget( label, 0, 1 ); 597 layout->addWidget( label, 0, 1 );
593 mDepartmentEdit = new KLineEdit( tab2 ); 598 mDepartmentEdit = new KLineEdit( tab2 );
594 connect( mDepartmentEdit, SIGNAL( textChanged( const QString& ) ), 599 connect( mDepartmentEdit, SIGNAL( textChanged( const QString& ) ),
595 SLOT( textChanged( const QString& ) ) ); 600 SLOT( textChanged( const QString& ) ) );
596 label->setBuddy( mDepartmentEdit ); 601 label->setBuddy( mDepartmentEdit );
597 layout->addWidget( mDepartmentEdit, 0, 2 ); 602 layout->addWidget( mDepartmentEdit, 0, 2 );
598 603
599 label = new QLabel( i18n( "Office:" ), tab2 ); 604 label = new QLabel( i18n( "Office:" ), tab2 );
600 layout->addWidget( label, 1, 1 ); 605 layout->addWidget( label, 1, 1 );
601 mOfficeEdit = new KLineEdit( tab2 ); 606 mOfficeEdit = new KLineEdit( tab2 );
602 connect( mOfficeEdit, SIGNAL( textChanged( const QString& ) ), 607 connect( mOfficeEdit, SIGNAL( textChanged( const QString& ) ),
603 SLOT( textChanged( const QString& ) ) ); 608 SLOT( textChanged( const QString& ) ) );
604 label->setBuddy( mOfficeEdit ); 609 label->setBuddy( mOfficeEdit );
605 layout->addWidget( mOfficeEdit, 1, 2 ); 610 layout->addWidget( mOfficeEdit, 1, 2 );
606 611
607 label = new QLabel( i18n( "Profession:" ), tab2 ); 612 label = new QLabel( i18n( "Profession:" ), tab2 );
608 layout->addWidget( label, 2, 1 ); 613 layout->addWidget( label, 2, 1 );
609 mProfessionEdit = new KLineEdit( tab2 ); 614 mProfessionEdit = new KLineEdit( tab2 );
610 connect( mProfessionEdit, SIGNAL( textChanged( const QString& ) ), 615 connect( mProfessionEdit, SIGNAL( textChanged( const QString& ) ),
611 SLOT( textChanged( const QString& ) ) ); 616 SLOT( textChanged( const QString& ) ) );
612 label->setBuddy( mProfessionEdit ); 617 label->setBuddy( mProfessionEdit );
613 layout->addWidget( mProfessionEdit, 2, 2 ); 618 layout->addWidget( mProfessionEdit, 2, 2 );
614 619
615 label = new QLabel( i18n( "Manager\'s name:" ), tab2 ); 620 label = new QLabel( i18n( "Manager\'s name:" ), tab2 );
616//US layout->addWidget( label, 0, 3 ); 621//US layout->addWidget( label, 0, 3 );
617 layout->addWidget( label, 3, 1 ); 622 layout->addWidget( label, 3, 1 );
618 mManagerEdit = new KLineEdit( tab2 ); 623 mManagerEdit = new KLineEdit( tab2 );
619 connect( mManagerEdit, SIGNAL( textChanged( const QString& ) ), 624 connect( mManagerEdit, SIGNAL( textChanged( const QString& ) ),
620 SLOT( textChanged( const QString& ) ) ); 625 SLOT( textChanged( const QString& ) ) );
621 label->setBuddy( mManagerEdit ); 626 label->setBuddy( mManagerEdit );
622//US layout->addMultiCellWidget( mManagerEdit, 0, 0, 4, 5 ); 627//US layout->addMultiCellWidget( mManagerEdit, 0, 0, 4, 5 );
623 layout->addWidget( mManagerEdit, 3, 2 ); 628 layout->addWidget( mManagerEdit, 3, 2 );
624 629
625 label = new QLabel( i18n( "Assistant's name:" ), tab2 ); 630 label = new QLabel( i18n( "Assistant's name:" ), tab2 );
626//US layout->addWidget( label, 1, 3 ); 631//US layout->addWidget( label, 1, 3 );
627 layout->addWidget( label, 4, 1 ); 632 layout->addWidget( label, 4, 1 );
628 mAssistantEdit = new KLineEdit( tab2 ); 633 mAssistantEdit = new KLineEdit( tab2 );
629 connect( mAssistantEdit, SIGNAL( textChanged( const QString& ) ), 634 connect( mAssistantEdit, SIGNAL( textChanged( const QString& ) ),
630 SLOT( textChanged( const QString& ) ) ); 635 SLOT( textChanged( const QString& ) ) );
631 label->setBuddy( mAssistantEdit ); 636 label->setBuddy( mAssistantEdit );
632//US layout->addMultiCellWidget( mAssistantEdit, 1, 1, 4, 5 ); 637//US layout->addMultiCellWidget( mAssistantEdit, 1, 1, 4, 5 );
633 layout->addWidget( mAssistantEdit, 4, 2 ); 638 layout->addWidget( mAssistantEdit, 4, 2 );
634 639
635 bar = new KSeparator( KSeparator::HLine, tab2 ); 640 bar = new KSeparator( KSeparator::HLine, tab2 );
636//US layout->addMultiCellWidget( bar, 3, 3, 0, 5 ); 641//US layout->addMultiCellWidget( bar, 3, 3, 0, 5 );
637 layout->addMultiCellWidget( bar, 5, 5, 0, 2 ); 642 layout->addMultiCellWidget( bar, 5, 5, 0, 2 );
638 643
639 ///////////////////////////////////////////////// 644 /////////////////////////////////////////////////
640 // Personal info 645 // Personal info
641 646
642 //label = new QLabel( tab2 ); 647 //label = new QLabel( tab2 );
643//US loadIcon call is ambiguous. Add one more parameter 648//US loadIcon call is ambiguous. Add one more parameter
644//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) ); 649//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) );
645 //label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) ); 650 //label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) );
646//US layout->addMultiCellWidget( label, 4, 5, 0, 0 ); 651//US layout->addMultiCellWidget( label, 4, 5, 0, 0 );
647 //layout->addMultiCellWidget( label, 6, 7, 0, 0 ); 652 //layout->addMultiCellWidget( label, 6, 7, 0, 0 );
648 653
649 654
650 int iii = 6; 655 int iii = 6;
651 656
652 if ( QApplication::desktop()->width() == 640 ) { 657 if ( QApplication::desktop()->width() == 640 ) {
653 QHBox * nbox = new QHBox ( tab2 ); 658 QHBox * nbox = new QHBox ( tab2 );
654 label = new QLabel( i18n( "Nick name:" )+" ", nbox ); 659 label = new QLabel( i18n( "Nick name:" )+" ", nbox );
655 mNicknameEdit = new KLineEdit( nbox ); 660 mNicknameEdit = new KLineEdit( nbox );
656 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ), 661 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ),
657 SLOT( textChanged( const QString& ) ) ); 662 SLOT( textChanged( const QString& ) ) );
658 label->setBuddy( mNicknameEdit ); 663 label->setBuddy( mNicknameEdit );
659 664
660 label = new QLabel( " "+i18n( "Spouse's name:" )+" ", nbox ); 665 label = new QLabel( " "+i18n( "Spouse's name:" )+" ", nbox );
661 mSpouseEdit = new KLineEdit( nbox ); 666 mSpouseEdit = new KLineEdit( nbox );
662 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ), 667 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ),
663 SLOT( textChanged( const QString& ) ) ); 668 SLOT( textChanged( const QString& ) ) );
664 label->setBuddy( mSpouseEdit ); 669 label->setBuddy( mSpouseEdit );
665 layout->addMultiCellWidget( nbox, iii, iii, 1, 2 ); 670 layout->addMultiCellWidget( nbox, iii, iii, 1, 2 );
666 ++iii; 671 ++iii;
667 672
668 } else { 673 } else {
669 label = new QLabel( i18n( "Nick name:" ), tab2 ); 674 label = new QLabel( i18n( "Nick name:" ), tab2 );
670 layout->addWidget( label, iii, 1 ); 675 layout->addWidget( label, iii, 1 );
671 mNicknameEdit = new KLineEdit( tab2 ); 676 mNicknameEdit = new KLineEdit( tab2 );
672 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ), 677 connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ),
673 SLOT( textChanged( const QString& ) ) ); 678 SLOT( textChanged( const QString& ) ) );
674 label->setBuddy( mNicknameEdit ); 679 label->setBuddy( mNicknameEdit );
675 layout->addWidget( mNicknameEdit, iii, 2 ); 680 layout->addWidget( mNicknameEdit, iii, 2 );
676 ++iii; 681 ++iii;
677 682
678 label = new QLabel( i18n( "Spouse's name:" ), tab2 ); 683 label = new QLabel( i18n( "Spouse's name:" ), tab2 );
679 layout->addWidget( label, iii, 1 ); 684 layout->addWidget( label, iii, 1 );
680 mSpouseEdit = new KLineEdit( tab2 ); 685 mSpouseEdit = new KLineEdit( tab2 );
681 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ), 686 connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ),
682 SLOT( textChanged( const QString& ) ) ); 687 SLOT( textChanged( const QString& ) ) );
683 label->setBuddy( mSpouseEdit ); 688 label->setBuddy( mSpouseEdit );
684 layout->addWidget( mSpouseEdit, iii, 2 ); 689 layout->addWidget( mSpouseEdit, iii, 2 );
685 ++iii; 690 ++iii;
686 } 691 }
687 692
688 label = new QLabel( i18n( "Children's names:" ), tab2 ); 693 label = new QLabel( i18n( "Children's names:" ), tab2 );
689 layout->addWidget( label, iii, 1 ); 694 layout->addWidget( label, iii, 1 );
690 mChildEdit = new KLineEdit( tab2 ); 695 mChildEdit = new KLineEdit( tab2 );
691 connect( mChildEdit, SIGNAL( textChanged( const QString& ) ), 696 connect( mChildEdit, SIGNAL( textChanged( const QString& ) ),
692 SLOT( textChanged( const QString& ) ) ); 697 SLOT( textChanged( const QString& ) ) );
693 label->setBuddy( mChildEdit ); 698 label->setBuddy( mChildEdit );
694 layout->addWidget( mChildEdit, iii, 2 ); 699 layout->addWidget( mChildEdit, iii, 2 );
695 ++iii; 700 ++iii;
696 if ( QApplication::desktop()->width() == 640 ) { 701 if ( QApplication::desktop()->width() == 640 ) {
697 QHBox * nbox = new QHBox ( tab2 ); 702 QHBox * nbox = new QHBox ( tab2 );
698 label = new QLabel( i18n( "Birthday:" )+" ", nbox ); 703 label = new QLabel( i18n( "Birthday:" )+" ", nbox );
699 mBirthdayPicker = new KDateEdit( nbox ); 704 mBirthdayPicker = new KDateEdit( nbox );
700 //mBirthdayPicker->toggleDateFormat(); 705 //mBirthdayPicker->toggleDateFormat();
701 mBirthdayPicker->setHandleInvalid( true ); 706 mBirthdayPicker->setHandleInvalid( true );
702 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ), 707 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ),
703 SLOT( dateChanged( QDate ) ) ); 708 SLOT( dateChanged( QDate ) ) );
704 709
705 label->setBuddy( mBirthdayPicker ); 710 label->setBuddy( mBirthdayPicker );
706 711
707 label = new QLabel( " "+i18n( "Anniversary:" )+" ", nbox ); 712 label = new QLabel( " "+i18n( "Anniversary:" )+" ", nbox );
708 mAnniversaryPicker = new KDateEdit( nbox ); 713 mAnniversaryPicker = new KDateEdit( nbox );
709 mAnniversaryPicker->setHandleInvalid( true ); 714 mAnniversaryPicker->setHandleInvalid( true );
710 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ), 715 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ),
711 SLOT( dateChanged( QDate ) ) ); 716 SLOT( dateChanged( QDate ) ) );
712 717
713 label->setBuddy( mAnniversaryPicker ); 718 label->setBuddy( mAnniversaryPicker );
714 layout->addMultiCellWidget( nbox, iii, iii, 1, 2 ); 719 layout->addMultiCellWidget( nbox, iii, iii, 1, 2 );
715 ++iii; 720 ++iii;
716 721
717 } else { 722 } else {
718 723
719 label = new QLabel( i18n( "Birthday:" ), tab2 ); 724 label = new QLabel( i18n( "Birthday:" ), tab2 );
720 layout->addWidget( label, iii, 1 ); 725 layout->addWidget( label, iii, 1 );
721 mBirthdayPicker = new KDateEdit( tab2 ); 726 mBirthdayPicker = new KDateEdit( tab2 );
722 //mBirthdayPicker->toggleDateFormat(); 727 //mBirthdayPicker->toggleDateFormat();
723 mBirthdayPicker->setHandleInvalid( true ); 728 mBirthdayPicker->setHandleInvalid( true );
724 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ), 729 connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ),
725 SLOT( dateChanged( QDate ) ) ); 730 SLOT( dateChanged( QDate ) ) );
726 731
727 label->setBuddy( mBirthdayPicker ); 732 label->setBuddy( mBirthdayPicker );
728 layout->addWidget( mBirthdayPicker, iii, 2 ); 733 layout->addWidget( mBirthdayPicker, iii, 2 );
729 ++iii; 734 ++iii;
730 735
731 label = new QLabel( i18n( "Anniversary:" ), tab2 ); 736 label = new QLabel( i18n( "Anniversary:" ), tab2 );
732 layout->addWidget( label, iii, 1 ); 737 layout->addWidget( label, iii, 1 );
733 mAnniversaryPicker = new KDateEdit( tab2 ); 738 mAnniversaryPicker = new KDateEdit( tab2 );
734 mAnniversaryPicker->setHandleInvalid( true ); 739 mAnniversaryPicker->setHandleInvalid( true );
735 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ), 740 connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ),
736 SLOT( dateChanged( QDate ) ) ); 741 SLOT( dateChanged( QDate ) ) );
737 742
738 label->setBuddy( mAnniversaryPicker ); 743 label->setBuddy( mAnniversaryPicker );
739 layout->addWidget( mAnniversaryPicker, iii, 2 ); 744 layout->addWidget( mAnniversaryPicker, iii, 2 );
740 ++iii; 745 ++iii;
741 746
742 } 747 }
743 748
744 label = new QLabel( i18n( "Gender:" ), tab2 ); 749 label = new QLabel( i18n( "Gender:" ), tab2 );
745 layout->addWidget( label, iii, 1 ); 750 layout->addWidget( label, iii, 1 );
746 mGenderBox = new QComboBox ( tab2 ); 751 mGenderBox = new QComboBox ( tab2 );
747 mGenderBox->insertItem ( i18n( "ALIEN (undefined)" )); 752 mGenderBox->insertItem ( i18n( "ALIEN (undefined)" ));
748 mGenderBox->insertItem ( i18n( "female" )); 753 mGenderBox->insertItem ( i18n( "female" ));
749 mGenderBox->insertItem ( i18n( "male" )); 754 mGenderBox->insertItem ( i18n( "male" ));
750 connect( mGenderBox, SIGNAL( activated ( const QString & ) ), 755 connect( mGenderBox, SIGNAL( activated ( const QString & ) ),
751 SLOT( textChanged( const QString& ) ) ); 756 SLOT( textChanged( const QString& ) ) );
752 label->setBuddy( mGenderBox ); 757 label->setBuddy( mGenderBox );
753 layout->addWidget( mGenderBox, iii, 2 ); 758 layout->addWidget( mGenderBox, iii, 2 );
754 ++iii; 759 ++iii;
755 // Build the layout and add to the tab widget 760 // Build the layout and add to the tab widget
756 layout->activate(); // required 761 layout->activate(); // required
757 762
758 mTabWidget->addTab( tab2, i18n( "&Details" ) ); 763 mTabWidget->addTab( tab2, i18n( "&Details" ) );
759} 764}
760 765
761void AddresseeEditorWidget::setupTab2_1() 766void AddresseeEditorWidget::setupTab2_1()
762{ 767{
763 // This is the Details tab 768 // This is the Details tab
764 QWidget *tab2_2 = new QWidget( mTabWidget ); 769 QWidget *tab2_2 = new QWidget( mTabWidget );
765 770
766 QGridLayout *layout = new QGridLayout( tab2_2, 1, 2 ); 771 QGridLayout *layout = new QGridLayout( tab2_2, 1, 2 );
767 layout->setMargin( KDialogBase::marginHintSmall() ); 772 layout->setMargin( KDialogBase::marginHintSmall() );
768 layout->setSpacing( KDialogBase::spacingHintSmall() ); 773 layout->setSpacing( KDialogBase::spacingHintSmall() );
769 774
770 QLabel *label; 775 QLabel *label;
771 KSeparator* bar; 776 KSeparator* bar;
772 777
773/*US 778/*US
774 /////////////////////// 779 ///////////////////////
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp
index 7e2aec1..5639aa2 100644
--- a/kaddressbook/phoneeditwidget.cpp
+++ b/kaddressbook/phoneeditwidget.cpp
@@ -1,590 +1,592 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 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 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 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 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 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. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qlayout.h> 24#include <qlayout.h>
25#include <qlabel.h> 25#include <qlabel.h>
26#include <qtooltip.h> 26#include <qtooltip.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28#include <qcheckbox.h> 28#include <qcheckbox.h>
29#include <qstring.h> 29#include <qstring.h>
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#include <qhbox.h>
34#include <qcursor.h> 34#include <qcursor.h>
35#include <qtimer.h> 35#include <qtimer.h>
36#include <qapplication.h> 36#include <qapplication.h>
37 37
38#include <kbuttonbox.h> 38#include <kbuttonbox.h>
39#include <klistview.h> 39#include <klistview.h>
40#include <kapplication.h> 40#include <kapplication.h>
41#include <qapplication.h> 41#include <qapplication.h>
42#include <kconfig.h> 42#include <kconfig.h>
43#include <klineedit.h> 43#include <klineedit.h>
44#include <kcombobox.h> 44#include <kcombobox.h>
45#include <klocale.h> 45#include <klocale.h>
46#include <kdebug.h> 46#include <kdebug.h>
47#include <kglobal.h> 47#include <kglobal.h>
48#include <kiconloader.h> 48#include <kiconloader.h>
49 49
50#include <kabc/phonenumber.h> 50#include <kabc/phonenumber.h>
51 51
52#include "typecombo.h" 52#include "typecombo.h"
53 53
54#include "phoneeditwidget.h" 54#include "phoneeditwidget.h"
55 55
56PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) 56PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
57 : QWidget(parent,name) 57 : QWidget(parent,name)
58{ 58{
59 QGridLayout* gridLayout = new QGridLayout ( this, 2,2 ); 59 QGridLayout* gridLayout = new QGridLayout ( this, 2,2 );
60 60
61 QLabel *temp = new QLabel( "", this ); 61 QLabel *temp = new QLabel( "", this );
62 temp->setAlignment( Qt::AlignCenter ); 62 temp->setAlignment( Qt::AlignCenter );
63 temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 63 temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
64 QPushButton *addBut = new QPushButton ( "add", this ); 64 QPushButton *addBut = new QPushButton ( "add", this );
65 addBut->setPixmap ( SmallIcon("plus")); 65 addBut->setPixmap ( SmallIcon("plus"));
66 addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() ); 66 addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() );
67 connect(addBut,SIGNAL(clicked ()),SLOT(addNumber())); 67 connect(addBut,SIGNAL(clicked ()),SLOT(addNumber()));
68 68
69 sv = new QScrollView( this ); 69 sv = new QScrollView( this );
70 sv->setFrameStyle ( QFrame::Panel | QFrame::Plain ); 70 sv->setFrameStyle ( QFrame::Plain );
71 sv->setLineWidth ( 1 ); 71 sv->setLineWidth ( 0 );
72 sv->setMidLineWidth ( 1 ); 72 sv->setMidLineWidth ( 0 );
73 mw = new QWidget ( sv->viewport() ); 73 mw = new QWidget ( sv->viewport() );
74 sv->addChild(mw); 74 sv->addChild(mw);
75 sv->setResizePolicy( QScrollView::AutoOneFit ); 75 sv->setResizePolicy( QScrollView::AutoOneFit );
76 mainLayout = new QVBoxLayout ( mw ); 76 mainLayout = new QVBoxLayout ( mw );
77 mainLayout->setMargin( 0 ); 77 mainLayout->setMargin( 0 );
78 mainLayout->setSpacing( 0 ); 78 mainLayout->setSpacing( 0 );
79 gridLayout->setMargin( 2 );
80 gridLayout->setSpacing( 4 );
79 if ( QApplication::desktop()->width() == 240 || QApplication::desktop()->width() == 480 ) { 81 if ( QApplication::desktop()->width() == 240 || QApplication::desktop()->width() == 480 ) {
80 gridLayout->addWidget( addBut, 0, 0 ); 82 gridLayout->addWidget( addBut, 0, 0 );
81 gridLayout->addWidget( temp, 0, 1 ); 83 gridLayout->addWidget( temp, 0, 1 );
82 gridLayout->addMultiCellWidget( sv, 1,1 , 0,1 ); 84 gridLayout->addMultiCellWidget( sv, 1,1 , 0,1 );
83 } else { 85 } else {
84 gridLayout->addWidget( temp, 1, 0 ); 86 gridLayout->addWidget( temp, 1, 0 );
85 gridLayout->addWidget( addBut, 0, 0 ); 87 gridLayout->addWidget( addBut, 0, 0 );
86 gridLayout->addMultiCellWidget( sv, 0, 1, 1,1 ); 88 gridLayout->addMultiCellWidget( sv, 0, 1, 1,1 );
87 } 89 }
88 setDefaults(); 90 setDefaults();
89 mTypeNumberEditList.setAutoDelete( true ); 91 mTypeNumberEditList.setAutoDelete( true );
90 mPopup = new QPopupMenu( this ); 92 mPopup = new QPopupMenu( this );
91 QStringList list = PhoneNumber::supportedTypeListNames(); 93 QStringList list = PhoneNumber::supportedTypeListNames();
92 mPopupCount = list.count(); 94 mPopupCount = list.count();
93 int i = 0; 95 int i = 0;
94 while ( i < mPopupCount ) { 96 while ( i < mPopupCount ) {
95 mPopup->insertItem( list[ i ], i ); 97 mPopup->insertItem( list[ i ], i );
96 ++i; 98 ++i;
97 } 99 }
98 connect(mPopup,SIGNAL(activated(int)),this,SLOT(addNumberInt( int))); 100 connect(mPopup,SIGNAL(activated(int)),this,SLOT(addNumberInt( int)));
99 101
100} 102}
101 103
102PhoneEditWidget::~PhoneEditWidget() 104PhoneEditWidget::~PhoneEditWidget()
103{ 105{
104} 106}
105void PhoneEditWidget::setDefaults() 107void PhoneEditWidget::setDefaults()
106{ 108{
107 mTypeNumberEditList.clear(); 109 mTypeNumberEditList.clear();
108 PhoneTypeNumberEdit* edit = appendEditCombo(); 110 PhoneTypeNumberEdit* edit = appendEditCombo();
109 KABC::PhoneNumber phoneNumber; 111 KABC::PhoneNumber phoneNumber;
110 phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref ); 112 phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref );
111 edit->setPhoneNumber( phoneNumber ); 113 edit->setPhoneNumber( phoneNumber );
112 edit = appendEditCombo(); 114 edit = appendEditCombo();
113 phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); 115 phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref );
114 edit->setPhoneNumber( phoneNumber ); 116 edit->setPhoneNumber( phoneNumber );
115 edit = appendEditCombo(); 117 edit = appendEditCombo();
116 phoneNumber.setType( KABC::PhoneNumber::Cell ); 118 phoneNumber.setType( KABC::PhoneNumber::Cell );
117 edit->setPhoneNumber( phoneNumber ); 119 edit->setPhoneNumber( phoneNumber );
118 120
119} 121}
120void PhoneEditWidget::addNumberInt( int index ) 122void PhoneEditWidget::addNumberInt( int index )
121{ 123{
122 PhoneTypeNumberEdit* edit = appendEditCombo(); 124 PhoneTypeNumberEdit* edit = appendEditCombo();
123 KABC::PhoneNumber phoneNumber; 125 KABC::PhoneNumber phoneNumber;
124 phoneNumber.setType( PhoneNumber::supportedTypeList()[index] ); 126 phoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
125 edit->setPhoneNumber( phoneNumber ); 127 edit->setPhoneNumber( phoneNumber );
126 //verticalScrollBar()->setValue( 1024); 128 //verticalScrollBar()->setValue( 1024);
127 QTimer::singleShot( 0, this, SLOT ( bottomVisible() ) ); 129 QTimer::singleShot( 0, this, SLOT ( bottomVisible() ) );
128} 130}
129void PhoneEditWidget::bottomVisible() 131void PhoneEditWidget::bottomVisible()
130{ 132{
131 sv->setContentsPos ( 0, 1024 ); 133 sv->setContentsPos ( 0, 1024 );
132} 134}
133void PhoneEditWidget::addNumber() 135void PhoneEditWidget::addNumber()
134{ 136{
135 int i = 0; 137 int i = 0;
136 while ( i < mPopupCount ) { 138 while ( i < mPopupCount ) {
137 mPopup->setItemEnabled( i, true ); 139 mPopup->setItemEnabled( i, true );
138 ++i; 140 ++i;
139 } 141 }
140 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); 142 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
141 while ( edit ) { 143 while ( edit ) {
142 if ( edit->currentType() < mPopupCount -1 ) 144 if ( edit->currentType() < mPopupCount -1 )
143 mPopup->setItemEnabled( edit->currentType(), false ); 145 mPopup->setItemEnabled( edit->currentType(), false );
144 edit = mTypeNumberEditList.next(); 146 edit = mTypeNumberEditList.next();
145 } 147 }
146 mPopup->popup( QCursor::pos() ); 148 mPopup->popup( QCursor::pos() );
147} 149}
148PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo() 150PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo()
149{ 151{
150 PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw ); 152 PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw );
151 connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) ); 153 connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) );
152 connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) ); 154 connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) );
153 connect ( edit, SIGNAL ( deleteMe( PhoneTypeNumberEdit* ) ), this, SLOT ( deleteEdit( PhoneTypeNumberEdit*) ) ); 155 connect ( edit, SIGNAL ( deleteMe( PhoneTypeNumberEdit* ) ), this, SLOT ( deleteEdit( PhoneTypeNumberEdit*) ) );
154 connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) ); 156 connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) );
155 157
156 mainLayout->add( edit ); 158 mainLayout->add( edit );
157 mTypeNumberEditList.append( edit ); 159 mTypeNumberEditList.append( edit );
158 return edit; 160 return edit;
159} 161}
160 162
161void PhoneEditWidget::deleteEdit( PhoneTypeNumberEdit* ew ) 163void PhoneEditWidget::deleteEdit( PhoneTypeNumberEdit* ew )
162{ 164{
163 mPendingDelete = ew; 165 mPendingDelete = ew;
164 QTimer::singleShot( 0, this, SLOT ( pendingDelete() ) ); 166 QTimer::singleShot( 0, this, SLOT ( pendingDelete() ) );
165} 167}
166void PhoneEditWidget::pendingDelete() 168void PhoneEditWidget::pendingDelete()
167{ 169{
168 mTypeNumberEditList.removeRef( mPendingDelete ); 170 mTypeNumberEditList.removeRef( mPendingDelete );
169 emit modified(); 171 emit modified();
170} 172}
171 173
172void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li ) 174void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li )
173{ 175{
174 if ( li.isEmpty() ) { 176 if ( li.isEmpty() ) {
175 setDefaults(); 177 setDefaults();
176 return; 178 return;
177 } 179 }
178 mTypeNumberEditList.clear(); 180 mTypeNumberEditList.clear();
179 KABC::PhoneNumber::List::Iterator it; 181 KABC::PhoneNumber::List::Iterator it;
180 KABC::PhoneNumber::List list2 = li; 182 KABC::PhoneNumber::List list2 = li;
181 KABC::PhoneNumber::List list ; 183 KABC::PhoneNumber::List list ;
182 184
183 PhoneNumber::TypeList tList = PhoneNumber::supportedTypeList(); 185 PhoneNumber::TypeList tList = PhoneNumber::supportedTypeList();
184 int i = 0; 186 int i = 0;
185 int max = tList.count(); 187 int max = tList.count();
186 while ( i < max-1 ) { 188 while ( i < max-1 ) {
187 for ( it = list2.begin(); it != list2.end(); ++it ) { 189 for ( it = list2.begin(); it != list2.end(); ++it ) {
188 if ( (*it).type() == tList[i] ) { 190 if ( (*it).type() == tList[i] ) {
189 list.append( (*it ) ); 191 list.append( (*it ) );
190 break; 192 break;
191 } 193 }
192 } 194 }
193 ++i; 195 ++i;
194 } 196 }
195 for ( it = list2.begin(); it != list2.end(); ++it ) { 197 for ( it = list2.begin(); it != list2.end(); ++it ) {
196 if ( (*it).type() == tList[ max-1 ] ) 198 if ( (*it).type() == tList[ max-1 ] )
197 list.append( (*it ) ); 199 list.append( (*it ) );
198 } 200 }
199 for ( it = list.begin(); it != list.end(); ++it ) { 201 for ( it = list.begin(); it != list.end(); ++it ) {
200 PhoneTypeNumberEdit* editNew = appendEditCombo(); 202 PhoneTypeNumberEdit* editNew = appendEditCombo();
201 editNew->setPhoneNumber( (*it ) ); 203 editNew->setPhoneNumber( (*it ) );
202 } 204 }
203 205
204} 206}
205KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() 207KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
206{ 208{
207 KABC::PhoneNumber::List retList; 209 KABC::PhoneNumber::List retList;
208 210
209 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); 211 PhoneTypeNumberEdit* edit = mTypeNumberEditList.first();
210 while ( edit ) { 212 while ( edit ) {
211 if ( edit->isValid() ) { 213 if ( edit->isValid() ) {
212 retList.append( edit->phoneNumber()); 214 retList.append( edit->phoneNumber());
213 } 215 }
214 edit = mTypeNumberEditList.next(); 216 edit = mTypeNumberEditList.next();
215 217
216 } 218 }
217 return retList; 219 return retList;
218} 220}
219 221
220#if 0 222#if 0
221PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) 223PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name )
222 : QWidget( parent, name ) 224 : QWidget( parent, name )
223{ 225{
224 QGridLayout *layout = new QGridLayout( this, 4, 1 ); 226 QGridLayout *layout = new QGridLayout( this, 4, 1 );
225//US layout->setSpacing( KDialog::spacingHint() ); 227//US layout->setSpacing( KDialog::spacingHint() );
226 layout->setSpacing( KDialogBase::spacingHintSmall() ); 228 layout->setSpacing( KDialogBase::spacingHintSmall() );
227 229
228 230
229 231
230 QLabel* label = new QLabel( this ); 232 QLabel* label = new QLabel( this );
231//US loadIcon call is ambiguous. Add one more parameter 233//US loadIcon call is ambiguous. Add one more parameter
232//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); 234//US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) );
233 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); 235 label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) );
234 label->setAlignment( AlignCenter ); 236 label->setAlignment( AlignCenter );
235//US layout->addMultiCellWidget( label, 0, 1, 3, 3 ); 237//US layout->addMultiCellWidget( label, 0, 1, 3, 3 );
236 layout->addWidget( label, 0, 0 ); 238 layout->addWidget( label, 0, 0 );
237 239
238 QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ), 240 QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ),
239 this ); 241 this );
240 if ( QApplication::desktop()->width() < 640 ) 242 if ( QApplication::desktop()->width() < 640 )
241 layout->addWidget( editButton, 0, 1 ); 243 layout->addWidget( editButton, 0, 1 );
242 else 244 else
243 layout->addMultiCellWidget( editButton, 0, 0, 1, 3); 245 layout->addMultiCellWidget( editButton, 0, 0, 1, 3);
244 246
245 mPrefCombo = new PhoneTypeCombo( mPhoneList, this ); 247 mPrefCombo = new PhoneTypeCombo( mPhoneList, this );
246 mPrefEdit = new KLineEdit( this ); 248 mPrefEdit = new KLineEdit( this );
247 //mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) ); 249 //mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) );
248 mPrefCombo->setLineEdit( mPrefEdit ); 250 mPrefCombo->setLineEdit( mPrefEdit );
249 layout->addWidget( mPrefCombo, 1, 0 ); 251 layout->addWidget( mPrefCombo, 1, 0 );
250 layout->addWidget( mPrefEdit, 1, 1 ); 252 layout->addWidget( mPrefEdit, 1, 1 );
251 int x = 1, y = 2; 253 int x = 1, y = 2;
252 if ( QApplication::desktop()->width() < 640 ) { 254 if ( QApplication::desktop()->width() < 640 ) {
253 ++x; 255 ++x;
254 y = 0; 256 y = 0;
255 } 257 }
256 mSecondCombo = new PhoneTypeCombo( mPhoneList, this ); 258 mSecondCombo = new PhoneTypeCombo( mPhoneList, this );
257 mSecondEdit = new KLineEdit( this ); 259 mSecondEdit = new KLineEdit( this );
258 mSecondCombo->setLineEdit( mSecondEdit ); 260 mSecondCombo->setLineEdit( mSecondEdit );
259 layout->addWidget( mSecondCombo, x, y++ ); 261 layout->addWidget( mSecondCombo, x, y++ );
260 layout->addWidget( mSecondEdit, x, y++ ); 262 layout->addWidget( mSecondEdit, x, y++ );
261 263
262 y = 0; 264 y = 0;
263 ++x; 265 ++x;
264 mThirdCombo = new PhoneTypeCombo( mPhoneList, this ); 266 mThirdCombo = new PhoneTypeCombo( mPhoneList, this );
265 mThirdEdit = new KLineEdit( this ); 267 mThirdEdit = new KLineEdit( this );
266 mThirdCombo->setLineEdit( mThirdEdit ); 268 mThirdCombo->setLineEdit( mThirdEdit );
267 layout->addWidget( mThirdCombo, x, y++ ); 269 layout->addWidget( mThirdCombo, x, y++ );
268 layout->addWidget( mThirdEdit, x, y++ ); 270 layout->addWidget( mThirdEdit, x, y++ );
269 if ( QApplication::desktop()->width() < 640 ) { 271 if ( QApplication::desktop()->width() < 640 ) {
270 ++x; 272 ++x;
271 y = 0; 273 y = 0;
272 } 274 }
273 mFourthCombo = new PhoneTypeCombo( mPhoneList, this ); 275 mFourthCombo = new PhoneTypeCombo( mPhoneList, this );
274 mFourthEdit = new KLineEdit( this ); 276 mFourthEdit = new KLineEdit( this );
275 mFourthCombo->setLineEdit( mFourthEdit ); 277 mFourthCombo->setLineEdit( mFourthEdit );
276 layout->addWidget( mFourthCombo, x, y++ ); 278 layout->addWidget( mFourthCombo, x, y++ );
277 layout->addWidget( mFourthEdit, x, y++ ); 279 layout->addWidget( mFourthEdit, x, y++ );
278 280
279 // Four numbers don't fit in the current dialog 281 // Four numbers don't fit in the current dialog
280 if ( QApplication::desktop()->width() < 640 ) { 282 if ( QApplication::desktop()->width() < 640 ) {
281 mFourthCombo->hide(); 283 mFourthCombo->hide();
282 mFourthEdit->hide(); 284 mFourthEdit->hide();
283 } else { 285 } else {
284 QFontMetrics fm ( font () ) ; 286 QFontMetrics fm ( font () ) ;
285 int wid = fm.width( "Messenger" ) +60; 287 int wid = fm.width( "Messenger" ) +60;
286 mPrefCombo->setMaximumWidth( wid ); 288 mPrefCombo->setMaximumWidth( wid );
287 mSecondCombo->setMaximumWidth( wid ); 289 mSecondCombo->setMaximumWidth( wid );
288 mThirdCombo->setMaximumWidth( wid ); 290 mThirdCombo->setMaximumWidth( wid );
289 mFourthCombo->setMaximumWidth( wid ); 291 mFourthCombo->setMaximumWidth( wid );
290 } 292 }
291 293
292 294
293 connect( mPrefEdit, SIGNAL( textChanged( const QString& ) ), 295 connect( mPrefEdit, SIGNAL( textChanged( const QString& ) ),
294 SLOT( slotPrefEditChanged() ) ); 296 SLOT( slotPrefEditChanged() ) );
295 connect( mSecondEdit, SIGNAL( textChanged( const QString& ) ), 297 connect( mSecondEdit, SIGNAL( textChanged( const QString& ) ),
296 SLOT( slotSecondEditChanged() ) ); 298 SLOT( slotSecondEditChanged() ) );
297 connect( mThirdEdit, SIGNAL( textChanged( const QString& ) ), 299 connect( mThirdEdit, SIGNAL( textChanged( const QString& ) ),
298 SLOT( slotThirdEditChanged() ) ); 300 SLOT( slotThirdEditChanged() ) );
299 connect( mFourthEdit, SIGNAL( textChanged( const QString& ) ), 301 connect( mFourthEdit, SIGNAL( textChanged( const QString& ) ),
300 SLOT( slotFourthEditChanged() ) ); 302 SLOT( slotFourthEditChanged() ) );
301 303
302 connect( editButton, SIGNAL( clicked() ), SLOT( edit() ) ); 304 connect( editButton, SIGNAL( clicked() ), SLOT( edit() ) );
303 305
304 connect( mPrefCombo, SIGNAL( activated( int ) ), 306 connect( mPrefCombo, SIGNAL( activated( int ) ),
305 SLOT( updatePrefEdit() ) ); 307 SLOT( updatePrefEdit() ) );
306 connect( mSecondCombo, SIGNAL( activated( int ) ), 308 connect( mSecondCombo, SIGNAL( activated( int ) ),
307 SLOT( updateSecondEdit() ) ); 309 SLOT( updateSecondEdit() ) );
308 connect( mThirdCombo, SIGNAL( activated( int ) ), 310 connect( mThirdCombo, SIGNAL( activated( int ) ),
309 SLOT( updateThirdEdit() ) ); 311 SLOT( updateThirdEdit() ) );
310 connect( mFourthCombo, SIGNAL( activated( int ) ), 312 connect( mFourthCombo, SIGNAL( activated( int ) ),
311 SLOT( updateFourthEdit() ) ); 313 SLOT( updateFourthEdit() ) );
312} 314}
313 315
314PhoneEditWidget::~PhoneEditWidget() 316PhoneEditWidget::~PhoneEditWidget()
315{ 317{
316} 318}
317 319
318void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &list ) 320void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &list )
319{ 321{
320 mPhoneList.clear(); 322 mPhoneList.clear();
321 323
322 // Insert types for existing numbers. 324 // Insert types for existing numbers.
323 mPrefCombo->insertTypeList( list ); 325 mPrefCombo->insertTypeList( list );
324 326
325 QValueList<int> defaultTypes; 327 QValueList<int> defaultTypes;
326 defaultTypes << KABC::PhoneNumber::Home; 328 defaultTypes << KABC::PhoneNumber::Home;
327 defaultTypes << KABC::PhoneNumber::Work; 329 defaultTypes << KABC::PhoneNumber::Work;
328 defaultTypes << KABC::PhoneNumber::Cell; 330 defaultTypes << KABC::PhoneNumber::Cell;
329 defaultTypes << ( KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ); 331 defaultTypes << ( KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax );
330 defaultTypes << ( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ); 332 defaultTypes << ( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax );
331 333
332 // Insert default types. 334 // Insert default types.
333 // Doing this for mPrefCombo is enough because the list is shared by all 335 // Doing this for mPrefCombo is enough because the list is shared by all
334 // combos. 336 // combos.
335 QValueList<int>::ConstIterator it; 337 QValueList<int>::ConstIterator it;
336 for( it = defaultTypes.begin(); it != defaultTypes.end(); ++it ) { 338 for( it = defaultTypes.begin(); it != defaultTypes.end(); ++it ) {
337 if ( !mPrefCombo->hasType( *it ) ) 339 if ( !mPrefCombo->hasType( *it ) )
338 mPrefCombo->insertType( list, *it, PhoneNumber( "", *it ) ); 340 mPrefCombo->insertType( list, *it, PhoneNumber( "", *it ) );
339 } 341 }
340 342
341 updateCombos(); 343 updateCombos();
342 344
343 mPrefCombo->selectType( defaultTypes[ 0 ] ); 345 mPrefCombo->selectType( defaultTypes[ 0 ] );
344 mSecondCombo->selectType( defaultTypes[ 1 ] ); 346 mSecondCombo->selectType( defaultTypes[ 1 ] );
345 mThirdCombo->selectType( defaultTypes[ 2 ] ); 347 mThirdCombo->selectType( defaultTypes[ 2 ] );
346 mFourthCombo->selectType( defaultTypes[ 3 ] ); 348 mFourthCombo->selectType( defaultTypes[ 3 ] );
347 349
348 updateLineEdits(); 350 updateLineEdits();
349} 351}
350 352
351void PhoneEditWidget::updateLineEdits() 353void PhoneEditWidget::updateLineEdits()
352{ 354{
353 updatePrefEdit(); 355 updatePrefEdit();
354 updateSecondEdit(); 356 updateSecondEdit();
355 updateThirdEdit(); 357 updateThirdEdit();
356 updateFourthEdit(); 358 updateFourthEdit();
357} 359}
358 360
359void PhoneEditWidget::updateCombos() 361void PhoneEditWidget::updateCombos()
360{ 362{
361 mPrefCombo->updateTypes(); 363 mPrefCombo->updateTypes();
362 mSecondCombo->updateTypes(); 364 mSecondCombo->updateTypes();
363 mThirdCombo->updateTypes(); 365 mThirdCombo->updateTypes();
364 mFourthCombo->updateTypes(); 366 mFourthCombo->updateTypes();
365} 367}
366 368
367KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() 369KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers()
368{ 370{
369 KABC::PhoneNumber::List retList; 371 KABC::PhoneNumber::List retList;
370 372
371 KABC::PhoneNumber::List::Iterator it; 373 KABC::PhoneNumber::List::Iterator it;
372 for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it ) 374 for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it )
373 if ( !(*it).number().isEmpty() ) 375 if ( !(*it).number().isEmpty() )
374 retList.append( *it ); 376 retList.append( *it );
375 377
376 return retList; 378 return retList;
377} 379}
378 380
379void PhoneEditWidget::edit() 381void PhoneEditWidget::edit()
380{ 382{
381 PhoneEditDialog dlg( mPhoneList, this ); 383 PhoneEditDialog dlg( mPhoneList, this );
382 384
383 if ( dlg.exec() ) { 385 if ( dlg.exec() ) {
384 if ( dlg.changed() ) { 386 if ( dlg.changed() ) {
385 KABC::PhoneNumber::List list = dlg.phoneNumbers(); 387 KABC::PhoneNumber::List list = dlg.phoneNumbers();
386 setPhoneNumbers( list ); 388 setPhoneNumbers( list );
387 updateCombos(); 389 updateCombos();
388 updateLineEdits(); 390 updateLineEdits();
389 emit modified(); 391 emit modified();
390 } 392 }
391 } 393 }
392} 394}
393 395
394void PhoneEditWidget::updatePrefEdit() 396void PhoneEditWidget::updatePrefEdit()
395{ 397{
396 updateEdit( mPrefCombo ); 398 updateEdit( mPrefCombo );
397} 399}
398 400
399void PhoneEditWidget::updateSecondEdit() 401void PhoneEditWidget::updateSecondEdit()
400{ 402{
401 updateEdit( mSecondCombo ); 403 updateEdit( mSecondCombo );
402} 404}
403 405
404void PhoneEditWidget::updateThirdEdit() 406void PhoneEditWidget::updateThirdEdit()
405{ 407{
406 updateEdit( mThirdCombo ); 408 updateEdit( mThirdCombo );
407} 409}
408 410
409void PhoneEditWidget::updateFourthEdit() 411void PhoneEditWidget::updateFourthEdit()
410{ 412{
411 updateEdit( mFourthCombo ); 413 updateEdit( mFourthCombo );
412} 414}
413 415
414void PhoneEditWidget::updateEdit( PhoneTypeCombo *combo ) 416void PhoneEditWidget::updateEdit( PhoneTypeCombo *combo )
415{ 417{
416 QLineEdit *edit = combo->lineEdit(); 418 QLineEdit *edit = combo->lineEdit();
417 if ( !edit ) 419 if ( !edit )
418 return; 420 return;
419 421
420#if 0 422#if 0
421 if ( edit == mPrefEdit ) kdDebug(5720) << " prefEdit" << endl; 423 if ( edit == mPrefEdit ) kdDebug(5720) << " prefEdit" << endl;
422 if ( edit == mSecondEdit ) kdDebug(5720) << " secondEdit" << endl; 424 if ( edit == mSecondEdit ) kdDebug(5720) << " secondEdit" << endl;
423 if ( edit == mThirdEdit ) kdDebug(5720) << " thirdEdit" << endl; 425 if ( edit == mThirdEdit ) kdDebug(5720) << " thirdEdit" << endl;
424 if ( edit == mFourthEdit ) kdDebug(5720) << " fourthEdit" << endl; 426 if ( edit == mFourthEdit ) kdDebug(5720) << " fourthEdit" << endl;
425#endif 427#endif
426 428
427 PhoneNumber::List::Iterator it = combo->selectedElement(); 429 PhoneNumber::List::Iterator it = combo->selectedElement();
428 if ( it != mPhoneList.end() ) { 430 if ( it != mPhoneList.end() ) {
429 edit->setText( (*it).number() ); 431 edit->setText( (*it).number() );
430 } else { 432 } else {
431 kdDebug(5720) << "PhoneEditWidget::updateEdit(): no selected element" << endl; 433 kdDebug(5720) << "PhoneEditWidget::updateEdit(): no selected element" << endl;
432 } 434 }
433} 435}
434 436
435void PhoneEditWidget::slotPrefEditChanged() 437void PhoneEditWidget::slotPrefEditChanged()
436{ 438{
437 updatePhoneNumber( mPrefCombo ); 439 updatePhoneNumber( mPrefCombo );
438} 440}
439 441
440void PhoneEditWidget::slotSecondEditChanged() 442void PhoneEditWidget::slotSecondEditChanged()
441{ 443{
442 updatePhoneNumber( mSecondCombo ); 444 updatePhoneNumber( mSecondCombo );
443} 445}
444 446
445void PhoneEditWidget::slotThirdEditChanged() 447void PhoneEditWidget::slotThirdEditChanged()
446{ 448{
447 updatePhoneNumber( mThirdCombo ); 449 updatePhoneNumber( mThirdCombo );
448} 450}
449 451
450void PhoneEditWidget::slotFourthEditChanged() 452void PhoneEditWidget::slotFourthEditChanged()
451{ 453{
452 updatePhoneNumber( mFourthCombo ); 454 updatePhoneNumber( mFourthCombo );
453} 455}
454 456
455void PhoneEditWidget::updatePhoneNumber( PhoneTypeCombo *combo ) 457void PhoneEditWidget::updatePhoneNumber( PhoneTypeCombo *combo )
456{ 458{
457 QLineEdit *edit = combo->lineEdit(); 459 QLineEdit *edit = combo->lineEdit();
458 if ( !edit ) return; 460 if ( !edit ) return;
459 461
460 PhoneNumber::List::Iterator it = combo->selectedElement(); 462 PhoneNumber::List::Iterator it = combo->selectedElement();
461 if ( it != mPhoneList.end() ) { 463 if ( it != mPhoneList.end() ) {
462 (*it).setNumber( edit->text() ); 464 (*it).setNumber( edit->text() );
463 } 465 }
464 466
465 updateOtherEdit( combo, mPrefCombo ); 467 updateOtherEdit( combo, mPrefCombo );
466 updateOtherEdit( combo, mSecondCombo ); 468 updateOtherEdit( combo, mSecondCombo );
467 updateOtherEdit( combo, mThirdCombo ); 469 updateOtherEdit( combo, mThirdCombo );
468 updateOtherEdit( combo, mFourthCombo ); 470 updateOtherEdit( combo, mFourthCombo );
469 471
470 emit modified(); 472 emit modified();
471} 473}
472 474
473void PhoneEditWidget::updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo ) 475void PhoneEditWidget::updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo )
474{ 476{
475 if ( combo == otherCombo ) return; 477 if ( combo == otherCombo ) return;
476 478
477 if ( combo->currentItem() == otherCombo->currentItem() ) { 479 if ( combo->currentItem() == otherCombo->currentItem() ) {
478 updateEdit( otherCombo ); 480 updateEdit( otherCombo );
479 } 481 }
480} 482}
481 483
482/////////////////////////////////////////// 484///////////////////////////////////////////
483// PhoneEditDialog 485// PhoneEditDialog
484 486
485class PhoneViewItem : public QListViewItem 487class PhoneViewItem : public QListViewItem
486{ 488{
487public: 489public:
488 PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ); 490 PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number );
489 491
490 void setPhoneNumber( const KABC::PhoneNumber &number ) 492 void setPhoneNumber( const KABC::PhoneNumber &number )
491 { 493 {
492 mPhoneNumber = number; 494 mPhoneNumber = number;
493 makeText(); 495 makeText();
494 } 496 }
495 497
496 QString key() { return mPhoneNumber.id(); } 498 QString key() { return mPhoneNumber.id(); }
497 QString country() { return ""; } 499 QString country() { return ""; }
498 QString region() { return ""; } 500 QString region() { return ""; }
499 QString number() { return ""; } 501 QString number() { return ""; }
500 502
501 KABC::PhoneNumber phoneNumber() { return mPhoneNumber; } 503 KABC::PhoneNumber phoneNumber() { return mPhoneNumber; }
502 504
503private: 505private:
504 void makeText(); 506 void makeText();
505 507
506 KABC::PhoneNumber mPhoneNumber; 508 KABC::PhoneNumber mPhoneNumber;
507}; 509};
508 510
509PhoneViewItem::PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number ) 511PhoneViewItem::PhoneViewItem( QListView *parent, const KABC::PhoneNumber &number )
510 : QListViewItem( parent ), mPhoneNumber( number ) 512 : QListViewItem( parent ), mPhoneNumber( number )
511{ 513{
512#ifdef DESKTOP_VERSION 514#ifdef DESKTOP_VERSION
513 setRenameEnabled ( 0, true ); 515 setRenameEnabled ( 0, true );
514#endif 516#endif
515 makeText(); 517 makeText();
516} 518}
517 519
518void PhoneViewItem::makeText() 520void PhoneViewItem::makeText()
519{ 521{
520 /** 522 /**
521 * Will be used in future versions of kaddressbook/libkabc 523 * Will be used in future versions of kaddressbook/libkabc
522 524
523 setText( 0, mPhoneNumber.country() ); 525 setText( 0, mPhoneNumber.country() );
524 setText( 1, mPhoneNumber.region() ); 526 setText( 1, mPhoneNumber.region() );
525 setText( 2, mPhoneNumber.number() ); 527 setText( 2, mPhoneNumber.number() );
526 setText( 3, mPhoneNumber.typeLabel() ); 528 setText( 3, mPhoneNumber.typeLabel() );
527 */ 529 */
528 530
529 setText( 0, mPhoneNumber.number() ); 531 setText( 0, mPhoneNumber.number() );
530 setText( 1, mPhoneNumber.typeLabel() ); 532 setText( 1, mPhoneNumber.typeLabel() );
531} 533}
532 534
533PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name ) 535PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name )
534 : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Numbers" ), 536 : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Numbers" ),
535 KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, 537 KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok,
536 parent, name, true) 538 parent, name, true)
537{ 539{
538 mPhoneNumberList = list; 540 mPhoneNumberList = list;
539 541
540 QWidget *page = plainPage(); 542 QWidget *page = plainPage();
541 543
542 QGridLayout *layout = new QGridLayout( page, 1, 2 ); 544 QGridLayout *layout = new QGridLayout( page, 1, 2 );
543 layout->setSpacing( spacingHint() ); 545 layout->setSpacing( spacingHint() );
544 546
545 mListView = new KListView( page ); 547 mListView = new KListView( page );
546 mListView->setAllColumnsShowFocus( true ); 548 mListView->setAllColumnsShowFocus( true );
547 mListView->addColumn( i18n( "Number" ) ); 549 mListView->addColumn( i18n( "Number" ) );
548 mListView->addColumn( i18n( "Type" ) ); 550 mListView->addColumn( i18n( "Type" ) );
549 551
550 KButtonBox *buttonBox = new KButtonBox( page, Vertical ); 552 KButtonBox *buttonBox = new KButtonBox( page, Vertical );
551 553
552 buttonBox->addButton( i18n( "&Add..." ), this, SLOT( slotAddPhoneNumber() ) ); 554 buttonBox->addButton( i18n( "&Add..." ), this, SLOT( slotAddPhoneNumber() ) );
553 mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( slotEditPhoneNumber() ) ); 555 mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( slotEditPhoneNumber() ) );
554 mEditButton->setEnabled( false ); 556 mEditButton->setEnabled( false );
555 mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( slotRemovePhoneNumber() ) ); 557 mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( slotRemovePhoneNumber() ) );
556 mRemoveButton->setEnabled( false ); 558 mRemoveButton->setEnabled( false );
557 buttonBox->layout(); 559 buttonBox->layout();
558 560
559 layout->addWidget( mListView, 0, 0 ); 561 layout->addWidget( mListView, 0, 0 );
560 layout->addWidget( buttonBox, 0, 1 ); 562 layout->addWidget( buttonBox, 0, 1 );
561 563
562 connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) ); 564 connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) );
563 connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber())); 565 connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber()));
564 566
565 KABC::PhoneNumber::List::Iterator it; 567 KABC::PhoneNumber::List::Iterator it;
566 for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it ) 568 for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it )
567 new PhoneViewItem( mListView, *it ); 569 new PhoneViewItem( mListView, *it );
568 if (QApplication::desktop()->width() < 480 ) 570 if (QApplication::desktop()->width() < 480 )
569 showMaximized(); 571 showMaximized();
570 else 572 else
571 resize( 400, 400 ); 573 resize( 400, 400 );
572 mChanged = false; 574 mChanged = false;
573} 575}
574 576
575PhoneEditDialog::~PhoneEditDialog() 577PhoneEditDialog::~PhoneEditDialog()
576{ 578{
577 qDebug("PhoneEditDialog::~PhoneEditDialog() "); 579 qDebug("PhoneEditDialog::~PhoneEditDialog() ");
578} 580}
579 581
580void PhoneEditDialog::slotAddPhoneNumber() 582void PhoneEditDialog::slotAddPhoneNumber()
581{ 583{
582 KABC::PhoneNumber tmp( "", 0 ); 584 KABC::PhoneNumber tmp( "", 0 );
583 PhoneTypeDialog dlg( tmp, this ); 585 PhoneTypeDialog dlg( tmp, this );
584 586
585 if ( dlg.exec() ) { 587 if ( dlg.exec() ) {
586 QListViewItem* i = mListView->firstChild(); 588 QListViewItem* i = mListView->firstChild();
587 KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); 589 KABC::PhoneNumber phoneNumber = dlg.phoneNumber();
588 bool insert = true; 590 bool insert = true;
589 while ( i ) { 591 while ( i ) {
590 PhoneViewItem* p = ( PhoneViewItem* ) i; 592 PhoneViewItem* p = ( PhoneViewItem* ) i;
diff --git a/kaddressbook/phoneeditwidget.h b/kaddressbook/phoneeditwidget.h
index 0477b6c..fbf9fe7 100644
--- a/kaddressbook/phoneeditwidget.h
+++ b/kaddressbook/phoneeditwidget.h
@@ -1,295 +1,183 @@
1#ifndef PHONEEDITWIDGET_H 1#ifndef PHONEEDITWIDGET_H
2#define PHONEEDITWIDGET_H 2#define PHONEEDITWIDGET_H
3/* 3/*
4 This file is part of KAddressBook. 4 This file is part of KAddressBook.
5 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 5 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 20
21 As a special exception, permission is given to link this program 21 As a special exception, permission is given to link this program
22 with any edition of Qt, and distribute the resulting executable, 22 with any edition of Qt, and distribute the resulting executable,
23 without including the source code for Qt in the source distribution. 23 without including the source code for Qt in the source distribution.
24*/ 24*/
25 25
26#include <kdialogbase.h> 26#include <kdialogbase.h>
27#include <kiconloader.h> 27#include <kiconloader.h>
28#include <qpushbutton.h> 28#include <qpushbutton.h>
29#include <qlayout.h> 29#include <qlayout.h>
30#include <qpopupmenu.h> 30#include <qpopupmenu.h>
31 31
32#include <qptrlist.h> 32#include <qptrlist.h>
33#include <qscrollview.h> 33#include <qscrollview.h>
34 34
35#include "addresseeconfig.h" 35#include "addresseeconfig.h"
36#include "typecombo.h" 36#include "typecombo.h"
37 37
38class QButtonGroup; 38class QButtonGroup;
39class QCheckBox; 39class QCheckBox;
40class PhoneTypeNumberEdit; 40class PhoneTypeNumberEdit;
41 41
42#include <klineedit.h> 42#include <klineedit.h>
43#include <kcombobox.h> 43#include <kcombobox.h>
44#include <kabc/phonenumber.h> 44#include <kabc/phonenumber.h>
45 45
46typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo; 46typedef TypeCombo<KABC::PhoneNumber> PhoneTypeCombo;
47 47
48/** 48/**
49 Widget for editing phone numbers. 49 Widget for editing phone numbers.
50*/ 50*/
51class PhoneEditWidget : public QWidget 51class PhoneEditWidget : public QWidget
52{ 52{
53 Q_OBJECT 53 Q_OBJECT
54 54
55 public: 55 public:
56 PhoneEditWidget( QWidget *parent, const char *name = 0 ); 56 PhoneEditWidget( QWidget *parent, const char *name = 0 );
57 ~PhoneEditWidget(); 57 ~PhoneEditWidget();
58 58
59 void setPhoneNumbers( const KABC::PhoneNumber::List &list ); 59 void setPhoneNumbers( const KABC::PhoneNumber::List &list );
60 KABC::PhoneNumber::List phoneNumbers(); 60 KABC::PhoneNumber::List phoneNumbers();
61 61
62 // void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* ); 62 // void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
63 //KABC::PhoneNumber currentPhoneNumber( KComboBox*, int ); 63 //KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
64 64
65 signals: 65 signals:
66 void modified(); 66 void modified();
67 void typeChange( int oldType, int newType ); 67 void typeChange( int oldType, int newType );
68 68
69 private slots: 69 private slots:
70 void bottomVisible(); 70 void bottomVisible();
71 void addNumberInt( int ); 71 void addNumberInt( int );
72 void deleteEdit( PhoneTypeNumberEdit* ew ); 72 void deleteEdit( PhoneTypeNumberEdit* ew );
73 void addNumber(); 73 void addNumber();
74 void pendingDelete(); 74 void pendingDelete();
75 protected: 75 protected:
76 76
77 private: 77 private:
78 QScrollView* sv; 78 QScrollView* sv;
79 QPopupMenu *mPopup; 79 QPopupMenu *mPopup;
80 int mPopupCount; 80 int mPopupCount;
81 PhoneTypeNumberEdit* mPendingDelete; 81 PhoneTypeNumberEdit* mPendingDelete;
82 void setDefaults(); 82 void setDefaults();
83 PhoneTypeNumberEdit* appendEditCombo(); 83 PhoneTypeNumberEdit* appendEditCombo();
84 QWidget* mw; 84 QWidget* mw;
85 QVBoxLayout* mainLayout; 85 QVBoxLayout* mainLayout;
86 QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList; 86 QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList;
87 87
88 KABC::PhoneNumber::List mPhoneList;
89}; 88};
90 89
91 90
92
93
94
95#if 0
96class PhoneEditWidget : public QWidget
97{
98 Q___OBJECT
99
100 public:
101 PhoneEditWidget( QWidget *parent, const char *name = 0 );
102 ~PhoneEditWidget();
103
104 void setPhoneNumbers( const KABC::PhoneNumber::List &list );
105 KABC::PhoneNumber::List phoneNumbers();
106
107 void updateTypeCombo( const KABC::PhoneNumber::List&, KComboBox* );
108 KABC::PhoneNumber currentPhoneNumber( KComboBox*, int );
109
110 sig_nals:
111 void modified();
112 void typeChange( int oldType, int newType );
113
114 private sl_ots:
115 void edit();
116
117 void updatePrefEdit();
118 void updateSecondEdit();
119 void updateThirdEdit();
120 void updateFourthEdit();
121
122 void slotPrefEditChanged();
123 void slotSecondEditChanged();
124 void slotThirdEditChanged();
125 void slotFourthEditChanged();
126
127 protected:
128 void updateLineEdits();
129 void updateCombos();
130
131 private:
132 QPtrList <PhoneTypeNumberEdit> mTypeNumberEditList;
133 void updateEdit( PhoneTypeCombo *combo );
134 void updatePhoneNumber( PhoneTypeCombo *combo );
135 void updateOtherEdit( PhoneTypeCombo *combo, PhoneTypeCombo *otherCombo );
136
137 PhoneTypeCombo *mPrefCombo;
138 PhoneTypeCombo *mSecondCombo;
139 PhoneTypeCombo *mThirdCombo;
140 PhoneTypeCombo *mFourthCombo;
141
142 KLineEdit *mPrefEdit;
143 KLineEdit *mSecondEdit;
144 KLineEdit *mThirdEdit;
145 KLineEdit *mFourthEdit;
146
147 KABC::PhoneNumber::List mPhoneList;
148};
149
150/**
151 Dialog for editing lists of phonenumbers.
152*/
153class PhoneEditDialog : public KDialogBase
154{
155 Q___OBJECT
156
157 public:
158 PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name = 0 );
159 ~PhoneEditDialog();
160
161 const KABC::PhoneNumber::List &phoneNumbers();
162 bool changed() const;
163
164 protected s__lots:
165 void slotAddPhoneNumber();
166 void slotRemovePhoneNumber();
167 void slotEditPhoneNumber();
168 void slotSelectionChanged();
169
170 private:
171 KABC::PhoneNumber::List mPhoneNumberList;
172 KABC::PhoneNumber::TypeList mTypeList;
173 KComboBox *mTypeBox;
174 KListView *mListView;
175
176 QPushButton *mRemoveButton;
177 QPushButton *mEditButton;
178
179 bool mChanged;
180};
181
182/**
183 Dialog for editing phone number types.
184*/
185class PhoneTypeDialog : public KDialogBase
186{
187 Q___OBJECT
188public:
189 PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, QWidget *parent, const char *name = 0 );
190
191 KABC::PhoneNumber phoneNumber();
192
193private:
194 KABC::PhoneNumber mPhoneNumber;
195 KABC::PhoneNumber::TypeList mTypeList;
196
197 QButtonGroup *mGroup;
198 QCheckBox *mPreferredBox;
199 KLineEdit *mNumber;
200};
201#endif
202
203class PhoneTypeNumberEdit : public QWidget 91class PhoneTypeNumberEdit : public QWidget
204{ 92{
205 Q_OBJECT 93 Q_OBJECT
206public: 94public:
207 PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) :QWidget( parent ) 95 PhoneTypeNumberEdit( QWidget *parent, const char *name = 0 ) :QWidget( parent )
208 { 96 {
209 QHBoxLayout * lay = new QHBoxLayout( this ); 97 QHBoxLayout * lay = new QHBoxLayout( this );
210 lay->setSpacing( 2 ); 98 lay->setSpacing( 2 );
211 lay->setMargin( 0 ); 99 lay->setMargin( 0 );
212 mMinusButton = new QPushButton ( this ); 100 mMinusButton = new QPushButton ( this );
213 mMinusButton->setPixmap ( SmallIcon("minus")); 101 mMinusButton->setPixmap ( SmallIcon("minus"));
214 mCombo = new KComboBox( this ); 102 mCombo = new KComboBox( this );
215 mNumber = new KLineEdit( this ); 103 mNumber = new KLineEdit( this );
216 mMinusButton->setMaximumHeight( mNumber->sizeHint().height() + 6); 104 mMinusButton->setMaximumHeight( mNumber->sizeHint().height() + 6);
217 lay->addWidget( mMinusButton ); 105 lay->addWidget( mMinusButton );
218 lay->addWidget( mCombo ); 106 lay->addWidget( mCombo );
219 lay->addWidget( mNumber ); 107 lay->addWidget( mNumber );
220 connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) ); 108 connect( mMinusButton , SIGNAL ( clicked() ), this, SLOT ( deleteNumber() ) );
221 connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) ); 109 connect( mCombo , SIGNAL ( activated ( int ) ), this, SLOT ( comboTypeChange( int ) ) );
222 connect( mNumber , SIGNAL ( textChanged ( const QString & ) ), 110 connect( mNumber , SIGNAL ( textChanged ( const QString & ) ),
223 this, SLOT ( textChanged ( const QString & ) ) ); 111 this, SLOT ( textChanged ( const QString & ) ) );
224 mCombo->insertStringList( PhoneNumber::supportedTypeListNames() ); 112 mCombo->insertStringList( PhoneNumber::supportedTypeListNames() );
225 } 113 }
226 ~PhoneTypeNumberEdit() { 114 ~PhoneTypeNumberEdit() {
227 // qDebug("~PhoneTypeNumberEdit() "); 115 // qDebug("~PhoneTypeNumberEdit() ");
228 } 116 }
229 void setPhoneNumber( const KABC::PhoneNumber &phoneNumber ) 117 void setPhoneNumber( const KABC::PhoneNumber &phoneNumber )
230 { 118 {
231 mPhoneNumber = phoneNumber; 119 mPhoneNumber = phoneNumber;
232 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); 120 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
233 mCombo->setCurrentItem( index ); 121 mCombo->setCurrentItem( index );
234 mNumber->setText( mPhoneNumber.number() ); 122 mNumber->setText( mPhoneNumber.number() );
235 show(); 123 show();
236 mNumber->setFocus(); 124 mNumber->setFocus();
237 } 125 }
238 KABC::PhoneNumber phoneNumber() 126 KABC::PhoneNumber phoneNumber()
239 { 127 {
240 mPhoneNumber.setNumber( mNumber->text() ); 128 mPhoneNumber.setNumber( mNumber->text() );
241 int index = mCombo->currentItem(); 129 int index = mCombo->currentItem();
242 mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] ); 130 mPhoneNumber.setType( PhoneNumber::supportedTypeList()[index] );
243 return mPhoneNumber; 131 return mPhoneNumber;
244 } 132 }
245 bool isValid() 133 bool isValid()
246 { 134 {
247 if ( mNumber->text().isEmpty() )return false; 135 if ( mNumber->text().isEmpty() )return false;
248 return true; 136 return true;
249 } 137 }
250 int currentType() 138 int currentType()
251 { 139 {
252 return mCombo->currentItem(); 140 return mCombo->currentItem();
253 } 141 }
254 private slots: 142 private slots:
255 void typeExternalChanged( int oldType, int newType ) 143 void typeExternalChanged( int oldType, int newType )
256 { 144 {
257 if ( mPhoneNumber.type() == newType ) { 145 if ( mPhoneNumber.type() == newType ) {
258 mPhoneNumber.setType(oldType); 146 mPhoneNumber.setType(oldType);
259 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() ); 147 int index = PhoneNumber::typeListIndex4Type( mPhoneNumber.type() );
260 mCombo->setCurrentItem( index ); 148 mCombo->setCurrentItem( index );
261 } 149 }
262 } 150 }
263 void deleteNumber() 151 void deleteNumber()
264 { 152 {
265 emit deleteMe( this ); 153 emit deleteMe( this );
266 } 154 }
267 void comboTypeChange( int index ) 155 void comboTypeChange( int index )
268 { 156 {
269 int old = mPhoneNumber.type(); 157 int old = mPhoneNumber.type();
270 int newT = PhoneNumber::supportedTypeList()[index]; 158 int newT = PhoneNumber::supportedTypeList()[index];
271 if ( old != newT ) { 159 if ( old != newT ) {
272 emit modified(); 160 emit modified();
273 if ( newT != PhoneNumber::Voice ) 161 if ( newT != PhoneNumber::Voice )
274 emit typeChange ( old, newT ); 162 emit typeChange ( old, newT );
275 mPhoneNumber.setType(newT ); 163 mPhoneNumber.setType(newT );
276 } 164 }
277 165
278 } 166 }
279 void textChanged ( const QString & ) 167 void textChanged ( const QString & )
280 { 168 {
281 emit modified(); 169 emit modified();
282 } 170 }
283 signals: 171 signals:
284void typeChange( int oldType, int newType ); 172void typeChange( int oldType, int newType );
285 void modified(); 173 void modified();
286 void deleteMe( PhoneTypeNumberEdit* ); 174 void deleteMe( PhoneTypeNumberEdit* );
287 175
288private: 176private:
289 KABC::PhoneNumber mPhoneNumber; 177 KABC::PhoneNumber mPhoneNumber;
290 QPushButton* mMinusButton; 178 QPushButton* mMinusButton;
291 KComboBox *mCombo; 179 KComboBox *mCombo;
292 KLineEdit *mNumber; 180 KLineEdit *mNumber;
293}; 181};
294 182
295#endif 183#endif