author | zautrix <zautrix> | 2005-10-28 11:31:59 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-10-28 11:31:59 (UTC) |
commit | b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2 (patch) (unidiff) | |
tree | a7ac6002208ddedcd9dc13cd0e91294519883007 /kaddressbook/phoneeditwidget.cpp | |
parent | 5ceebb8563f134c789e9082d1bc49723beb28c8c (diff) | |
download | kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.zip kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.tar.gz kdepimpi-b27cb619bb9005ad4345d38bbee3b1c3d0eda1b2.tar.bz2 |
commit
Diffstat (limited to 'kaddressbook/phoneeditwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kaddressbook/phoneeditwidget.cpp | 112 |
1 files changed, 111 insertions, 1 deletions
diff --git a/kaddressbook/phoneeditwidget.cpp b/kaddressbook/phoneeditwidget.cpp index 2bce39a..b20275d 100644 --- a/kaddressbook/phoneeditwidget.cpp +++ b/kaddressbook/phoneeditwidget.cpp | |||
@@ -1,244 +1,354 @@ | |||
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 | 34 | ||
34 | #include <kbuttonbox.h> | 35 | #include <kbuttonbox.h> |
35 | #include <klistview.h> | 36 | #include <klistview.h> |
36 | #include <kapplication.h> | 37 | #include <kapplication.h> |
37 | #include <qapplication.h> | 38 | #include <qapplication.h> |
38 | #include <kconfig.h> | 39 | #include <kconfig.h> |
39 | #include <klineedit.h> | 40 | #include <klineedit.h> |
40 | #include <kcombobox.h> | 41 | #include <kcombobox.h> |
41 | #include <klocale.h> | 42 | #include <klocale.h> |
42 | #include <kdebug.h> | 43 | #include <kdebug.h> |
43 | #include <kglobal.h> | 44 | #include <kglobal.h> |
44 | #include <kiconloader.h> | 45 | #include <kiconloader.h> |
45 | 46 | ||
46 | #include <kabc/phonenumber.h> | 47 | #include <kabc/phonenumber.h> |
47 | 48 | ||
48 | #include "typecombo.h" | 49 | #include "typecombo.h" |
49 | 50 | ||
50 | #include "phoneeditwidget.h" | 51 | #include "phoneeditwidget.h" |
51 | 52 | ||
52 | PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) | 53 | PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) |
54 | : QScrollView(parent,name) | ||
55 | { | ||
56 | setFrameStyle ( QFrame::Panel | QFrame::Plain ); | ||
57 | setLineWidth ( 1 ); | ||
58 | setMidLineWidth ( 1 ); | ||
59 | mw = new QWidget ( viewport() ); | ||
60 | addChild(mw); | ||
61 | setResizePolicy( AutoOneFit ); | ||
62 | mainLayout = new QVBoxLayout ( mw ); | ||
63 | mainLayout->setMargin( 2 ); | ||
64 | mainLayout->setSpacing( 2 ); | ||
65 | QWidget* hb = new QWidget ( mw ); | ||
66 | mainLayout->add( hb ); | ||
67 | QHBoxLayout* hbLayout = new QHBoxLayout ( hb ); | ||
68 | QPushButton *addBut = new QPushButton ( "add", hb ); | ||
69 | hbLayout->add( addBut ); | ||
70 | addBut->setPixmap ( SmallIcon("plus")); | ||
71 | addBut->setMaximumSize( addBut->sizeHint().height(),addBut->sizeHint().height() ); | ||
72 | connect(addBut,SIGNAL(clicked()),SLOT(addNumber())); | ||
73 | //QLabel * temp = new QLabel( i18n("Phone Type"), hb ); | ||
74 | QLabel *temp = new QLabel( i18n("Phone Number"),hb ); | ||
75 | temp->setAlignment( Qt::AlignCenter ); | ||
76 | temp->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); | ||
77 | hbLayout->add( temp ); | ||
78 | appendEditCombo(); | ||
79 | appendEditCombo(); | ||
80 | appendEditCombo(); | ||
81 | setDefaults(); | ||
82 | } | ||
83 | |||
84 | PhoneEditWidget::~PhoneEditWidget() | ||
85 | { | ||
86 | } | ||
87 | void PhoneEditWidget::setDefaults() | ||
88 | { | ||
89 | PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); | ||
90 | KABC::PhoneNumber phoneNumber; | ||
91 | phoneNumber.setType( KABC::PhoneNumber::Home | KABC::PhoneNumber::Pref ); | ||
92 | edit->setPhoneNumber( phoneNumber ); | ||
93 | edit = mTypeNumberEditList.next(); | ||
94 | phoneNumber.setType( KABC::PhoneNumber::Work | KABC::PhoneNumber::Pref ); | ||
95 | edit->setPhoneNumber( phoneNumber ); | ||
96 | edit = mTypeNumberEditList.next(); | ||
97 | phoneNumber.setType( KABC::PhoneNumber::Cell ); | ||
98 | edit->setPhoneNumber( phoneNumber ); | ||
99 | edit = mTypeNumberEditList.next(); | ||
100 | while ( edit ) { | ||
101 | edit->hide(); | ||
102 | edit = mTypeNumberEditList.next(); | ||
103 | } | ||
104 | } | ||
105 | void PhoneEditWidget::addNumber() | ||
106 | { | ||
107 | |||
108 | } | ||
109 | PhoneTypeNumberEdit* PhoneEditWidget::appendEditCombo() | ||
110 | { | ||
111 | PhoneTypeNumberEdit* edit = new PhoneTypeNumberEdit( mw ); | ||
112 | connect ( edit, SIGNAL ( typeChange( int , int) ), this, SIGNAL ( typeChange( int , int)) ); | ||
113 | connect ( edit, SIGNAL ( modified() ), this, SIGNAL ( modified() ) ); | ||
114 | connect ( this, SIGNAL ( typeChange( int , int)), edit, SLOT ( typeExternalChanged( int, int)) ); | ||
115 | |||
116 | mainLayout->add( edit ); | ||
117 | mTypeNumberEditList.append( edit ); | ||
118 | return edit; | ||
119 | } | ||
120 | |||
121 | void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &li ) | ||
122 | { | ||
123 | if ( li.isEmpty() ) { | ||
124 | setDefaults(); | ||
125 | return; | ||
126 | } | ||
127 | KABC::PhoneNumber::List::Iterator it; | ||
128 | KABC::PhoneNumber::List list = li; | ||
129 | PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); | ||
130 | for ( it = list.begin(); it != list.end(); ++it ) { | ||
131 | if ( edit ) { | ||
132 | edit->setPhoneNumber( (*it ) ); | ||
133 | edit = mTypeNumberEditList.next(); | ||
134 | } else { | ||
135 | PhoneTypeNumberEdit* editNew = appendEditCombo(); | ||
136 | editNew->setPhoneNumber( (*it ) ); | ||
137 | } | ||
138 | } | ||
139 | while ( edit ) { | ||
140 | edit->hide(); | ||
141 | edit = mTypeNumberEditList.next(); | ||
142 | } | ||
143 | //mainLayout->invalidate (); | ||
144 | mw->update(); | ||
145 | } | ||
146 | KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() | ||
147 | { | ||
148 | KABC::PhoneNumber::List retList; | ||
149 | |||
150 | PhoneTypeNumberEdit* edit = mTypeNumberEditList.first(); | ||
151 | while ( edit ) { | ||
152 | if ( edit->isValid() ) { | ||
153 | retList.append( edit->phoneNumber()); | ||
154 | } | ||
155 | edit = mTypeNumberEditList.next(); | ||
156 | |||
157 | } | ||
158 | return retList; | ||
159 | } | ||
160 | |||
161 | #if 0 | ||
162 | PhoneEditWidget::PhoneEditWidget( QWidget *parent, const char *name ) | ||
53 | : QWidget( parent, name ) | 163 | : QWidget( parent, name ) |
54 | { | 164 | { |
55 | QGridLayout *layout = new QGridLayout( this, 4, 1 ); | 165 | QGridLayout *layout = new QGridLayout( this, 4, 1 ); |
56 | //US layout->setSpacing( KDialog::spacingHint() ); | 166 | //US layout->setSpacing( KDialog::spacingHint() ); |
57 | layout->setSpacing( KDialogBase::spacingHintSmall() ); | 167 | layout->setSpacing( KDialogBase::spacingHintSmall() ); |
58 | 168 | ||
59 | 169 | ||
60 | 170 | ||
61 | QLabel* label = new QLabel( this ); | 171 | QLabel* label = new QLabel( this ); |
62 | //US loadIcon call is ambiguous. Add one more parameter | 172 | //US loadIcon call is ambiguous. Add one more parameter |
63 | //US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); | 173 | //US label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop ) ); |
64 | label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); | 174 | label->setPixmap( KGlobal::iconLoader()->loadIcon( "kaddressbook", KIcon::Desktop, 0 ) ); |
65 | label->setAlignment( AlignCenter ); | 175 | label->setAlignment( AlignCenter ); |
66 | //US layout->addMultiCellWidget( label, 0, 1, 3, 3 ); | 176 | //US layout->addMultiCellWidget( label, 0, 1, 3, 3 ); |
67 | layout->addWidget( label, 0, 0 ); | 177 | layout->addWidget( label, 0, 0 ); |
68 | 178 | ||
69 | QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ), | 179 | QPushButton *editButton = new QPushButton( i18n( "Edit Phone Numbers..." ), |
70 | this ); | 180 | this ); |
71 | if ( QApplication::desktop()->width() < 640 ) | 181 | if ( QApplication::desktop()->width() < 640 ) |
72 | layout->addWidget( editButton, 0, 1 ); | 182 | layout->addWidget( editButton, 0, 1 ); |
73 | else | 183 | else |
74 | layout->addMultiCellWidget( editButton, 0, 0, 1, 3); | 184 | layout->addMultiCellWidget( editButton, 0, 0, 1, 3); |
75 | 185 | ||
76 | mPrefCombo = new PhoneTypeCombo( mPhoneList, this ); | 186 | mPrefCombo = new PhoneTypeCombo( mPhoneList, this ); |
77 | mPrefEdit = new KLineEdit( this ); | 187 | mPrefEdit = new KLineEdit( this ); |
78 | //mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) ); | 188 | //mPrefEdit->setMinimumWidth( int(mPrefEdit->sizeHint().width() * 1.5) ); |
79 | mPrefCombo->setLineEdit( mPrefEdit ); | 189 | mPrefCombo->setLineEdit( mPrefEdit ); |
80 | layout->addWidget( mPrefCombo, 1, 0 ); | 190 | layout->addWidget( mPrefCombo, 1, 0 ); |
81 | layout->addWidget( mPrefEdit, 1, 1 ); | 191 | layout->addWidget( mPrefEdit, 1, 1 ); |
82 | int x = 1, y = 2; | 192 | int x = 1, y = 2; |
83 | if ( QApplication::desktop()->width() < 640 ) { | 193 | if ( QApplication::desktop()->width() < 640 ) { |
84 | ++x; | 194 | ++x; |
85 | y = 0; | 195 | y = 0; |
86 | } | 196 | } |
87 | mSecondCombo = new PhoneTypeCombo( mPhoneList, this ); | 197 | mSecondCombo = new PhoneTypeCombo( mPhoneList, this ); |
88 | mSecondEdit = new KLineEdit( this ); | 198 | mSecondEdit = new KLineEdit( this ); |
89 | mSecondCombo->setLineEdit( mSecondEdit ); | 199 | mSecondCombo->setLineEdit( mSecondEdit ); |
90 | layout->addWidget( mSecondCombo, x, y++ ); | 200 | layout->addWidget( mSecondCombo, x, y++ ); |
91 | layout->addWidget( mSecondEdit, x, y++ ); | 201 | layout->addWidget( mSecondEdit, x, y++ ); |
92 | 202 | ||
93 | y = 0; | 203 | y = 0; |
94 | ++x; | 204 | ++x; |
95 | mThirdCombo = new PhoneTypeCombo( mPhoneList, this ); | 205 | mThirdCombo = new PhoneTypeCombo( mPhoneList, this ); |
96 | mThirdEdit = new KLineEdit( this ); | 206 | mThirdEdit = new KLineEdit( this ); |
97 | mThirdCombo->setLineEdit( mThirdEdit ); | 207 | mThirdCombo->setLineEdit( mThirdEdit ); |
98 | layout->addWidget( mThirdCombo, x, y++ ); | 208 | layout->addWidget( mThirdCombo, x, y++ ); |
99 | layout->addWidget( mThirdEdit, x, y++ ); | 209 | layout->addWidget( mThirdEdit, x, y++ ); |
100 | if ( QApplication::desktop()->width() < 640 ) { | 210 | if ( QApplication::desktop()->width() < 640 ) { |
101 | ++x; | 211 | ++x; |
102 | y = 0; | 212 | y = 0; |
103 | } | 213 | } |
104 | mFourthCombo = new PhoneTypeCombo( mPhoneList, this ); | 214 | mFourthCombo = new PhoneTypeCombo( mPhoneList, this ); |
105 | mFourthEdit = new KLineEdit( this ); | 215 | mFourthEdit = new KLineEdit( this ); |
106 | mFourthCombo->setLineEdit( mFourthEdit ); | 216 | mFourthCombo->setLineEdit( mFourthEdit ); |
107 | layout->addWidget( mFourthCombo, x, y++ ); | 217 | layout->addWidget( mFourthCombo, x, y++ ); |
108 | layout->addWidget( mFourthEdit, x, y++ ); | 218 | layout->addWidget( mFourthEdit, x, y++ ); |
109 | 219 | ||
110 | // Four numbers don't fit in the current dialog | 220 | // Four numbers don't fit in the current dialog |
111 | if ( QApplication::desktop()->width() < 640 ) { | 221 | if ( QApplication::desktop()->width() < 640 ) { |
112 | mFourthCombo->hide(); | 222 | mFourthCombo->hide(); |
113 | mFourthEdit->hide(); | 223 | mFourthEdit->hide(); |
114 | } else { | 224 | } else { |
115 | QFontMetrics fm ( font () ) ; | 225 | QFontMetrics fm ( font () ) ; |
116 | int wid = fm.width( "Messenger" ) +60; | 226 | int wid = fm.width( "Messenger" ) +60; |
117 | mPrefCombo->setMaximumWidth( wid ); | 227 | mPrefCombo->setMaximumWidth( wid ); |
118 | mSecondCombo->setMaximumWidth( wid ); | 228 | mSecondCombo->setMaximumWidth( wid ); |
119 | mThirdCombo->setMaximumWidth( wid ); | 229 | mThirdCombo->setMaximumWidth( wid ); |
120 | mFourthCombo->setMaximumWidth( wid ); | 230 | mFourthCombo->setMaximumWidth( wid ); |
121 | } | 231 | } |
122 | 232 | ||
123 | 233 | ||
124 | connect( mPrefEdit, SIGNAL( textChanged( const QString& ) ), | 234 | connect( mPrefEdit, SIGNAL( textChanged( const QString& ) ), |
125 | SLOT( slotPrefEditChanged() ) ); | 235 | SLOT( slotPrefEditChanged() ) ); |
126 | connect( mSecondEdit, SIGNAL( textChanged( const QString& ) ), | 236 | connect( mSecondEdit, SIGNAL( textChanged( const QString& ) ), |
127 | SLOT( slotSecondEditChanged() ) ); | 237 | SLOT( slotSecondEditChanged() ) ); |
128 | connect( mThirdEdit, SIGNAL( textChanged( const QString& ) ), | 238 | connect( mThirdEdit, SIGNAL( textChanged( const QString& ) ), |
129 | SLOT( slotThirdEditChanged() ) ); | 239 | SLOT( slotThirdEditChanged() ) ); |
130 | connect( mFourthEdit, SIGNAL( textChanged( const QString& ) ), | 240 | connect( mFourthEdit, SIGNAL( textChanged( const QString& ) ), |
131 | SLOT( slotFourthEditChanged() ) ); | 241 | SLOT( slotFourthEditChanged() ) ); |
132 | 242 | ||
133 | connect( editButton, SIGNAL( clicked() ), SLOT( edit() ) ); | 243 | connect( editButton, SIGNAL( clicked() ), SLOT( edit() ) ); |
134 | 244 | ||
135 | connect( mPrefCombo, SIGNAL( activated( int ) ), | 245 | connect( mPrefCombo, SIGNAL( activated( int ) ), |
136 | SLOT( updatePrefEdit() ) ); | 246 | SLOT( updatePrefEdit() ) ); |
137 | connect( mSecondCombo, SIGNAL( activated( int ) ), | 247 | connect( mSecondCombo, SIGNAL( activated( int ) ), |
138 | SLOT( updateSecondEdit() ) ); | 248 | SLOT( updateSecondEdit() ) ); |
139 | connect( mThirdCombo, SIGNAL( activated( int ) ), | 249 | connect( mThirdCombo, SIGNAL( activated( int ) ), |
140 | SLOT( updateThirdEdit() ) ); | 250 | SLOT( updateThirdEdit() ) ); |
141 | connect( mFourthCombo, SIGNAL( activated( int ) ), | 251 | connect( mFourthCombo, SIGNAL( activated( int ) ), |
142 | SLOT( updateFourthEdit() ) ); | 252 | SLOT( updateFourthEdit() ) ); |
143 | } | 253 | } |
144 | 254 | ||
145 | PhoneEditWidget::~PhoneEditWidget() | 255 | PhoneEditWidget::~PhoneEditWidget() |
146 | { | 256 | { |
147 | } | 257 | } |
148 | 258 | ||
149 | void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &list ) | 259 | void PhoneEditWidget::setPhoneNumbers( const KABC::PhoneNumber::List &list ) |
150 | { | 260 | { |
151 | mPhoneList.clear(); | 261 | mPhoneList.clear(); |
152 | 262 | ||
153 | // Insert types for existing numbers. | 263 | // Insert types for existing numbers. |
154 | mPrefCombo->insertTypeList( list ); | 264 | mPrefCombo->insertTypeList( list ); |
155 | 265 | ||
156 | QValueList<int> defaultTypes; | 266 | QValueList<int> defaultTypes; |
157 | defaultTypes << KABC::PhoneNumber::Home; | 267 | defaultTypes << KABC::PhoneNumber::Home; |
158 | defaultTypes << KABC::PhoneNumber::Work; | 268 | defaultTypes << KABC::PhoneNumber::Work; |
159 | defaultTypes << KABC::PhoneNumber::Cell; | 269 | defaultTypes << KABC::PhoneNumber::Cell; |
160 | defaultTypes << ( KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ); | 270 | defaultTypes << ( KABC::PhoneNumber::Work | KABC::PhoneNumber::Fax ); |
161 | defaultTypes << ( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ); | 271 | defaultTypes << ( KABC::PhoneNumber::Home | KABC::PhoneNumber::Fax ); |
162 | 272 | ||
163 | // Insert default types. | 273 | // Insert default types. |
164 | // Doing this for mPrefCombo is enough because the list is shared by all | 274 | // Doing this for mPrefCombo is enough because the list is shared by all |
165 | // combos. | 275 | // combos. |
166 | QValueList<int>::ConstIterator it; | 276 | QValueList<int>::ConstIterator it; |
167 | for( it = defaultTypes.begin(); it != defaultTypes.end(); ++it ) { | 277 | for( it = defaultTypes.begin(); it != defaultTypes.end(); ++it ) { |
168 | if ( !mPrefCombo->hasType( *it ) ) | 278 | if ( !mPrefCombo->hasType( *it ) ) |
169 | mPrefCombo->insertType( list, *it, PhoneNumber( "", *it ) ); | 279 | mPrefCombo->insertType( list, *it, PhoneNumber( "", *it ) ); |
170 | } | 280 | } |
171 | 281 | ||
172 | updateCombos(); | 282 | updateCombos(); |
173 | 283 | ||
174 | mPrefCombo->selectType( defaultTypes[ 0 ] ); | 284 | mPrefCombo->selectType( defaultTypes[ 0 ] ); |
175 | mSecondCombo->selectType( defaultTypes[ 1 ] ); | 285 | mSecondCombo->selectType( defaultTypes[ 1 ] ); |
176 | mThirdCombo->selectType( defaultTypes[ 2 ] ); | 286 | mThirdCombo->selectType( defaultTypes[ 2 ] ); |
177 | mFourthCombo->selectType( defaultTypes[ 3 ] ); | 287 | mFourthCombo->selectType( defaultTypes[ 3 ] ); |
178 | 288 | ||
179 | updateLineEdits(); | 289 | updateLineEdits(); |
180 | } | 290 | } |
181 | 291 | ||
182 | void PhoneEditWidget::updateLineEdits() | 292 | void PhoneEditWidget::updateLineEdits() |
183 | { | 293 | { |
184 | updatePrefEdit(); | 294 | updatePrefEdit(); |
185 | updateSecondEdit(); | 295 | updateSecondEdit(); |
186 | updateThirdEdit(); | 296 | updateThirdEdit(); |
187 | updateFourthEdit(); | 297 | updateFourthEdit(); |
188 | } | 298 | } |
189 | 299 | ||
190 | void PhoneEditWidget::updateCombos() | 300 | void PhoneEditWidget::updateCombos() |
191 | { | 301 | { |
192 | mPrefCombo->updateTypes(); | 302 | mPrefCombo->updateTypes(); |
193 | mSecondCombo->updateTypes(); | 303 | mSecondCombo->updateTypes(); |
194 | mThirdCombo->updateTypes(); | 304 | mThirdCombo->updateTypes(); |
195 | mFourthCombo->updateTypes(); | 305 | mFourthCombo->updateTypes(); |
196 | } | 306 | } |
197 | 307 | ||
198 | KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() | 308 | KABC::PhoneNumber::List PhoneEditWidget::phoneNumbers() |
199 | { | 309 | { |
200 | KABC::PhoneNumber::List retList; | 310 | KABC::PhoneNumber::List retList; |
201 | 311 | ||
202 | KABC::PhoneNumber::List::Iterator it; | 312 | KABC::PhoneNumber::List::Iterator it; |
203 | for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it ) | 313 | for ( it = mPhoneList.begin(); it != mPhoneList.end(); ++it ) |
204 | if ( !(*it).number().isEmpty() ) | 314 | if ( !(*it).number().isEmpty() ) |
205 | retList.append( *it ); | 315 | retList.append( *it ); |
206 | 316 | ||
207 | return retList; | 317 | return retList; |
208 | } | 318 | } |
209 | 319 | ||
210 | void PhoneEditWidget::edit() | 320 | void PhoneEditWidget::edit() |
211 | { | 321 | { |
212 | PhoneEditDialog dlg( mPhoneList, this ); | 322 | PhoneEditDialog dlg( mPhoneList, this ); |
213 | 323 | ||
214 | if ( dlg.exec() ) { | 324 | if ( dlg.exec() ) { |
215 | if ( dlg.changed() ) { | 325 | if ( dlg.changed() ) { |
216 | KABC::PhoneNumber::List list = dlg.phoneNumbers(); | 326 | KABC::PhoneNumber::List list = dlg.phoneNumbers(); |
217 | setPhoneNumbers( list ); | 327 | setPhoneNumbers( list ); |
218 | updateCombos(); | 328 | updateCombos(); |
219 | updateLineEdits(); | 329 | updateLineEdits(); |
220 | emit modified(); | 330 | emit modified(); |
221 | } | 331 | } |
222 | } | 332 | } |
223 | } | 333 | } |
224 | 334 | ||
225 | void PhoneEditWidget::updatePrefEdit() | 335 | void PhoneEditWidget::updatePrefEdit() |
226 | { | 336 | { |
227 | updateEdit( mPrefCombo ); | 337 | updateEdit( mPrefCombo ); |
228 | } | 338 | } |
229 | 339 | ||
230 | void PhoneEditWidget::updateSecondEdit() | 340 | void PhoneEditWidget::updateSecondEdit() |
231 | { | 341 | { |
232 | updateEdit( mSecondCombo ); | 342 | updateEdit( mSecondCombo ); |
233 | } | 343 | } |
234 | 344 | ||
235 | void PhoneEditWidget::updateThirdEdit() | 345 | void PhoneEditWidget::updateThirdEdit() |
236 | { | 346 | { |
237 | updateEdit( mThirdCombo ); | 347 | updateEdit( mThirdCombo ); |
238 | } | 348 | } |
239 | 349 | ||
240 | void PhoneEditWidget::updateFourthEdit() | 350 | void PhoneEditWidget::updateFourthEdit() |
241 | { | 351 | { |
242 | updateEdit( mFourthCombo ); | 352 | updateEdit( mFourthCombo ); |
243 | } | 353 | } |
244 | 354 | ||
@@ -361,196 +471,196 @@ void PhoneViewItem::makeText() | |||
361 | setText( 1, mPhoneNumber.typeLabel() ); | 471 | setText( 1, mPhoneNumber.typeLabel() ); |
362 | } | 472 | } |
363 | 473 | ||
364 | PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name ) | 474 | PhoneEditDialog::PhoneEditDialog( const KABC::PhoneNumber::List &list, QWidget *parent, const char *name ) |
365 | : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Numbers" ), | 475 | : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Numbers" ), |
366 | KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, | 476 | KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, |
367 | parent, name, true) | 477 | parent, name, true) |
368 | { | 478 | { |
369 | mPhoneNumberList = list; | 479 | mPhoneNumberList = list; |
370 | 480 | ||
371 | QWidget *page = plainPage(); | 481 | QWidget *page = plainPage(); |
372 | 482 | ||
373 | QGridLayout *layout = new QGridLayout( page, 1, 2 ); | 483 | QGridLayout *layout = new QGridLayout( page, 1, 2 ); |
374 | layout->setSpacing( spacingHint() ); | 484 | layout->setSpacing( spacingHint() ); |
375 | 485 | ||
376 | mListView = new KListView( page ); | 486 | mListView = new KListView( page ); |
377 | mListView->setAllColumnsShowFocus( true ); | 487 | mListView->setAllColumnsShowFocus( true ); |
378 | mListView->addColumn( i18n( "Number" ) ); | 488 | mListView->addColumn( i18n( "Number" ) ); |
379 | mListView->addColumn( i18n( "Type" ) ); | 489 | mListView->addColumn( i18n( "Type" ) ); |
380 | 490 | ||
381 | KButtonBox *buttonBox = new KButtonBox( page, Vertical ); | 491 | KButtonBox *buttonBox = new KButtonBox( page, Vertical ); |
382 | 492 | ||
383 | buttonBox->addButton( i18n( "&Add..." ), this, SLOT( slotAddPhoneNumber() ) ); | 493 | buttonBox->addButton( i18n( "&Add..." ), this, SLOT( slotAddPhoneNumber() ) ); |
384 | mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( slotEditPhoneNumber() ) ); | 494 | mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( slotEditPhoneNumber() ) ); |
385 | mEditButton->setEnabled( false ); | 495 | mEditButton->setEnabled( false ); |
386 | mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( slotRemovePhoneNumber() ) ); | 496 | mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( slotRemovePhoneNumber() ) ); |
387 | mRemoveButton->setEnabled( false ); | 497 | mRemoveButton->setEnabled( false ); |
388 | buttonBox->layout(); | 498 | buttonBox->layout(); |
389 | 499 | ||
390 | layout->addWidget( mListView, 0, 0 ); | 500 | layout->addWidget( mListView, 0, 0 ); |
391 | layout->addWidget( buttonBox, 0, 1 ); | 501 | layout->addWidget( buttonBox, 0, 1 ); |
392 | 502 | ||
393 | connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) ); | 503 | connect( mListView, SIGNAL(selectionChanged()), SLOT(slotSelectionChanged()) ); |
394 | connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber())); | 504 | connect( mListView, SIGNAL(doubleClicked( QListViewItem *, const QPoint &, int )), this, SLOT( slotEditPhoneNumber())); |
395 | 505 | ||
396 | KABC::PhoneNumber::List::Iterator it; | 506 | KABC::PhoneNumber::List::Iterator it; |
397 | for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it ) | 507 | for ( it = mPhoneNumberList.begin(); it != mPhoneNumberList.end(); ++it ) |
398 | new PhoneViewItem( mListView, *it ); | 508 | new PhoneViewItem( mListView, *it ); |
399 | if (QApplication::desktop()->width() < 480 ) | 509 | if (QApplication::desktop()->width() < 480 ) |
400 | showMaximized(); | 510 | showMaximized(); |
401 | else | 511 | else |
402 | resize( 400, 400 ); | 512 | resize( 400, 400 ); |
403 | mChanged = false; | 513 | mChanged = false; |
404 | } | 514 | } |
405 | 515 | ||
406 | PhoneEditDialog::~PhoneEditDialog() | 516 | PhoneEditDialog::~PhoneEditDialog() |
407 | { | 517 | { |
408 | } | 518 | } |
409 | 519 | ||
410 | void PhoneEditDialog::slotAddPhoneNumber() | 520 | void PhoneEditDialog::slotAddPhoneNumber() |
411 | { | 521 | { |
412 | KABC::PhoneNumber tmp( "", 0 ); | 522 | KABC::PhoneNumber tmp( "", 0 ); |
413 | PhoneTypeDialog dlg( tmp, this ); | 523 | PhoneTypeDialog dlg( tmp, this ); |
414 | 524 | ||
415 | if ( dlg.exec() ) { | 525 | if ( dlg.exec() ) { |
416 | QListViewItem* i = mListView->firstChild(); | 526 | QListViewItem* i = mListView->firstChild(); |
417 | KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); | 527 | KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); |
418 | bool insert = true; | 528 | bool insert = true; |
419 | while ( i ) { | 529 | while ( i ) { |
420 | PhoneViewItem* p = ( PhoneViewItem* ) i; | 530 | PhoneViewItem* p = ( PhoneViewItem* ) i; |
421 | KABC::PhoneNumber pn = p->phoneNumber(); | 531 | KABC::PhoneNumber pn = p->phoneNumber(); |
422 | if ( (pn.type() | KABC::PhoneNumber::Pref) == (phoneNumber.type() | KABC::PhoneNumber::Pref) ) { | 532 | if ( (pn.type() | KABC::PhoneNumber::Pref) == (phoneNumber.type() | KABC::PhoneNumber::Pref) ) { |
423 | if ( p->text(0).isEmpty()) { | 533 | if ( p->text(0).isEmpty()) { |
424 | p->setPhoneNumber( phoneNumber ); | 534 | p->setPhoneNumber( phoneNumber ); |
425 | mPhoneNumberList.remove( pn ); | 535 | mPhoneNumberList.remove( pn ); |
426 | mPhoneNumberList.append( phoneNumber ); | 536 | mPhoneNumberList.append( phoneNumber ); |
427 | insert = false; | 537 | insert = false; |
428 | break; | 538 | break; |
429 | } | 539 | } |
430 | } | 540 | } |
431 | i = i->nextSibling(); | 541 | i = i->nextSibling(); |
432 | } | 542 | } |
433 | if ( insert ) { | 543 | if ( insert ) { |
434 | mPhoneNumberList.append( phoneNumber ); | 544 | mPhoneNumberList.append( phoneNumber ); |
435 | new PhoneViewItem( mListView, phoneNumber ); | 545 | new PhoneViewItem( mListView, phoneNumber ); |
436 | } | 546 | } |
437 | mChanged = true; | 547 | mChanged = true; |
438 | } | 548 | } |
439 | } | 549 | } |
440 | 550 | ||
441 | void PhoneEditDialog::slotRemovePhoneNumber() | 551 | void PhoneEditDialog::slotRemovePhoneNumber() |
442 | { | 552 | { |
443 | PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); | 553 | PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); |
444 | if ( !item ) | 554 | if ( !item ) |
445 | return; | 555 | return; |
446 | 556 | ||
447 | mPhoneNumberList.remove( item->phoneNumber() ); | 557 | mPhoneNumberList.remove( item->phoneNumber() ); |
448 | QListViewItem *currItem = mListView->currentItem(); | 558 | QListViewItem *currItem = mListView->currentItem(); |
449 | mListView->takeItem( currItem ); | 559 | mListView->takeItem( currItem ); |
450 | delete currItem; | 560 | delete currItem; |
451 | 561 | ||
452 | mChanged = true; | 562 | mChanged = true; |
453 | } | 563 | } |
454 | 564 | ||
455 | void PhoneEditDialog::slotEditPhoneNumber() | 565 | void PhoneEditDialog::slotEditPhoneNumber() |
456 | { | 566 | { |
457 | PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); | 567 | PhoneViewItem *item = static_cast<PhoneViewItem*>( mListView->currentItem() ); |
458 | if ( !item ) | 568 | if ( !item ) |
459 | return; | 569 | return; |
460 | 570 | ||
461 | PhoneTypeDialog dlg( item->phoneNumber(), this ); | 571 | PhoneTypeDialog dlg( item->phoneNumber(), this ); |
462 | 572 | ||
463 | if ( dlg.exec() ) { | 573 | if ( dlg.exec() ) { |
464 | slotRemovePhoneNumber(); | 574 | slotRemovePhoneNumber(); |
465 | KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); | 575 | KABC::PhoneNumber phoneNumber = dlg.phoneNumber(); |
466 | mPhoneNumberList.append( phoneNumber ); | 576 | mPhoneNumberList.append( phoneNumber ); |
467 | new PhoneViewItem( mListView, phoneNumber ); | 577 | new PhoneViewItem( mListView, phoneNumber ); |
468 | 578 | ||
469 | mChanged = true; | 579 | mChanged = true; |
470 | } | 580 | } |
471 | } | 581 | } |
472 | 582 | ||
473 | void PhoneEditDialog::slotSelectionChanged() | 583 | void PhoneEditDialog::slotSelectionChanged() |
474 | { | 584 | { |
475 | bool state = ( mListView->currentItem() != 0 ); | 585 | bool state = ( mListView->currentItem() != 0 ); |
476 | 586 | ||
477 | mRemoveButton->setEnabled( state ); | 587 | mRemoveButton->setEnabled( state ); |
478 | mEditButton->setEnabled( state ); | 588 | mEditButton->setEnabled( state ); |
479 | } | 589 | } |
480 | 590 | ||
481 | const KABC::PhoneNumber::List &PhoneEditDialog::phoneNumbers() | 591 | const KABC::PhoneNumber::List &PhoneEditDialog::phoneNumbers() |
482 | { | 592 | { |
483 | return mPhoneNumberList; | 593 | return mPhoneNumberList; |
484 | } | 594 | } |
485 | 595 | ||
486 | bool PhoneEditDialog::changed() const | 596 | bool PhoneEditDialog::changed() const |
487 | { | 597 | { |
488 | return mChanged; | 598 | return mChanged; |
489 | } | 599 | } |
490 | 600 | ||
491 | /////////////////////////////////////////// | 601 | /////////////////////////////////////////// |
492 | // PhoneTypeDialog | 602 | // PhoneTypeDialog |
493 | PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, | 603 | PhoneTypeDialog::PhoneTypeDialog( const KABC::PhoneNumber &phoneNumber, |
494 | QWidget *parent, const char *name) | 604 | QWidget *parent, const char *name) |
495 | : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Number" ), | 605 | : KDialogBase( KDialogBase::Plain, i18n( "Edit Phone Number" ), |
496 | KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, | 606 | KDialogBase::Ok | KDialogBase::Cancel, KDialogBase::Ok, |
497 | parent, name, true), mPhoneNumber( phoneNumber ) | 607 | parent, name, true), mPhoneNumber( phoneNumber ) |
498 | { | 608 | { |
499 | QWidget *page = plainPage(); | 609 | QWidget *page = plainPage(); |
500 | QLabel *label = 0; | 610 | QLabel *label = 0; |
501 | QGridLayout *layout = new QGridLayout( page, 3, 2, marginHint(), spacingHint() ); | 611 | QGridLayout *layout = new QGridLayout( page, 3, 2, marginHint(), spacingHint() ); |
502 | 612 | ||
503 | label = new QLabel( i18n( "Number:" ), page ); | 613 | label = new QLabel( i18n( "Number:" ), page ); |
504 | layout->addWidget( label, 0, 0 ); | 614 | layout->addWidget( label, 0, 0 ); |
505 | mNumber = new KLineEdit( page ); | 615 | mNumber = new KLineEdit( page ); |
506 | layout->addWidget( mNumber, 0, 1 ); | 616 | layout->addWidget( mNumber, 0, 1 ); |
507 | 617 | ||
508 | mPreferredBox = new QCheckBox( i18n( "This is the preferred phone number" ), page ); | 618 | mPreferredBox = new QCheckBox( i18n( "This is the preferred phone number" ), page ); |
509 | layout->addMultiCellWidget( mPreferredBox, 1, 1, 0, 1 ); | 619 | layout->addMultiCellWidget( mPreferredBox, 1, 1, 0, 1 ); |
510 | 620 | ||
511 | mGroup = new QButtonGroup( 2, Horizontal, i18n( "Types" ), page ); | 621 | mGroup = new QButtonGroup( 2, Horizontal, i18n( "Types" ), page ); |
512 | layout->addMultiCellWidget( mGroup, 2, 2, 0, 1 ); | 622 | layout->addMultiCellWidget( mGroup, 2, 2, 0, 1 ); |
513 | 623 | ||
514 | // fill widgets | 624 | // fill widgets |
515 | mNumber->setText( mPhoneNumber.number() ); | 625 | mNumber->setText( mPhoneNumber.number() ); |
516 | 626 | ||
517 | mTypeList = KABC::PhoneNumber::typeList(); | 627 | mTypeList = KABC::PhoneNumber::typeList(); |
518 | mTypeList.remove( KABC::PhoneNumber::Pref ); | 628 | mTypeList.remove( KABC::PhoneNumber::Pref ); |
519 | 629 | ||
520 | KABC::PhoneNumber::TypeList::Iterator it; | 630 | KABC::PhoneNumber::TypeList::Iterator it; |
521 | for ( it = mTypeList.begin(); it != mTypeList.end(); ++it ) | 631 | for ( it = mTypeList.begin(); it != mTypeList.end(); ++it ) |
522 | new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup ); | 632 | new QCheckBox( KABC::PhoneNumber::typeLabel( *it ), mGroup ); |
523 | 633 | ||
524 | for ( int i = 0; i < mGroup->count(); ++i ) { | 634 | for ( int i = 0; i < mGroup->count(); ++i ) { |
525 | int type = mPhoneNumber.type(); | 635 | int type = mPhoneNumber.type(); |
526 | QCheckBox *box = (QCheckBox*)mGroup->find( i ); | 636 | QCheckBox *box = (QCheckBox*)mGroup->find( i ); |
527 | box->setChecked( type & mTypeList[ i ] ); | 637 | box->setChecked( type & mTypeList[ i ] ); |
528 | } | 638 | } |
529 | 639 | ||
530 | mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref ); | 640 | mPreferredBox->setChecked( mPhoneNumber.type() & KABC::PhoneNumber::Pref ); |
531 | mNumber->setFocus(); | 641 | mNumber->setFocus(); |
532 | mNumber->setSelection( 0, 1024); | 642 | mNumber->setSelection( 0, 1024); |
533 | } | 643 | } |
534 | 644 | ||
535 | KABC::PhoneNumber PhoneTypeDialog::phoneNumber() | 645 | KABC::PhoneNumber PhoneTypeDialog::phoneNumber() |
536 | { | 646 | { |
537 | mPhoneNumber.setNumber( mNumber->text() ); | 647 | mPhoneNumber.setNumber( mNumber->text() ); |
538 | 648 | ||
539 | int type = 0; | 649 | int type = 0; |
540 | for ( int i = 0; i < mGroup->count(); ++i ) { | 650 | for ( int i = 0; i < mGroup->count(); ++i ) { |
541 | QCheckBox *box = (QCheckBox*)mGroup->find( i ); | 651 | QCheckBox *box = (QCheckBox*)mGroup->find( i ); |
542 | if ( box->isChecked() ) | 652 | if ( box->isChecked() ) |
543 | type += mTypeList[ i ]; | 653 | type += mTypeList[ i ]; |
544 | } | 654 | } |
545 | 655 | ||
546 | if ( mPreferredBox->isChecked() ) | 656 | if ( mPreferredBox->isChecked() ) |
547 | mPhoneNumber.setType( type | KABC::PhoneNumber::Pref ); | 657 | mPhoneNumber.setType( type | KABC::PhoneNumber::Pref ); |
548 | else | 658 | else |
549 | mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref ); | 659 | mPhoneNumber.setType( type & ~KABC::PhoneNumber::Pref ); |
550 | 660 | ||
551 | return mPhoneNumber; | 661 | return mPhoneNumber; |
552 | } | 662 | } |
553 | 663 | #endif | |
554 | #ifndef KAB_EMBEDDED | 664 | #ifndef KAB_EMBEDDED |
555 | #include "phoneeditwidget.moc" | 665 | #include "phoneeditwidget.moc" |
556 | #endif //KAB_EMBEDDED | 666 | #endif //KAB_EMBEDDED |