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