summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-08-11 01:57:44 (UTC)
committer ulf69 <ulf69>2004-08-11 01:57:44 (UTC)
commit4e4e196bc4fbe4e078b4fbe6b372bd643bf372f1 (patch) (unidiff)
treec582e58964a01157962c2c9b605bc501ddbe2771
parent42860986468bb90c55783fcebc1b20bd3ee460ac (diff)
downloadkdepimpi-4e4e196bc4fbe4e078b4fbe6b372bd643bf372f1.zip
kdepimpi-4e4e196bc4fbe4e078b4fbe6b372bd643bf372f1.tar.gz
kdepimpi-4e4e196bc4fbe4e078b4fbe6b372bd643bf372f1.tar.bz2
added special detailview handling for small devices. Now the behavior is
a little bit similar to qtopia and opie addressbook
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp108
-rw-r--r--kaddressbook/kabcore.h6
2 files changed, 94 insertions, 20 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 6610288..96603e6 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -128,355 +128,370 @@
128#include "kaimportoldialog.h" 128#include "kaimportoldialog.h"
129#endif 129#endif
130 130
131bool pasteWithNewUid = true; 131bool pasteWithNewUid = true;
132 132
133#ifdef KAB_EMBEDDED 133#ifdef KAB_EMBEDDED
134KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 134KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
135 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 135 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
136 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 136 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
137 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 137 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
138#else //KAB_EMBEDDED 138#else //KAB_EMBEDDED
139KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 139KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
140 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 140 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
141 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 141 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
142 mReadWrite( readWrite ), mModified( false ) 142 mReadWrite( readWrite ), mModified( false )
143#endif //KAB_EMBEDDED 143#endif //KAB_EMBEDDED
144{ 144{
145 145
146 mExtensionBarSplitter = 0; 146 mExtensionBarSplitter = 0;
147 mIsPart = !parent->inherits( "KAddressBookMain" ); 147 mIsPart = !parent->inherits( "KAddressBookMain" );
148 148
149 mAddressBook = KABC::StdAddressBook::self(); 149 mAddressBook = KABC::StdAddressBook::self();
150 KABC::StdAddressBook::setAutomaticSave( false ); 150 KABC::StdAddressBook::setAutomaticSave( false );
151 151
152#ifndef KAB_EMBEDDED 152#ifndef KAB_EMBEDDED
153 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 153 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
154#endif //KAB_EMBEDDED 154#endif //KAB_EMBEDDED
155 155
156 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 156 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
157 SLOT( addressBookChanged() ) ); 157 SLOT( addressBookChanged() ) );
158 158
159 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 159 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
160 "X-Department", "KADDRESSBOOK" ); 160 "X-Department", "KADDRESSBOOK" );
161 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 161 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
162 "X-Profession", "KADDRESSBOOK" ); 162 "X-Profession", "KADDRESSBOOK" );
163 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 163 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
164 "X-AssistantsName", "KADDRESSBOOK" ); 164 "X-AssistantsName", "KADDRESSBOOK" );
165 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 165 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
166 "X-ManagersName", "KADDRESSBOOK" ); 166 "X-ManagersName", "KADDRESSBOOK" );
167 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 167 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
168 "X-SpousesName", "KADDRESSBOOK" ); 168 "X-SpousesName", "KADDRESSBOOK" );
169 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 169 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
170 "X-Office", "KADDRESSBOOK" ); 170 "X-Office", "KADDRESSBOOK" );
171 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 171 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
172 "X-IMAddress", "KADDRESSBOOK" ); 172 "X-IMAddress", "KADDRESSBOOK" );
173 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 173 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
174 "X-Anniversary", "KADDRESSBOOK" ); 174 "X-Anniversary", "KADDRESSBOOK" );
175 175
176 //US added this field to become compatible with Opie/qtopia addressbook 176 //US added this field to become compatible with Opie/qtopia addressbook
177 // values can be "female" or "male" or "". An empty field represents undefined. 177 // values can be "female" or "male" or "". An empty field represents undefined.
178 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 178 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
179 "X-Gender", "KADDRESSBOOK" ); 179 "X-Gender", "KADDRESSBOOK" );
180 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 180 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
181 "X-Children", "KADDRESSBOOK" ); 181 "X-Children", "KADDRESSBOOK" );
182 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 182 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
183 "X-FreeBusyUrl", "KADDRESSBOOK" ); 183 "X-FreeBusyUrl", "KADDRESSBOOK" );
184 184
185 initGUI(); 185 initGUI();
186 186
187 mIncSearchWidget->setFocus(); 187 mIncSearchWidget->setFocus();
188 188
189 189
190 connect( mViewManager, SIGNAL( selected( const QString& ) ), 190 connect( mViewManager, SIGNAL( selected( const QString& ) ),
191 SLOT( setContactSelected( const QString& ) ) ); 191 SLOT( setContactSelected( const QString& ) ) );
192 connect( mViewManager, SIGNAL( executed( const QString& ) ), 192
193 //small devices show only the details view. bigger devices can edit the entry
194 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
195 connect( mViewManager, SIGNAL( executed( const QString& ) ),
193 SLOT( editContact( const QString& ) ) ); 196 SLOT( editContact( const QString& ) ) );
197 }
198 else
199 {
200 connect( mViewManager, SIGNAL( executed( const QString& ) ),
201 SLOT( showContact( const QString& ) ) );
202 }
203
194 connect( mViewManager, SIGNAL( deleteRequest( ) ), 204 connect( mViewManager, SIGNAL( deleteRequest( ) ),
195 SLOT( deleteContacts( ) ) ); 205 SLOT( deleteContacts( ) ) );
196 connect( mViewManager, SIGNAL( modified() ), 206 connect( mViewManager, SIGNAL( modified() ),
197 SLOT( setModified() ) ); 207 SLOT( setModified() ) );
198 208
199 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 209 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
200 210
201 connect( mXXPortManager, SIGNAL( modified() ), 211 connect( mXXPortManager, SIGNAL( modified() ),
202 SLOT( setModified() ) ); 212 SLOT( setModified() ) );
203 213
204 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 214 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
205 SLOT( incrementalSearch( const QString& ) ) ); 215 SLOT( incrementalSearch( const QString& ) ) );
206 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 216 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
207 mJumpButtonBar, SLOT( recreateButtons() ) ); 217 mJumpButtonBar, SLOT( recreateButtons() ) );
208 218
209 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 219 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
210 SLOT( sendMail( const QString& ) ) ); 220 SLOT( sendMail( const QString& ) ) );
211 221
212#ifndef KAB_EMBEDDED 222#ifndef KAB_EMBEDDED
213 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 223 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
214 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 224 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
215 225
216 connect( mDetails, SIGNAL( browse( const QString& ) ), 226 connect( mDetails, SIGNAL( browse( const QString& ) ),
217 SLOT( browse( const QString& ) ) ); 227 SLOT( browse( const QString& ) ) );
218 228
219 mAddressBookService = new KAddressBookService( this ); 229 mAddressBookService = new KAddressBookService( this );
220 230
221#endif //KAB_EMBEDDED 231#endif //KAB_EMBEDDED
222 mEditorDialog = 0; 232 mEditorDialog = 0;
223 createAddresseeEditorDialog( this ); 233 createAddresseeEditorDialog( this );
224 setModified( false ); 234 setModified( false );
225} 235}
226 236
227KABCore::~KABCore() 237KABCore::~KABCore()
228{ 238{
229 // save(); 239 // save();
230 //saveSettings(); 240 //saveSettings();
231 //KABPrefs::instance()->writeConfig(); 241 //KABPrefs::instance()->writeConfig();
232 delete AddresseeConfig::instance(); 242 delete AddresseeConfig::instance();
233 mAddressBook = 0; 243 mAddressBook = 0;
234 KABC::StdAddressBook::close(); 244 KABC::StdAddressBook::close();
235} 245}
236 246
237void KABCore::restoreSettings() 247void KABCore::restoreSettings()
238{ 248{
239 bool state = KABPrefs::instance()->mJumpButtonBarVisible; 249 bool state;
240 250
241 mActionJumpBar->setChecked( state ); 251 //small devices have at startup the details view disabled
242 setJumpButtonBarVisible( state ); 252 if (KGlobal::getDesktopSize() > KGlobal::Small )
243 253 state = KABPrefs::instance()->mDetailsPageVisible;
244 state = KABPrefs::instance()->mDetailsPageVisible; 254 else
255 state = false;
245 256
246 mActionDetails->setChecked( state ); 257 mActionDetails->setChecked( state );
247 setDetailsVisible( state ); 258 setDetailsVisible( state );
259
260 state = KABPrefs::instance()->mJumpButtonBarVisible;
261
262 mActionJumpBar->setChecked( state );
263 setJumpButtonBarVisible( state );
264
248 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 265 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
249 if ( splitterSize.count() == 0 ) { 266 if ( splitterSize.count() == 0 ) {
250 splitterSize.append( width() / 2 ); 267 splitterSize.append( width() / 2 );
251 splitterSize.append( width() / 2 ); 268 splitterSize.append( width() / 2 );
252 } 269 }
253 mMiniSplitter->setSizes( splitterSize ); 270 mMiniSplitter->setSizes( splitterSize );
254 if ( mExtensionBarSplitter ) { 271 if ( mExtensionBarSplitter ) {
255 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 272 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
256 if ( splitterSize.count() == 0 ) { 273 if ( splitterSize.count() == 0 ) {
257 splitterSize.append( width() / 2 ); 274 splitterSize.append( width() / 2 );
258 splitterSize.append( width() / 2 ); 275 splitterSize.append( width() / 2 );
259 } 276 }
260 mExtensionBarSplitter->setSizes( splitterSize ); 277 mExtensionBarSplitter->setSizes( splitterSize );
261 278
262 } 279 }
263#ifndef KAB_EMBEDDED 280#ifndef KAB_EMBEDDED
264 QValueList<int> splitterSize = KABPrefs::instance()->mExtensionsSplitter; 281 QValueList<int> splitterSize = KABPrefs::instance()->mExtensionsSplitter;
265 if ( splitterSize.count() == 0 ) { 282 if ( splitterSize.count() == 0 ) {
266 splitterSize.append( width() / 2 ); 283 splitterSize.append( width() / 2 );
267 splitterSize.append( width() / 2 ); 284 splitterSize.append( width() / 2 );
268 } 285 }
269 mExtensionBarSplitter->setSizes( splitterSize ); 286 mExtensionBarSplitter->setSizes( splitterSize );
270 287
271 splitterSize = KABPrefs::instance()->mDetailsSplitter; 288 splitterSize = KABPrefs::instance()->mDetailsSplitter;
272 if ( splitterSize.count() == 0 ) { 289 if ( splitterSize.count() == 0 ) {
273 splitterSize.append( height() / 2 ); 290 splitterSize.append( height() / 2 );
274 splitterSize.append( height() / 2 ); 291 splitterSize.append( height() / 2 );
275 } 292 }
276 mDetailsSplitter->setSizes( splitterSize ); 293 mDetailsSplitter->setSizes( splitterSize );
277 294
278 mExtensionManager->restoreSettings(); 295 mExtensionManager->restoreSettings();
279 296
280#endif //KAB_EMBEDDED 297#endif //KAB_EMBEDDED
281 298
282 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
283
284 mViewManager->restoreSettings(); 299 mViewManager->restoreSettings();
300 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
285 mExtensionManager->restoreSettings(); 301 mExtensionManager->restoreSettings();
286} 302}
287 303
288void KABCore::saveSettings() 304void KABCore::saveSettings()
289{ 305{
290 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 306 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
291 if ( mExtensionBarSplitter ) 307 if ( mExtensionBarSplitter )
292 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 308 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
293 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 309 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
294 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 310 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
295#ifndef KAB_EMBEDDED 311#ifndef KAB_EMBEDDED
296 312
297 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 313 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
298 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 314 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
299#endif //KAB_EMBEDDED 315#endif //KAB_EMBEDDED
300 mExtensionManager->saveSettings(); 316 mExtensionManager->saveSettings();
301 mViewManager->saveSettings(); 317 mViewManager->saveSettings();
302 318
303 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 319 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
304
305} 320}
306 321
307KABC::AddressBook *KABCore::addressBook() const 322KABC::AddressBook *KABCore::addressBook() const
308{ 323{
309 return mAddressBook; 324 return mAddressBook;
310} 325}
311 326
312KConfig *KABCore::config() 327KConfig *KABCore::config()
313{ 328{
314#ifndef KAB_EMBEDDED 329#ifndef KAB_EMBEDDED
315 return KABPrefs::instance()->config(); 330 return KABPrefs::instance()->config();
316#else //KAB_EMBEDDED 331#else //KAB_EMBEDDED
317 return KABPrefs::instance()->getConfig(); 332 return KABPrefs::instance()->getConfig();
318#endif //KAB_EMBEDDED 333#endif //KAB_EMBEDDED
319} 334}
320 335
321KActionCollection *KABCore::actionCollection() const 336KActionCollection *KABCore::actionCollection() const
322{ 337{
323 return mGUIClient->actionCollection(); 338 return mGUIClient->actionCollection();
324} 339}
325 340
326KABC::Field *KABCore::currentSearchField() const 341KABC::Field *KABCore::currentSearchField() const
327{ 342{
328 if (mIncSearchWidget) 343 if (mIncSearchWidget)
329 return mIncSearchWidget->currentField(); 344 return mIncSearchWidget->currentField();
330 else 345 else
331 return 0; 346 return 0;
332} 347}
333 348
334QStringList KABCore::selectedUIDs() const 349QStringList KABCore::selectedUIDs() const
335{ 350{
336 return mViewManager->selectedUids(); 351 return mViewManager->selectedUids();
337} 352}
338 353
339KABC::Resource *KABCore::requestResource( QWidget *parent ) 354KABC::Resource *KABCore::requestResource( QWidget *parent )
340{ 355{
341 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 356 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
342 357
343 QPtrList<KRES::Resource> kresResources; 358 QPtrList<KRES::Resource> kresResources;
344 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 359 QPtrListIterator<KABC::Resource> resIt( kabcResources );
345 KABC::Resource *resource; 360 KABC::Resource *resource;
346 while ( ( resource = resIt.current() ) != 0 ) { 361 while ( ( resource = resIt.current() ) != 0 ) {
347 ++resIt; 362 ++resIt;
348 if ( !resource->readOnly() ) { 363 if ( !resource->readOnly() ) {
349 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 364 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
350 if ( res ) 365 if ( res )
351 kresResources.append( res ); 366 kresResources.append( res );
352 } 367 }
353 } 368 }
354 369
355 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 370 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
356 return static_cast<KABC::Resource*>( res ); 371 return static_cast<KABC::Resource*>( res );
357} 372}
358 373
359#ifndef KAB_EMBEDDED 374#ifndef KAB_EMBEDDED
360KAboutData *KABCore::createAboutData() 375KAboutData *KABCore::createAboutData()
361#else //KAB_EMBEDDED 376#else //KAB_EMBEDDED
362void KABCore::createAboutData() 377void KABCore::createAboutData()
363#endif //KAB_EMBEDDED 378#endif //KAB_EMBEDDED
364{ 379{
365#ifndef KAB_EMBEDDED 380#ifndef KAB_EMBEDDED
366 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 381 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
367 "3.1", I18N_NOOP( "The KDE Address Book" ), 382 "3.1", I18N_NOOP( "The KDE Address Book" ),
368 KAboutData::License_GPL_V2, 383 KAboutData::License_GPL_V2,
369 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 384 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
370 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 385 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
371 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 386 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
372 about->addAuthor( "Cornelius Schumacher", 387 about->addAuthor( "Cornelius Schumacher",
373 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 388 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
374 "schumacher@kde.org" ); 389 "schumacher@kde.org" );
375 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 390 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
376 "mpilone@slac.com" ); 391 "mpilone@slac.com" );
377 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 392 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
378 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 393 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
379 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 394 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
380 "michel@klaralvdalens-datakonsult.se" ); 395 "michel@klaralvdalens-datakonsult.se" );
381 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 396 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
382 "hansen@kde.org" ); 397 "hansen@kde.org" );
383 398
384 return about; 399 return about;
385#endif //KAB_EMBEDDED 400#endif //KAB_EMBEDDED
386 401
387 QString version; 402 QString version;
388#include <../version> 403#include <../version>
389 QMessageBox::about( this, "About KAddressbook/Pi", 404 QMessageBox::about( this, "About KAddressbook/Pi",
390 "KAddressbook/Platform-independent\n" 405 "KAddressbook/Platform-independent\n"
391 "(KA/Pi) " +version + " - " + 406 "(KA/Pi) " +version + " - " +
392#ifdef DESKTOP_VERSION 407#ifdef DESKTOP_VERSION
393 "Desktop Edition\n" 408 "Desktop Edition\n"
394#else 409#else
395 "PDA-Edition\n" 410 "PDA-Edition\n"
396 "for: Zaurus 5500 / 7x0 / 8x0\n" 411 "for: Zaurus 5500 / 7x0 / 8x0\n"
397#endif 412#endif
398 413
399 "(c) 2004 Ulf Schenk\n" 414 "(c) 2004 Ulf Schenk\n"
400 "(c) 1997-2003, The KDE PIM Team\n" 415 "(c) 1997-2003, The KDE PIM Team\n"
401 "Tobias Koenig Current maintainer tokoe@kde.org\n" 416 "Tobias Koenig Current maintainer tokoe@kde.org\n"
402 "Don Sanders Original author\n" 417 "Don Sanders Original author\n"
403 "Cornelius Schumacher Co-maintainer schumacher@kde.org\n" 418 "Cornelius Schumacher Co-maintainer schumacher@kde.org\n"
404 "Mike Pilone GUI and framework redesign mpilone@slac.com\n" 419 "Mike Pilone GUI and framework redesign mpilone@slac.com\n"
405 "Greg Stern DCOP interface\n" 420 "Greg Stern DCOP interface\n"
406 "Mark Westcot Contact pinning\n" 421 "Mark Westcot Contact pinning\n"
407 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 422 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
408 "Steffen Hansen LDAP Lookup hansen@kde.org\n" 423 "Steffen Hansen LDAP Lookup hansen@kde.org\n"
409#ifdef _WIN32_ 424#ifdef _WIN32_
410 "(c) 2004 Lutz Rogowski Import from OL rogowski@kde.org\n" 425 "(c) 2004 Lutz Rogowski Import from OL rogowski@kde.org\n"
411#endif 426#endif
412 ); 427 );
413} 428}
414 429
415void KABCore::setContactSelected( const QString &uid ) 430void KABCore::setContactSelected( const QString &uid )
416{ 431{
417 KABC::Addressee addr = mAddressBook->findByUid( uid ); 432 KABC::Addressee addr = mAddressBook->findByUid( uid );
418 if ( !mDetails->isHidden() ) 433//US if ( !mDetails->isHidden() )
419 mDetails->setAddressee( addr ); 434 mDetails->setAddressee( addr );
420 435
421 if ( !addr.isEmpty() ) { 436 if ( !addr.isEmpty() ) {
422 emit contactSelected( addr.formattedName() ); 437 emit contactSelected( addr.formattedName() );
423 KABC::Picture pic = addr.photo(); 438 KABC::Picture pic = addr.photo();
424 if ( pic.isIntern() ) { 439 if ( pic.isIntern() ) {
425//US emit contactSelected( pic.data() ); 440//US emit contactSelected( pic.data() );
426//US instead use: 441//US instead use:
427 QPixmap px; 442 QPixmap px;
428 if (pic.data().isNull() != true) 443 if (pic.data().isNull() != true)
429 { 444 {
430 px.convertFromImage(pic.data()); 445 px.convertFromImage(pic.data());
431 } 446 }
432 447
433 emit contactSelected( px ); 448 emit contactSelected( px );
434 } 449 }
435 } 450 }
436 451
437 452
438 mExtensionManager->setSelectionChanged(); 453 mExtensionManager->setSelectionChanged();
439 454
440 // update the actions 455 // update the actions
441 bool selected = !uid.isEmpty(); 456 bool selected = !uid.isEmpty();
442 457
443 if ( mReadWrite ) { 458 if ( mReadWrite ) {
444 mActionCut->setEnabled( selected ); 459 mActionCut->setEnabled( selected );
445 mActionPaste->setEnabled( selected ); 460 mActionPaste->setEnabled( selected );
446 } 461 }
447 462
448 mActionCopy->setEnabled( selected ); 463 mActionCopy->setEnabled( selected );
449 mActionDelete->setEnabled( selected ); 464 mActionDelete->setEnabled( selected );
450 mActionEditAddressee->setEnabled( selected ); 465 mActionEditAddressee->setEnabled( selected );
451 mActionMail->setEnabled( selected ); 466 mActionMail->setEnabled( selected );
452 mActionMailVCard->setEnabled( selected ); 467 mActionMailVCard->setEnabled( selected );
453 //if (mActionBeam) 468 //if (mActionBeam)
454 //mActionBeam->setEnabled( selected ); 469 //mActionBeam->setEnabled( selected );
455 470
456 if (mActionBeamVCard) 471 if (mActionBeamVCard)
457 mActionBeamVCard->setEnabled( selected ); 472 mActionBeamVCard->setEnabled( selected );
458 473
459 mActionWhoAmI->setEnabled( selected ); 474 mActionWhoAmI->setEnabled( selected );
460 mActionCategories->setEnabled( selected ); 475 mActionCategories->setEnabled( selected );
461} 476}
462 477
463void KABCore::sendMail() 478void KABCore::sendMail()
464{ 479{
465 sendMail( mViewManager->selectedEmails().join( ", " ) ); 480 sendMail( mViewManager->selectedEmails().join( ", " ) );
466} 481}
467 482
468void KABCore::sendMail( const QString& emaillist ) 483void KABCore::sendMail( const QString& emaillist )
469{ 484{
470 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " 485 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
471 if (emaillist.contains(",") > 0) 486 if (emaillist.contains(",") > 0)
472 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); 487 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
473 else 488 else
474 ExternalAppHandler::instance()->mailToOneContact( emaillist ); 489 ExternalAppHandler::instance()->mailToOneContact( emaillist );
475} 490}
476 491
477 492
478 493
479void KABCore::mailVCard() 494void KABCore::mailVCard()
480{ 495{
481 QStringList uids = mViewManager->selectedUids(); 496 QStringList uids = mViewManager->selectedUids();
482 if ( !uids.isEmpty() ) 497 if ( !uids.isEmpty() )
@@ -980,191 +995,242 @@ void KABCore::addEmail( QString aStr )
980void KABCore::importVCard( const KURL &url, bool showPreview ) 995void KABCore::importVCard( const KURL &url, bool showPreview )
981{ 996{
982 mXXPortManager->importVCard( url, showPreview ); 997 mXXPortManager->importVCard( url, showPreview );
983} 998}
984void KABCore::importFromOL() 999void KABCore::importFromOL()
985{ 1000{
986#ifdef _WIN32_ 1001#ifdef _WIN32_
987 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); 1002 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this );
988 idgl->exec(); 1003 idgl->exec();
989 KABC::Addressee::List list = idgl->getAddressList(); 1004 KABC::Addressee::List list = idgl->getAddressList();
990 if ( list.count() > 0 ) { 1005 if ( list.count() > 0 ) {
991 KABC::Addressee::List listNew; 1006 KABC::Addressee::List listNew;
992 KABC::Addressee::List listExisting; 1007 KABC::Addressee::List listExisting;
993 KABC::Addressee::List::Iterator it; 1008 KABC::Addressee::List::Iterator it;
994 KABC::AddressBook::Iterator iter; 1009 KABC::AddressBook::Iterator iter;
995 for ( it = list.begin(); it != list.end(); ++it ) { 1010 for ( it = list.begin(); it != list.end(); ++it ) {
996 if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) 1011 if ( mAddressBook->findByUid((*it).uid() ).isEmpty())
997 listNew.append( (*it) ); 1012 listNew.append( (*it) );
998 else 1013 else
999 listExisting.append( (*it) ); 1014 listExisting.append( (*it) );
1000 } 1015 }
1001 if ( listExisting.count() > 0 ) 1016 if ( listExisting.count() > 0 )
1002 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); 1017 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ));
1003 if ( listNew.count() > 0 ) { 1018 if ( listNew.count() > 0 ) {
1004 pasteWithNewUid = false; 1019 pasteWithNewUid = false;
1005 pasteContacts( listNew ); 1020 pasteContacts( listNew );
1006 pasteWithNewUid = true; 1021 pasteWithNewUid = true;
1007 } 1022 }
1008 } 1023 }
1009 delete idgl; 1024 delete idgl;
1010#endif 1025#endif
1011} 1026}
1012 1027
1013void KABCore::importVCard( const QString &vCard, bool showPreview ) 1028void KABCore::importVCard( const QString &vCard, bool showPreview )
1014{ 1029{
1015 mXXPortManager->importVCard( vCard, showPreview ); 1030 mXXPortManager->importVCard( vCard, showPreview );
1016} 1031}
1017 1032
1018//US added a second method without defaultparameter 1033//US added a second method without defaultparameter
1019void KABCore::editContact2() { 1034void KABCore::editContact2() {
1020 editContact( QString::null ); 1035 editContact( QString::null );
1021} 1036}
1022 1037
1023void KABCore::editContact( const QString &uid ) 1038void KABCore::editContact( const QString &uid )
1024{ 1039{
1025 1040
1026 if ( mExtensionManager->isQuickEditVisible() ) 1041 if ( mExtensionManager->isQuickEditVisible() )
1027 return; 1042 return;
1028 1043
1029 // First, locate the contact entry 1044 // First, locate the contact entry
1030 QString localUID = uid; 1045 QString localUID = uid;
1031 if ( localUID.isNull() ) { 1046 if ( localUID.isNull() ) {
1032 QStringList uidList = mViewManager->selectedUids(); 1047 QStringList uidList = mViewManager->selectedUids();
1033 if ( uidList.count() > 0 ) 1048 if ( uidList.count() > 0 )
1034 localUID = *( uidList.at( 0 ) ); 1049 localUID = *( uidList.at( 0 ) );
1035 } 1050 }
1036 1051
1037 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1052 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1038 if ( !addr.isEmpty() ) { 1053 if ( !addr.isEmpty() ) {
1039 mEditorDialog->setAddressee( addr ); 1054 mEditorDialog->setAddressee( addr );
1040 KApplication::execDialog ( mEditorDialog ); 1055 KApplication::execDialog ( mEditorDialog );
1041 } 1056 }
1042} 1057}
1043 1058
1059/**
1060 Shows the detail view for the given uid. If the uid is QString::null,
1061 the method will try to find a selected addressee in the view.
1062 We call this method only if we use a small device. Bigger devices are calling editContact instead
1063 */
1064void KABCore::showContact( const QString &uid /*US = QString::null*/ )
1065{
1066 setDetailsVisible( true );
1067 mActionDetails->setChecked(true);
1068}
1069
1044void KABCore::save() 1070void KABCore::save()
1045{ 1071{
1046 if ( !mModified ) 1072 if ( !mModified )
1047 return; 1073 return;
1048 QString text = i18n( "There was an error while attempting to save\n the " 1074 QString text = i18n( "There was an error while attempting to save\n the "
1049 "address book. Please check that some \nother application is " 1075 "address book. Please check that some \nother application is "
1050 "not using it. " ); 1076 "not using it. " );
1051 statusMessage(i18n("Saving addressbook ... ")); 1077 statusMessage(i18n("Saving addressbook ... "));
1052#ifndef KAB_EMBEDDED 1078#ifndef KAB_EMBEDDED
1053 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1079 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1054 if ( !b || !b->save() ) { 1080 if ( !b || !b->save() ) {
1055 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1081 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1056 } 1082 }
1057#else //KAB_EMBEDDED 1083#else //KAB_EMBEDDED
1058 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1084 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1059 if ( !b || !b->save() ) { 1085 if ( !b || !b->save() ) {
1060 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1086 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1061 } 1087 }
1062#endif //KAB_EMBEDDED 1088#endif //KAB_EMBEDDED
1063 1089
1064 statusMessage(i18n("Addressbook saved!")); 1090 statusMessage(i18n("Addressbook saved!"));
1065 setModified( false ); 1091 setModified( false );
1066} 1092}
1067 1093
1068void KABCore::statusMessage(QString mess , int time ) 1094void KABCore::statusMessage(QString mess , int time )
1069{ 1095{
1070 //topLevelWidget()->setCaption( mess ); 1096 //topLevelWidget()->setCaption( mess );
1071 // pending setting timer to revome message 1097 // pending setting timer to revome message
1072} 1098}
1073void KABCore::undo() 1099void KABCore::undo()
1074{ 1100{
1075 UndoStack::instance()->undo(); 1101 UndoStack::instance()->undo();
1076 1102
1077 // Refresh the view 1103 // Refresh the view
1078 mViewManager->refreshView(); 1104 mViewManager->refreshView();
1079} 1105}
1080 1106
1081void KABCore::redo() 1107void KABCore::redo()
1082{ 1108{
1083 RedoStack::instance()->redo(); 1109 RedoStack::instance()->redo();
1084 1110
1085 // Refresh the view 1111 // Refresh the view
1086 mViewManager->refreshView(); 1112 mViewManager->refreshView();
1087} 1113}
1088 1114
1089void KABCore::setJumpButtonBarVisible( bool visible ) 1115void KABCore::setJumpButtonBarVisible( bool visible )
1090{ 1116{
1091 if ( visible ) 1117 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
1092 mJumpButtonBar->show(); 1118 if ( visible )
1119 mJumpButtonBar->show();
1120 else
1121 mJumpButtonBar->hide();
1122 }
1093 else 1123 else
1094 mJumpButtonBar->hide(); 1124 {
1125 // for the Z5500, show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1126 if (mViewManager->isVisible())
1127 {
1128 if ( visible )
1129 mJumpButtonBar->show();
1130 else
1131 mJumpButtonBar->hide();
1132 }
1133 else
1134 {
1135 mJumpButtonBar->hide();
1136 }
1137 }
1095} 1138}
1096void KABCore::setDetailsToState() 1139void KABCore::setDetailsToState()
1097{ 1140{
1098 setDetailsVisible( mActionDetails->isChecked() ); 1141 setDetailsVisible( mActionDetails->isChecked() );
1099} 1142}
1100 1143
1144
1145
1101void KABCore::setDetailsVisible( bool visible ) 1146void KABCore::setDetailsVisible( bool visible )
1102{ 1147{
1103 if ( visible ) 1148 //US "details visible" has two different meanings for small devices like the 5500
1104 mDetails->show(); 1149 // compared with large devices like the c series.
1150
1151 // small devices: mDetails is always visible. But we switch between
1152 // the listview and the detailview. We do that by changing the splitbar size.
1153 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
1154 if ( visible )
1155 mDetails->show();
1156 else
1157 mDetails->hide();
1158 }
1105 else 1159 else
1106 mDetails->hide(); 1160 {
1161 if ( visible ) {
1162 mViewManager->hide();
1163 mDetails->show();
1164// mDetails->show();
1165 }
1166 else {
1167 mViewManager->show();
1168 mDetails->hide();
1169 }
1170 setJumpButtonBarVisible( !visible );
1171
1172 }
1107} 1173}
1108 1174
1109void KABCore::extensionModified( const KABC::Addressee::List &list ) 1175void KABCore::extensionModified( const KABC::Addressee::List &list )
1110{ 1176{
1111 1177
1112 if ( list.count() != 0 ) { 1178 if ( list.count() != 0 ) {
1113 KABC::Addressee::List::ConstIterator it; 1179 KABC::Addressee::List::ConstIterator it;
1114 for ( it = list.begin(); it != list.end(); ++it ) 1180 for ( it = list.begin(); it != list.end(); ++it )
1115 mAddressBook->insertAddressee( *it ); 1181 mAddressBook->insertAddressee( *it );
1116 if ( list.count() > 1 ) 1182 if ( list.count() > 1 )
1117 setModified(); 1183 setModified();
1118 else 1184 else
1119 setModifiedWOrefresh(); 1185 setModifiedWOrefresh();
1120 } 1186 }
1121 if ( list.count() == 0 ) 1187 if ( list.count() == 0 )
1122 mViewManager->refreshView(); 1188 mViewManager->refreshView();
1123 else 1189 else
1124 mViewManager->refreshView( list[ 0 ].uid() ); 1190 mViewManager->refreshView( list[ 0 ].uid() );
1125 1191
1126 1192
1127 1193
1128} 1194}
1129 1195
1130QString KABCore::getNameByPhone( const QString &phone ) 1196QString KABCore::getNameByPhone( const QString &phone )
1131{ 1197{
1132#ifndef KAB_EMBEDDED 1198#ifndef KAB_EMBEDDED
1133 QRegExp r( "[/*/-/ ]" ); 1199 QRegExp r( "[/*/-/ ]" );
1134 QString localPhone( phone ); 1200 QString localPhone( phone );
1135 1201
1136 bool found = false; 1202 bool found = false;
1137 QString ownerName = ""; 1203 QString ownerName = "";
1138 KABC::AddressBook::Iterator iter; 1204 KABC::AddressBook::Iterator iter;
1139 KABC::PhoneNumber::List::Iterator phoneIter; 1205 KABC::PhoneNumber::List::Iterator phoneIter;
1140 KABC::PhoneNumber::List phoneList; 1206 KABC::PhoneNumber::List phoneList;
1141 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1207 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1142 phoneList = (*iter).phoneNumbers(); 1208 phoneList = (*iter).phoneNumbers();
1143 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1209 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1144 ++phoneIter) { 1210 ++phoneIter) {
1145 // Get rid of separator chars so just the numbers are compared. 1211 // Get rid of separator chars so just the numbers are compared.
1146 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1212 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1147 ownerName = (*iter).formattedName(); 1213 ownerName = (*iter).formattedName();
1148 found = true; 1214 found = true;
1149 } 1215 }
1150 } 1216 }
1151 } 1217 }
1152 1218
1153 return ownerName; 1219 return ownerName;
1154#else //KAB_EMBEDDED 1220#else //KAB_EMBEDDED
1155 qDebug("KABCore::getNameByPhone finsih method"); 1221 qDebug("KABCore::getNameByPhone finsih method");
1156 return ""; 1222 return "";
1157#endif //KAB_EMBEDDED 1223#endif //KAB_EMBEDDED
1158 1224
1159} 1225}
1160 1226
1161void KABCore::openConfigDialog() 1227void KABCore::openConfigDialog()
1162{ 1228{
1163 KABPrefs* kab_prefs = KABPrefs::instance(); 1229 KABPrefs* kab_prefs = KABPrefs::instance();
1164 KPimGlobalPrefs* kpim_prefs = KPimGlobalPrefs::instance(); 1230 KPimGlobalPrefs* kpim_prefs = KPimGlobalPrefs::instance();
1165 1231
1166 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1232 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1167 KCMKabConfig* kabcfg = new KCMKabConfig( kab_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1233 KCMKabConfig* kabcfg = new KCMKabConfig( kab_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1168 ConfigureDialog->addModule(kabcfg ); 1234 ConfigureDialog->addModule(kabcfg );
1169 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( kpim_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1235 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( kpim_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1170 ConfigureDialog->addModule(kdelibcfg ); 1236 ConfigureDialog->addModule(kdelibcfg );
@@ -1510,297 +1576,299 @@ void KABCore::initActions()
1510 "kaddressbook_copy" ); 1576 "kaddressbook_copy" );
1511 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1577 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1512 SLOT( cutContacts() ), actionCollection(), 1578 SLOT( cutContacts() ), actionCollection(),
1513 "kaddressbook_cut" ); 1579 "kaddressbook_cut" );
1514 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1580 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1515 SLOT( pasteContacts() ), actionCollection(), 1581 SLOT( pasteContacts() ), actionCollection(),
1516 "kaddressbook_paste" ); 1582 "kaddressbook_paste" );
1517 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1583 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1518 SLOT( selectAllContacts() ), actionCollection(), 1584 SLOT( selectAllContacts() ), actionCollection(),
1519 "kaddressbook_select_all" ); 1585 "kaddressbook_select_all" );
1520 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1586 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1521 SLOT( undo() ), actionCollection(), 1587 SLOT( undo() ), actionCollection(),
1522 "kaddressbook_undo" ); 1588 "kaddressbook_undo" );
1523 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1589 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1524 this, SLOT( redo() ), actionCollection(), 1590 this, SLOT( redo() ), actionCollection(),
1525 "kaddressbook_redo" ); 1591 "kaddressbook_redo" );
1526 } else { 1592 } else {
1527 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1593 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1528 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1594 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1529 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1595 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1530 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1596 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1531 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1597 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1532 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1598 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1533 } 1599 }
1534 1600
1535 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1601 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1536 Key_Delete, this, SLOT( deleteContacts() ), 1602 Key_Delete, this, SLOT( deleteContacts() ),
1537 actionCollection(), "edit_delete" ); 1603 actionCollection(), "edit_delete" );
1538 1604
1539 mActionUndo->setEnabled( false ); 1605 mActionUndo->setEnabled( false );
1540 mActionRedo->setEnabled( false ); 1606 mActionRedo->setEnabled( false );
1541 1607
1542 // settings menu 1608 // settings menu
1543#ifdef KAB_EMBEDDED 1609#ifdef KAB_EMBEDDED
1544//US special menuentry to configure the addressbook resources. On KDE 1610//US special menuentry to configure the addressbook resources. On KDE
1545// you do that through the control center !!! 1611// you do that through the control center !!!
1546 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1612 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1547 SLOT( configureResources() ), actionCollection(), 1613 SLOT( configureResources() ), actionCollection(),
1548 "kaddressbook_configure_resources" ); 1614 "kaddressbook_configure_resources" );
1549#endif //KAB_EMBEDDED 1615#endif //KAB_EMBEDDED
1550 1616
1551 if ( mIsPart ) { 1617 if ( mIsPart ) {
1552 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1618 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1553 SLOT( openConfigDialog() ), actionCollection(), 1619 SLOT( openConfigDialog() ), actionCollection(),
1554 "kaddressbook_configure" ); 1620 "kaddressbook_configure" );
1555 1621
1556 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1622 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1557 this, SLOT( configureKeyBindings() ), actionCollection(), 1623 this, SLOT( configureKeyBindings() ), actionCollection(),
1558 "kaddressbook_configure_shortcuts" ); 1624 "kaddressbook_configure_shortcuts" );
1559#ifdef KAB_EMBEDDED 1625#ifdef KAB_EMBEDDED
1560 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1626 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1561 mActionConfigureToolbars->setEnabled( false ); 1627 mActionConfigureToolbars->setEnabled( false );
1562#endif //KAB_EMBEDDED 1628#endif //KAB_EMBEDDED
1563 1629
1564 } else { 1630 } else {
1565 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1631 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1566 1632
1567 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1633 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1568 } 1634 }
1569 1635
1570 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1636 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1571 actionCollection(), "options_show_jump_bar" ); 1637 actionCollection(), "options_show_jump_bar" );
1572 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1638 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1573 1639
1574 mActionDetails = new KToggleAction( i18n( "Show Details" ), 0, 0, 1640 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
1575 actionCollection(), "options_show_details" ); 1641 actionCollection(), "options_show_details" );
1576 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1642 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1577 1643
1578 // misc 1644 // misc
1579 // only enable LDAP lookup if we can handle the protocol 1645 // only enable LDAP lookup if we can handle the protocol
1580#ifndef KAB_EMBEDDED 1646#ifndef KAB_EMBEDDED
1581 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1647 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1582 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1648 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
1583 this, SLOT( openLDAPDialog() ), actionCollection(), 1649 this, SLOT( openLDAPDialog() ), actionCollection(),
1584 "ldap_lookup" ); 1650 "ldap_lookup" );
1585 } 1651 }
1586#else //KAB_EMBEDDED 1652#else //KAB_EMBEDDED
1587 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1653 //qDebug("KABCore::initActions() LDAP has to be implemented");
1588#endif //KAB_EMBEDDED 1654#endif //KAB_EMBEDDED
1589 1655
1590 1656
1591 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1657 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1592 SLOT( setWhoAmI() ), actionCollection(), 1658 SLOT( setWhoAmI() ), actionCollection(),
1593 "set_personal" ); 1659 "set_personal" );
1594 1660
1595 1661
1596 1662
1597 1663
1598 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1664 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
1599 SLOT( setCategories() ), actionCollection(), 1665 SLOT( setCategories() ), actionCollection(),
1600 "edit_set_categories" ); 1666 "edit_set_categories" );
1601 1667
1602 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 1668 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
1603 SLOT( removeVoice() ), actionCollection(), 1669 SLOT( removeVoice() ), actionCollection(),
1604 "remove_voice" ); 1670 "remove_voice" );
1605 mActionImportOL = new KAction( i18n( "Import from OL..." ), 0, this, 1671 mActionImportOL = new KAction( i18n( "Import from OL..." ), 0, this,
1606 SLOT( importFromOL() ), actionCollection(), 1672 SLOT( importFromOL() ), actionCollection(),
1607 "import_OL" ); 1673 "import_OL" );
1608#ifdef KAB_EMBEDDED 1674#ifdef KAB_EMBEDDED
1609 mActionLicence = new KAction( i18n( "Licence" ), "licence", 0, 1675 mActionLicence = new KAction( i18n( "Licence" ), "licence", 0,
1610 this, SLOT( showLicence() ), actionCollection(), 1676 this, SLOT( showLicence() ), actionCollection(),
1611 "licence_about_data" ); 1677 "licence_about_data" );
1612 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1678 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1613 this, SLOT( createAboutData() ), actionCollection(), 1679 this, SLOT( createAboutData() ), actionCollection(),
1614 "kaddressbook_about_data" ); 1680 "kaddressbook_about_data" );
1615#endif //KAB_EMBEDDED 1681#endif //KAB_EMBEDDED
1616 1682
1617 clipboardDataChanged(); 1683 clipboardDataChanged();
1618 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1684 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1619 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1685 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1620} 1686}
1621 1687
1622//US we need this function, to plug all actions into the correct menues. 1688//US we need this function, to plug all actions into the correct menues.
1623// KDE uses a XML format to plug the actions, but we work her without this overhead. 1689// KDE uses a XML format to plug the actions, but we work her without this overhead.
1624void KABCore::addActionsManually() 1690void KABCore::addActionsManually()
1625{ 1691{
1626//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1692//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1627 1693
1628#ifdef KAB_EMBEDDED 1694#ifdef KAB_EMBEDDED
1629 QPopupMenu *fileMenu = new QPopupMenu( this ); 1695 QPopupMenu *fileMenu = new QPopupMenu( this );
1630 QPopupMenu *editMenu = new QPopupMenu( this ); 1696 QPopupMenu *editMenu = new QPopupMenu( this );
1631 QPopupMenu *helpMenu = new QPopupMenu( this ); 1697 QPopupMenu *helpMenu = new QPopupMenu( this );
1632 1698
1633 KToolBar* tb = mMainWindow->toolBar(); 1699 KToolBar* tb = mMainWindow->toolBar();
1634 1700
1635#ifdef DESKTOP_VERSION 1701#ifdef DESKTOP_VERSION
1636 QMenuBar* mb = mMainWindow->menuBar(); 1702 QMenuBar* mb = mMainWindow->menuBar();
1637 1703
1638 //US setup menubar. 1704 //US setup menubar.
1639 //Disable the following block if you do not want to have a menubar. 1705 //Disable the following block if you do not want to have a menubar.
1640 mb->insertItem( "&File", fileMenu ); 1706 mb->insertItem( "&File", fileMenu );
1641 mb->insertItem( "&Edit", editMenu ); 1707 mb->insertItem( "&Edit", editMenu );
1642 mb->insertItem( "&View", viewMenu ); 1708 mb->insertItem( "&View", viewMenu );
1643 mb->insertItem( "&Settings", settingsMenu ); 1709 mb->insertItem( "&Settings", settingsMenu );
1644 mb->insertItem( "&Change selected", changeMenu ); 1710 mb->insertItem( "&Change selected", changeMenu );
1645 mb->insertItem( "&Help", helpMenu ); 1711 mb->insertItem( "&Help", helpMenu );
1646 mIncSearchWidget = new IncSearchWidget( tb ); 1712 mIncSearchWidget = new IncSearchWidget( tb );
1647 // tb->insertWidget(-1, 0, mIncSearchWidget); 1713 // tb->insertWidget(-1, 0, mIncSearchWidget);
1648 1714
1649#else 1715#else
1650 //US setup toolbar 1716 //US setup toolbar
1651 QMenuBar *menuBarTB = new QMenuBar( tb ); 1717 QMenuBar *menuBarTB = new QMenuBar( tb );
1652 QPopupMenu *popupBarTB = new QPopupMenu( this ); 1718 QPopupMenu *popupBarTB = new QPopupMenu( this );
1653 menuBarTB->insertItem( "ME", popupBarTB); 1719 menuBarTB->insertItem( "ME", popupBarTB);
1654 tb->insertWidget(-1, 0, menuBarTB); 1720 tb->insertWidget(-1, 0, menuBarTB);
1655 mIncSearchWidget = new IncSearchWidget( tb ); 1721 mIncSearchWidget = new IncSearchWidget( tb );
1656 1722
1657 tb->enableMoving(false); 1723 tb->enableMoving(false);
1658 popupBarTB->insertItem( "&File", fileMenu ); 1724 popupBarTB->insertItem( "&File", fileMenu );
1659 popupBarTB->insertItem( "&Edit", editMenu ); 1725 popupBarTB->insertItem( "&Edit", editMenu );
1660 popupBarTB->insertItem( "&View", viewMenu ); 1726 popupBarTB->insertItem( "&View", viewMenu );
1661 popupBarTB->insertItem( "&Settings", settingsMenu ); 1727 popupBarTB->insertItem( "&Settings", settingsMenu );
1662 mViewManager->getFilterAction()->plug ( popupBarTB); 1728 mViewManager->getFilterAction()->plug ( popupBarTB);
1663 popupBarTB->insertItem( "&Change selected", changeMenu ); 1729 popupBarTB->insertItem( "&Change selected", changeMenu );
1664 popupBarTB->insertItem( "&Help", helpMenu ); 1730 popupBarTB->insertItem( "&Help", helpMenu );
1665 if (QApplication::desktop()->width() > 320 ) { 1731 if (QApplication::desktop()->width() > 320 ) {
1666 // mViewManager->getFilterAction()->plug ( tb); 1732 // mViewManager->getFilterAction()->plug ( tb);
1667 } 1733 }
1668#endif 1734#endif
1669 // mActionQuit->plug ( mMainWindow->toolBar()); 1735 // mActionQuit->plug ( mMainWindow->toolBar());
1670 1736
1671 1737
1672 1738
1673 //US Now connect the actions with the menue entries. 1739 //US Now connect the actions with the menue entries.
1674 mActionPrint->plug( fileMenu ); 1740 mActionPrint->plug( fileMenu );
1675 mActionMail->plug( fileMenu ); 1741 mActionMail->plug( fileMenu );
1676 fileMenu->insertSeparator(); 1742 fileMenu->insertSeparator();
1677 1743
1678 mActionNewContact->plug( fileMenu ); 1744 mActionNewContact->plug( fileMenu );
1679 mActionNewContact->plug( tb ); 1745 mActionNewContact->plug( tb );
1680 1746
1681 mActionEditAddressee->plug( fileMenu ); 1747 mActionEditAddressee->plug( fileMenu );
1748 mActionEditAddressee->plug( tb );
1682 fileMenu->insertSeparator(); 1749 fileMenu->insertSeparator();
1683 mActionSave->plug( fileMenu ); 1750 mActionSave->plug( fileMenu );
1684 fileMenu->insertItem( "&Import", ImportMenu ); 1751 fileMenu->insertItem( "&Import", ImportMenu );
1685 fileMenu->insertItem( "&Emport", ExportMenu ); 1752 fileMenu->insertItem( "&Emport", ExportMenu );
1686 fileMenu->insertSeparator(); 1753 fileMenu->insertSeparator();
1687 mActionMailVCard->plug( fileMenu ); 1754 mActionMailVCard->plug( fileMenu );
1688#ifndef DESKTOP_VERSION 1755#ifndef DESKTOP_VERSION
1689 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu ); 1756 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu );
1690 if ( Ir::supported() ) mActionBeam->plug(fileMenu ); 1757 if ( Ir::supported() ) mActionBeam->plug(fileMenu );
1691#endif 1758#endif
1692 fileMenu->insertSeparator(); 1759 fileMenu->insertSeparator();
1693 mActionQuit->plug( fileMenu ); 1760 mActionQuit->plug( fileMenu );
1694#ifdef _WIN32_ 1761#ifdef _WIN32_
1695 mActionImportOL->plug( ImportMenu ); 1762 mActionImportOL->plug( ImportMenu );
1696#endif 1763#endif
1697 // edit menu 1764 // edit menu
1698 mActionUndo->plug( editMenu ); 1765 mActionUndo->plug( editMenu );
1699 mActionRedo->plug( editMenu ); 1766 mActionRedo->plug( editMenu );
1700 editMenu->insertSeparator(); 1767 editMenu->insertSeparator();
1701 mActionCut->plug( editMenu ); 1768 mActionCut->plug( editMenu );
1702 mActionCopy->plug( editMenu ); 1769 mActionCopy->plug( editMenu );
1703 mActionPaste->plug( editMenu ); 1770 mActionPaste->plug( editMenu );
1704 mActionDelete->plug( editMenu ); 1771 mActionDelete->plug( editMenu );
1705 editMenu->insertSeparator(); 1772 editMenu->insertSeparator();
1706 mActionSelectAll->plug( editMenu ); 1773 mActionSelectAll->plug( editMenu );
1707 1774
1708 mActionRemoveVoice->plug( changeMenu ); 1775 mActionRemoveVoice->plug( changeMenu );
1709 // settings menu 1776 // settings menu
1710//US special menuentry to configure the addressbook resources. On KDE 1777//US special menuentry to configure the addressbook resources. On KDE
1711// you do that through the control center !!! 1778// you do that through the control center !!!
1712 mActionConfigResources->plug( settingsMenu ); 1779 mActionConfigResources->plug( settingsMenu );
1713 settingsMenu->insertSeparator(); 1780 settingsMenu->insertSeparator();
1714 1781
1715 mActionConfigKAddressbook->plug( settingsMenu ); 1782 mActionConfigKAddressbook->plug( settingsMenu );
1716 1783
1717 if ( mIsPart ) { 1784 if ( mIsPart ) {
1718 mActionConfigShortcuts->plug( settingsMenu ); 1785 mActionConfigShortcuts->plug( settingsMenu );
1719 mActionConfigureToolbars->plug( settingsMenu ); 1786 mActionConfigureToolbars->plug( settingsMenu );
1720 1787
1721 } else { 1788 } else {
1722 mActionKeyBindings->plug( settingsMenu ); 1789 mActionKeyBindings->plug( settingsMenu );
1723 } 1790 }
1724 1791
1725 settingsMenu->insertSeparator(); 1792 settingsMenu->insertSeparator();
1726 1793
1727 mActionJumpBar->plug( settingsMenu ); 1794 mActionJumpBar->plug( settingsMenu );
1728 mActionDetails->plug( settingsMenu ); 1795 mActionDetails->plug( settingsMenu );
1796 if (KGlobal::getDesktopSize() == KGlobal::Small )
1797 mActionDetails->plug( tb );
1729 settingsMenu->insertSeparator(); 1798 settingsMenu->insertSeparator();
1730 1799
1731 mActionWhoAmI->plug( settingsMenu ); 1800 mActionWhoAmI->plug( settingsMenu );
1732 mActionCategories->plug( settingsMenu ); 1801 mActionCategories->plug( settingsMenu );
1733 1802
1734 mActionAboutKAddressbook->plug( helpMenu ); 1803 mActionAboutKAddressbook->plug( helpMenu );
1735 mActionLicence->plug( helpMenu ); 1804 mActionLicence->plug( helpMenu );
1736 1805
1737 if (QApplication::desktop()->width() > 320 ) { 1806 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
1738 1807
1739 mActionEditAddressee->plug( tb );
1740 mActionSave->plug( tb ); 1808 mActionSave->plug( tb );
1741 mViewManager->getFilterAction()->plug ( tb); 1809 mViewManager->getFilterAction()->plug ( tb);
1742 if (QApplication::desktop()->width() > 480 ) { 1810 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) {
1743 mActionUndo->plug( tb ); 1811 mActionUndo->plug( tb );
1744 mActionDelete->plug( tb ); 1812 mActionDelete->plug( tb );
1745 mActionRedo->plug( tb ); 1813 mActionRedo->plug( tb );
1746 } 1814 }
1747 } 1815 }
1748 //mActionQuit->plug ( tb ); 1816 //mActionQuit->plug ( tb );
1749 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 1817 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
1750 1818
1751 //US link the searchwidget first to this. 1819 //US link the searchwidget first to this.
1752 // The real linkage to the toolbar happens later. 1820 // The real linkage to the toolbar happens later.
1753//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 1821//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
1754//US tb->insertItem( mIncSearchWidget ); 1822//US tb->insertItem( mIncSearchWidget );
1755/*US 1823/*US
1756 mIncSearchWidget = new IncSearchWidget( tb ); 1824 mIncSearchWidget = new IncSearchWidget( tb );
1757 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1825 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1758 SLOT( incrementalSearch( const QString& ) ) ); 1826 SLOT( incrementalSearch( const QString& ) ) );
1759 1827
1760 mJumpButtonBar = new JumpButtonBar( this, this ); 1828 mJumpButtonBar = new JumpButtonBar( this, this );
1761 1829
1762//US topLayout->addWidget( mJumpButtonBar ); 1830//US topLayout->addWidget( mJumpButtonBar );
1763 this->layout()->add( mJumpButtonBar ); 1831 this->layout()->add( mJumpButtonBar );
1764*/ 1832*/
1765 1833
1766#endif //KAB_EMBEDDED 1834#endif //KAB_EMBEDDED
1767} 1835}
1768void KABCore::showLicence() 1836void KABCore::showLicence()
1769{ 1837{
1770 KApplication::showLicence(); 1838 KApplication::showLicence();
1771} 1839}
1772void KABCore::removeVoice() 1840void KABCore::removeVoice()
1773{ 1841{
1774 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No ) 1842 if ( KMessageBox::questionYesNo( this, i18n("After importing, phone numbers\nmay have two or more types.\n(E.g. work+voice)\nThese numbers are shown as \"other\".\nClick Yes to remove the voice type\nfrom numbers with more than one type.\n\nRemove voice type?") ) == KMessageBox::No )
1775 return; 1843 return;
1776 KABC::Addressee::List list = mViewManager->selectedAddressees(); 1844 KABC::Addressee::List list = mViewManager->selectedAddressees();
1777 KABC::Addressee::List::Iterator it; 1845 KABC::Addressee::List::Iterator it;
1778 for ( it = list.begin(); it != list.end(); ++it ) { 1846 for ( it = list.begin(); it != list.end(); ++it ) {
1779 PhoneNumber::List phoneNumbers = (*it).phoneNumbers(); 1847 PhoneNumber::List phoneNumbers = (*it).phoneNumbers();
1780 PhoneNumber::List::Iterator phoneIt; 1848 PhoneNumber::List::Iterator phoneIt;
1781 bool found = false; 1849 bool found = false;
1782 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) { 1850 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) {
1783 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found 1851 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found
1784 if ((*phoneIt).type() - PhoneNumber::Voice ) { 1852 if ((*phoneIt).type() - PhoneNumber::Voice ) {
1785 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice ); 1853 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice );
1786 (*it).insertPhoneNumber( (*phoneIt) ); 1854 (*it).insertPhoneNumber( (*phoneIt) );
1787 found = true; 1855 found = true;
1788 } 1856 }
1789 } 1857 }
1790 1858
1791 } 1859 }
1792 if ( found ) 1860 if ( found )
1793 contactModified((*it) ); 1861 contactModified((*it) );
1794 } 1862 }
1795} 1863}
1796 1864
1797 1865
1798 1866
1799void KABCore::clipboardDataChanged() 1867void KABCore::clipboardDataChanged()
1800{ 1868{
1801 1869
1802 if ( mReadWrite ) 1870 if ( mReadWrite )
1803 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 1871 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
1804 1872
1805} 1873}
1806 1874
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index 6bbdfd4..a45c4c6 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -241,128 +241,134 @@ class KABCore : public QWidget
241 */ 241 */
242 void incrementalSearch( const QString& text ); 242 void incrementalSearch( const QString& text );
243 243
244 /** 244 /**
245 Marks the address book as modified. 245 Marks the address book as modified.
246 */ 246 */
247 void setModified(); 247 void setModified();
248 /** 248 /**
249 Marks the address book as modified without refreshing the view. 249 Marks the address book as modified without refreshing the view.
250 */ 250 */
251 void setModifiedWOrefresh(); 251 void setModifiedWOrefresh();
252 252
253 /** 253 /**
254 Marks the address book as modified concerning the argument. 254 Marks the address book as modified concerning the argument.
255 */ 255 */
256 void setModified( bool modified ); 256 void setModified( bool modified );
257 257
258 /** 258 /**
259 Returns whether the address book is modified. 259 Returns whether the address book is modified.
260 */ 260 */
261 bool modified() const; 261 bool modified() const;
262 262
263 /** 263 /**
264 Called whenever an contact is modified in the contact editor 264 Called whenever an contact is modified in the contact editor
265 dialog or the quick edit. 265 dialog or the quick edit.
266 */ 266 */
267 void contactModified( const KABC::Addressee &addr ); 267 void contactModified( const KABC::Addressee &addr );
268 268
269 /** 269 /**
270 DCOP METHODS. 270 DCOP METHODS.
271 */ 271 */
272 void addEmail( QString addr ); 272 void addEmail( QString addr );
273 void importVCard( const KURL& url, bool showPreview ); 273 void importVCard( const KURL& url, bool showPreview );
274 void importVCard( const QString& vCard, bool showPreview ); 274 void importVCard( const QString& vCard, bool showPreview );
275 void newContact(); 275 void newContact();
276 QString getNameByPhone( const QString& phone ); 276 QString getNameByPhone( const QString& phone );
277 /** 277 /**
278 END DCOP METHODS 278 END DCOP METHODS
279 */ 279 */
280 280
281 /** 281 /**
282 Saves the contents of the AddressBook back to disk. 282 Saves the contents of the AddressBook back to disk.
283 */ 283 */
284 void save(); 284 void save();
285 285
286 /** 286 /**
287 Undos the last command using the undo stack. 287 Undos the last command using the undo stack.
288 */ 288 */
289 void undo(); 289 void undo();
290 290
291 /** 291 /**
292 Redos the last command that was undone, using the redo stack. 292 Redos the last command that was undone, using the redo stack.
293 */ 293 */
294 void redo(); 294 void redo();
295 295
296 /** 296 /**
297 Shows the edit dialog for the given uid. If the uid is QString::null, 297 Shows the edit dialog for the given uid. If the uid is QString::null,
298 the method will try to find a selected addressee in the view. 298 the method will try to find a selected addressee in the view.
299 */ 299 */
300 void editContact( const QString &uid /*US = QString::null*/ ); 300 void editContact( const QString &uid /*US = QString::null*/ );
301//US added a second method without defaultparameter 301//US added a second method without defaultparameter
302 void editContact2(); 302 void editContact2();
303 303
304 /** 304 /**
305 Shows the detail view for the given uid. If the uid is QString::null,
306 the method will try to find a selected addressee in the view.
307 */
308 void showContact( const QString &uid /*US = QString::null*/ );
309
310 /**
305 Launches the configuration dialog. 311 Launches the configuration dialog.
306 */ 312 */
307 void openConfigDialog(); 313 void openConfigDialog();
308 314
309 /** 315 /**
310 Launches the ldap search dialog. 316 Launches the ldap search dialog.
311 */ 317 */
312 void openLDAPDialog(); 318 void openLDAPDialog();
313 319
314 /** 320 /**
315 Creates a KAddressBookPrinter, which will display the print 321 Creates a KAddressBookPrinter, which will display the print
316 dialog and do the printing. 322 dialog and do the printing.
317 */ 323 */
318 void print(); 324 void print();
319 325
320 /** 326 /**
321 Registers a new GUI client, so plugins can register its actions. 327 Registers a new GUI client, so plugins can register its actions.
322 */ 328 */
323 void addGUIClient( KXMLGUIClient *client ); 329 void addGUIClient( KXMLGUIClient *client );
324 330
325 signals: 331 signals:
326 void contactSelected( const QString &name ); 332 void contactSelected( const QString &name );
327 void contactSelected( const QPixmap &pixmap ); 333 void contactSelected( const QPixmap &pixmap );
328 public slots: 334 public slots:
329 void setDetailsVisible( bool visible ); 335 void setDetailsVisible( bool visible );
330 void setDetailsToState(); 336 void setDetailsToState();
331 private slots: 337 private slots:
332 void setJumpButtonBarVisible( bool visible ); 338 void setJumpButtonBarVisible( bool visible );
333 void importFromOL(); 339 void importFromOL();
334 void extensionModified( const KABC::Addressee::List &list ); 340 void extensionModified( const KABC::Addressee::List &list );
335 void clipboardDataChanged(); 341 void clipboardDataChanged();
336 void updateActionMenu(); 342 void updateActionMenu();
337 void configureKeyBindings(); 343 void configureKeyBindings();
338 void removeVoice(); 344 void removeVoice();
339#ifdef KAB_EMBEDDED 345#ifdef KAB_EMBEDDED
340 void configureResources(); 346 void configureResources();
341#endif //KAB_EMBEDDED 347#endif //KAB_EMBEDDED
342 348
343 void slotEditorDestroyed( const QString &uid ); 349 void slotEditorDestroyed( const QString &uid );
344 void configurationChanged(); 350 void configurationChanged();
345 void addressBookChanged(); 351 void addressBookChanged();
346 352
347 private: 353 private:
348 void initGUI(); 354 void initGUI();
349 void initActions(); 355 void initActions();
350 356
351 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent, 357 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent,
352 const char *name = 0 ); 358 const char *name = 0 );
353 359
354 KXMLGUIClient *mGUIClient; 360 KXMLGUIClient *mGUIClient;
355 361
356 KABC::AddressBook *mAddressBook; 362 KABC::AddressBook *mAddressBook;
357 363
358 ViewManager *mViewManager; 364 ViewManager *mViewManager;
359 // QSplitter *mDetailsSplitter; 365 // QSplitter *mDetailsSplitter;
360 KDGanttMinimizeSplitter *mExtensionBarSplitter; 366 KDGanttMinimizeSplitter *mExtensionBarSplitter;
361 ViewContainer *mDetails; 367 ViewContainer *mDetails;
362 KDGanttMinimizeSplitter* mMiniSplitter; 368 KDGanttMinimizeSplitter* mMiniSplitter;
363 XXPortManager *mXXPortManager; 369 XXPortManager *mXXPortManager;
364 JumpButtonBar *mJumpButtonBar; 370 JumpButtonBar *mJumpButtonBar;
365 IncSearchWidget *mIncSearchWidget; 371 IncSearchWidget *mIncSearchWidget;
366 ExtensionManager *mExtensionManager; 372 ExtensionManager *mExtensionManager;
367 373
368 KCMultiDialog *mConfigureDialog; 374 KCMultiDialog *mConfigureDialog;