summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Unidiff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp254
-rw-r--r--kaddressbook/kabprefs.cpp47
-rw-r--r--kaddressbook/kabprefs.h58
-rw-r--r--kaddressbook/kcmconfigs/kabconfigwidget.cpp167
-rw-r--r--kaddressbook/kcmconfigs/kabconfigwidget.h48
5 files changed, 367 insertions, 207 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index a7ca0ce..2a54900 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -18,13 +18,13 @@
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 "kabcore.h" 24#include "kabcore.h"
25 25
26#include <stdaddressbook.h> 26#include <stdaddressbook.h>
27#include <klocale.h> 27#include <klocale.h>
28 28
29#ifndef KAB_EMBEDDED 29#ifndef KAB_EMBEDDED
30#include <qclipboard.h> 30#include <qclipboard.h>
@@ -75,30 +75,42 @@
75#include <kiconloader.h> // needed for SmallIcon 75#include <kiconloader.h> // needed for SmallIcon
76#include <kresources/kcmkresources.h> 76#include <kresources/kcmkresources.h>
77#include <ktoolbar.h> 77#include <ktoolbar.h>
78 78
79#include <kcmkabconfig.h> 79#include <kcmkabconfig.h>
80 80
81//US#include <qpe/resource.h> // needed for Resource::loadPixmap
82//#include <qlabel.h> 81//#include <qlabel.h>
82
83
84#ifdef Q_WS_QWS
85#include <qtopia/services.h>
86#include <qtopia/qcopenvelope_qws.h>
87#endif
88
83#endif // KAB_EMBEDDED 89#endif // KAB_EMBEDDED
84#include <kcmkabconfig.h> 90#include <kcmkabconfig.h>
85 91
86 92
87#include <kresources/selectdialog.h> 93#include <kresources/selectdialog.h>
88#include <kmessagebox.h> 94#include <kmessagebox.h>
89 95
90#include <picture.h> 96#include <picture.h>
91#include <resource.h> 97#include <resource.h>
92 98
93//US#include <qsplitter.h> 99//US#include <qsplitter.h>
100#include <qmap.h>
101#include <qdir.h>
102#include <qfile.h>
94#include <qvbox.h> 103#include <qvbox.h>
95#include <qlayout.h> 104#include <qlayout.h>
96#include <qclipboard.h> 105#include <qclipboard.h>
106#include <qtextstream.h>
97 107
98#include <libkdepim/categoryselectdialog.h> 108#include <libkdepim/categoryselectdialog.h>
109#include <kabc/vcardconverter.h>
110
99 111
100#include "addresseeutil.h" 112#include "addresseeutil.h"
101#include "undocmds.h" 113#include "undocmds.h"
102#include "addresseeeditordialog.h" 114#include "addresseeeditordialog.h"
103#include "viewmanager.h" 115#include "viewmanager.h"
104#include "details/detailsviewcontainer.h" 116#include "details/detailsviewcontainer.h"
@@ -126,26 +138,23 @@ KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, con
126KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 138KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
127 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 139 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
128 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 140 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
129 mReadWrite( readWrite ), mModified( false ) 141 mReadWrite( readWrite ), mModified( false )
130#endif //KAB_EMBEDDED 142#endif //KAB_EMBEDDED
131{ 143{
132#ifdef KAB_EMBEDDED 144
133 //US we define here our own global actioncollection.
134 //mActionCollection = new KActionCollection(this);
135#endif //KAB_EMBEDDED
136 mExtensionBarSplitter = 0; 145 mExtensionBarSplitter = 0;
137 mIsPart = !parent->inherits( "KAddressBookMain" ); 146 mIsPart = !parent->inherits( "KAddressBookMain" );
138 147
139 mAddressBook = KABC::StdAddressBook::self(); 148 mAddressBook = KABC::StdAddressBook::self();
140 KABC::StdAddressBook::setAutomaticSave( false ); 149 KABC::StdAddressBook::setAutomaticSave( false );
141 150
142#ifndef KAB_EMBEDDED 151#ifndef KAB_EMBEDDED
143 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 152 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
144#endif //KAB_EMBEDDED 153#endif //KAB_EMBEDDED
145 154
146 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 155 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
147 SLOT( addressBookChanged() ) ); 156 SLOT( addressBookChanged() ) );
148 157
149 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 158 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
150 "X-Department", "KADDRESSBOOK" ); 159 "X-Department", "KADDRESSBOOK" );
151 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 160 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
@@ -159,14 +168,14 @@ KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const
159 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 168 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
160 "X-Office", "KADDRESSBOOK" ); 169 "X-Office", "KADDRESSBOOK" );
161 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 170 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
162 "X-IMAddress", "KADDRESSBOOK" ); 171 "X-IMAddress", "KADDRESSBOOK" );
163 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 172 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
164 "X-Anniversary", "KADDRESSBOOK" ); 173 "X-Anniversary", "KADDRESSBOOK" );
165 174
166 //US added this field to become compatible with Opie/qtopia addressbook 175 //US added this field to become compatible with Opie/qtopia addressbook
167 // values can be "female" or "male" or "". An empty field represents undefined. 176 // values can be "female" or "male" or "". An empty field represents undefined.
168 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 177 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
169 "X-Gender", "KADDRESSBOOK" ); 178 "X-Gender", "KADDRESSBOOK" );
170 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 179 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
171 "X-Children", "KADDRESSBOOK" ); 180 "X-Children", "KADDRESSBOOK" );
172 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 181 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
@@ -192,19 +201,20 @@ KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const
192 SLOT( setModified() ) ); 201 SLOT( setModified() ) );
193 202
194 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 203 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
195 SLOT( incrementalSearch( const QString& ) ) ); 204 SLOT( incrementalSearch( const QString& ) ) );
196 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 205 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
197 mJumpButtonBar, SLOT( recreateButtons() ) ); 206 mJumpButtonBar, SLOT( recreateButtons() ) );
198 207
208 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
209 SLOT( sendMail( const QString& ) ) );
210
199#ifndef KAB_EMBEDDED 211#ifndef KAB_EMBEDDED
200 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 212 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
201 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 213 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
202 214
203 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
204 SLOT( sendMail( const QString& ) ) );
205 connect( mDetails, SIGNAL( browse( const QString& ) ), 215 connect( mDetails, SIGNAL( browse( const QString& ) ),
206 SLOT( browse( const QString& ) ) ); 216 SLOT( browse( const QString& ) ) );
207 217
208 mAddressBookService = new KAddressBookService( this ); 218 mAddressBookService = new KAddressBookService( this );
209 219
210#endif //KAB_EMBEDDED 220#endif //KAB_EMBEDDED
@@ -218,27 +228,21 @@ KABCore::~KABCore()
218 // save(); 228 // save();
219 //saveSettings(); 229 //saveSettings();
220 //KABPrefs::instance()->writeConfig(); 230 //KABPrefs::instance()->writeConfig();
221 delete AddresseeConfig::instance(); 231 delete AddresseeConfig::instance();
222 mAddressBook = 0; 232 mAddressBook = 0;
223 KABC::StdAddressBook::close(); 233 KABC::StdAddressBook::close();
224
225#ifdef KAB_EMBEDDED
226 //US we define here our own global actioncollection.
227 // delete mActionCollection;
228#endif //KAB_EMBEDDED
229
230} 234}
231 235
232void KABCore::restoreSettings() 236void KABCore::restoreSettings()
233{ 237{
234 bool state = KABPrefs::instance()->mJumpButtonBarVisible; 238 bool state = KABPrefs::instance()->mJumpButtonBarVisible;
235 239
236 mActionJumpBar->setChecked( state ); 240 mActionJumpBar->setChecked( state );
237 setJumpButtonBarVisible( state ); 241 setJumpButtonBarVisible( state );
238 242
239 state = KABPrefs::instance()->mDetailsPageVisible; 243 state = KABPrefs::instance()->mDetailsPageVisible;
240 244
241 mActionDetails->setChecked( state ); 245 mActionDetails->setChecked( state );
242 setDetailsVisible( state ); 246 setDetailsVisible( state );
243 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 247 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
244 if ( splitterSize.count() == 0 ) { 248 if ( splitterSize.count() == 0 ) {
@@ -291,15 +295,15 @@ void KABCore::saveSettings()
291 295
292 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 296 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
293 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 297 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
294#endif //KAB_EMBEDDED 298#endif //KAB_EMBEDDED
295 mExtensionManager->saveSettings(); 299 mExtensionManager->saveSettings();
296 mViewManager->saveSettings(); 300 mViewManager->saveSettings();
297 301
298 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 302 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
299 303
300} 304}
301 305
302KABC::AddressBook *KABCore::addressBook() const 306KABC::AddressBook *KABCore::addressBook() const
303{ 307{
304 return mAddressBook; 308 return mAddressBook;
305} 309}
@@ -375,25 +379,25 @@ void KABCore::createAboutData()
375 "michel@klaralvdalens-datakonsult.se" ); 379 "michel@klaralvdalens-datakonsult.se" );
376 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 380 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
377 "hansen@kde.org" ); 381 "hansen@kde.org" );
378 382
379 return about; 383 return about;
380#endif //KAB_EMBEDDED 384#endif //KAB_EMBEDDED
381 385
382 QString version; 386 QString version;
383#include <../version> 387#include <../version>
384 QMessageBox::about( this, "About KAddressbook/Pi", 388 QMessageBox::about( this, "About KAddressbook/Pi",
385 "KAddressbook/Platform-independent\n" 389 "KAddressbook/Platform-independent\n"
386 "(KA/Pi) " +version + " - " + 390 "(KA/Pi) " +version + " - " +
387#ifdef DESKTOP_VERSION 391#ifdef DESKTOP_VERSION
388 "Desktop Edition\n" 392 "Desktop Edition\n"
389#else 393#else
390 "PDA-Edition\n" 394 "PDA-Edition\n"
391 "for: Zaurus 5500 / 7x0 / 8x0\n" 395 "for: Zaurus 5500 / 7x0 / 8x0\n"
392#endif 396#endif
393 397
394 "(c) 2004 Ulf Schenk\n" 398 "(c) 2004 Ulf Schenk\n"
395 "(c) 1997-2003, The KDE PIM Team\n" 399 "(c) 1997-2003, The KDE PIM Team\n"
396 "Tobias Koenig Current maintainer tokoe@kde.org\n" 400 "Tobias Koenig Current maintainer tokoe@kde.org\n"
397 "Don Sanders Original author\n" 401 "Don Sanders Original author\n"
398 "Cornelius Schumacher Co-maintainer schumacher@kde.org\n" 402 "Cornelius Schumacher Co-maintainer schumacher@kde.org\n"
399 "Mike Pilone GUI and framework redesign mpilone@slac.com\n" 403 "Mike Pilone GUI and framework redesign mpilone@slac.com\n"
@@ -415,19 +419,19 @@ void KABCore::setContactSelected( const QString &uid )
415 419
416 if ( !addr.isEmpty() ) { 420 if ( !addr.isEmpty() ) {
417 emit contactSelected( addr.formattedName() ); 421 emit contactSelected( addr.formattedName() );
418 KABC::Picture pic = addr.photo(); 422 KABC::Picture pic = addr.photo();
419 if ( pic.isIntern() ) { 423 if ( pic.isIntern() ) {
420//US emit contactSelected( pic.data() ); 424//US emit contactSelected( pic.data() );
421//US instead use: 425//US instead use:
422 QPixmap px; 426 QPixmap px;
423 if (pic.data().isNull() != true) 427 if (pic.data().isNull() != true)
424 { 428 {
425 px.convertFromImage(pic.data()); 429 px.convertFromImage(pic.data());
426 } 430 }
427 431
428 emit contactSelected( px ); 432 emit contactSelected( px );
429 } 433 }
430 } 434 }
431 435
432 436
433 mExtensionManager->setSelectionChanged(); 437 mExtensionManager->setSelectionChanged();
@@ -448,53 +452,70 @@ void KABCore::setContactSelected( const QString &uid )
448 mActionWhoAmI->setEnabled( selected ); 452 mActionWhoAmI->setEnabled( selected );
449 mActionCategories->setEnabled( selected ); 453 mActionCategories->setEnabled( selected );
450} 454}
451 455
452void KABCore::sendMail() 456void KABCore::sendMail()
453{ 457{
454#ifndef KAB_EMBEDDED
455 sendMail( mViewManager->selectedEmails().join( ", " ) ); 458 sendMail( mViewManager->selectedEmails().join( ", " ) );
456#else //KAB_EMBEDDED
457 qDebug("KABCore::sendMail() ust be fixed");
458#endif //KAB_EMBEDDED
459} 459}
460 460
461void KABCore::sendMail( const QString& email ) 461void KABCore::sendMail( const QString& email )
462{ 462{
463#ifndef KAB_EMBEDDED 463//US original kde implementation : kapp->invokeMailer( email, "" );
464 kapp->invokeMailer( email, "" ); 464
465#else //KAB_EMBEDDED 465/*US original qtopia implementation
466 qDebug("KABCore::sendMail(const QString& email) ust be fixed"); 466 PimContact c = abList->currentEntry();
467#endif //KAB_EMBEDDED 467 QString name = c.fileAs();
468 QString email = c.defaultEmail();
469#ifndef QT_NO_COP
470 QCopEnvelope e(Service::channel("Email"), "writeMail(QString,QString)");
471 e << name << email;
472#else
473*/
474
475
476#ifndef QT_NO_COP
477 QCString channel = KABPrefs::instance()->mEmailChannel.latin1();
478 qDebug("Using QCopEnvelope e(\"" + channel + "\", \"writeMail(QMap(QString,QString))\")");
479
480 QCopEnvelope e(channel, "writeMail(QString,QString)");
481 //US we need no names in the To field. The emailadresses are enough
482 e << "" << email;
483#else
484 KMessageBox::sorry( this, i18n( "This version does not support sending emails." ) );
485#endif
468} 486}
469 487
470void KABCore::mailVCard() 488void KABCore::mailVCard()
471{ 489{
472#ifndef KAB_EMBEDDED
473 QStringList uids = mViewManager->selectedUids(); 490 QStringList uids = mViewManager->selectedUids();
474 if ( !uids.isEmpty() ) 491 if ( !uids.isEmpty() )
475 mailVCard( uids ); 492 mailVCard( uids );
476#else //KAB_EMBEDDED
477 qDebug("KABCore::mailVCard() must be fixed");
478#endif //KAB_EMBEDDED
479} 493}
480 494
481void KABCore::mailVCard( const QStringList& uids ) 495void KABCore::mailVCard( const QStringList& uids )
482{ 496{
483#ifndef KAB_EMBEDDED
484 QStringList urls; 497 QStringList urls;
485 498
499 QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
500
501/*US
486 // Create a temp dir, so that we can put the files in it with proper names 502 // Create a temp dir, so that we can put the files in it with proper names
487 KTempFile tempDir; 503 KTempFile tempDir;
488 if ( tempDir.status() != 0 ) { 504 if ( tempDir.status() != 0 ) {
489 kdWarning() << strerror( tempDir.status() ) << endl; 505 kdWarning() << strerror( tempDir.status() ) << endl;
490 return; 506 return;
491 } 507 }
492 508
493 QString dirName = tempDir.name(); 509 QString dirName = tempDir.name();
494 tempDir.unlink(); 510 tempDir.unlink();
511*/
512 QString dirName = tmpdir + "/" + KApplication::randomString( 8 );
513
514
515
495 QDir().mkdir( dirName, true ); 516 QDir().mkdir( dirName, true );
496 517
497 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 518 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
498 KABC::Addressee a = mAddressBook->findByUid( *it ); 519 KABC::Addressee a = mAddressBook->findByUid( *it );
499 520
500 if ( a.isEmpty() ) 521 if ( a.isEmpty() )
@@ -517,21 +538,32 @@ void KABCore::mailVCard( const QStringList& uids )
517 538
518 outFile.close(); 539 outFile.close();
519 540
520 urls.append( fileName ); 541 urls.append( fileName );
521 } 542 }
522 } 543 }
523 544/*US
524 kapp->invokeMailer( QString::null, QString::null, QString::null, 545 kapp->invokeMailer( QString::null, QString::null, QString::null,
525 QString::null, // subject 546 QString::null, // subject
526 QString::null, // body 547 QString::null, // body
527 QString::null, 548 QString::null,
528 urls ); // attachments 549 urls ); // attachments
529#else //KAB_EMBEDDED 550*/
530 qDebug("KABCore::mailVCard( must be fixed"); 551#ifndef QT_NO_COP
531#endif //KAB_EMBEDDED 552 QCString channel = KABPrefs::instance()->mEmailChannel.latin1();
553 qDebug("Using QCopEnvelope e(\"" + channel + "\", \"writeMail(QMap(QString,QString))\")");
554
555 QMap<QString, QString> parameterMap;
556 parameterMap.insert("ATTACHMENT<n>", urls.join(", "));
557
558 QCopEnvelope e(channel, "writeMail(QMap(QString,QString))");
559 e << parameterMap;
560#else
561 KMessageBox::sorry( this, i18n( "This version does not support sending emails." ) );
562#endif
563
532 564
533} 565}
534 566
535void KABCore::browse( const QString& url ) 567void KABCore::browse( const QString& url )
536{ 568{
537#ifndef KAB_EMBEDDED 569#ifndef KAB_EMBEDDED
@@ -749,23 +781,23 @@ void KABCore::setModified( bool modified )
749 781
750 if ( modified ) 782 if ( modified )
751 mJumpButtonBar->recreateButtons(); 783 mJumpButtonBar->recreateButtons();
752 784
753 mViewManager->refreshView(); 785 mViewManager->refreshView();
754 mDetails->refreshView(); 786 mDetails->refreshView();
755 787
756} 788}
757 789
758bool KABCore::modified() const 790bool KABCore::modified() const
759{ 791{
760 return mModified; 792 return mModified;
761} 793}
762 794
763void KABCore::contactModified( const KABC::Addressee &addr ) 795void KABCore::contactModified( const KABC::Addressee &addr )
764{ 796{
765 797
766 Command *command = 0; 798 Command *command = 0;
767 QString uid; 799 QString uid;
768 800
769 // check if it exists already 801 // check if it exists already
770 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 802 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
771 if ( origAddr.isEmpty() ) 803 if ( origAddr.isEmpty() )
@@ -803,20 +835,20 @@ void KABCore::newContact()
803 resource = static_cast<KABC::Resource*>( res ); 835 resource = static_cast<KABC::Resource*>( res );
804 836
805 if ( resource ) { 837 if ( resource ) {
806 KABC::Addressee addr; 838 KABC::Addressee addr;
807 addr.setResource( resource ); 839 addr.setResource( resource );
808 mEditorDialog->setAddressee( addr ); 840 mEditorDialog->setAddressee( addr );
809 KApplication::execDialog ( mEditorDialog ); 841 KApplication::execDialog ( mEditorDialog );
810 842
811 } else 843 } else
812 return; 844 return;
813 845
814 // mEditorDict.insert( dialog->addressee().uid(), dialog ); 846 // mEditorDict.insert( dialog->addressee().uid(), dialog );
815 847
816 848
817} 849}
818 850
819void KABCore::addEmail( QString aStr ) 851void KABCore::addEmail( QString aStr )
820{ 852{
821#ifndef KAB_EMBEDDED 853#ifndef KAB_EMBEDDED
822 QString fullName, email; 854 QString fullName, email;
@@ -885,13 +917,13 @@ void KABCore::importFromOL()
885 917
886void KABCore::importVCard( const QString &vCard, bool showPreview ) 918void KABCore::importVCard( const QString &vCard, bool showPreview )
887{ 919{
888 mXXPortManager->importVCard( vCard, showPreview ); 920 mXXPortManager->importVCard( vCard, showPreview );
889} 921}
890 922
891//US added a second method without defaultparameter 923//US added a second method without defaultparameter
892void KABCore::editContact2() { 924void KABCore::editContact2() {
893 editContact( QString::null ); 925 editContact( QString::null );
894} 926}
895 927
896void KABCore::editContact( const QString &uid ) 928void KABCore::editContact( const QString &uid )
897{ 929{
@@ -978,28 +1010,28 @@ void KABCore::setDetailsVisible( bool visible )
978 else 1010 else
979 mDetails->hide(); 1011 mDetails->hide();
980} 1012}
981 1013
982void KABCore::extensionModified( const KABC::Addressee::List &list ) 1014void KABCore::extensionModified( const KABC::Addressee::List &list )
983{ 1015{
984 1016
985 if ( list.count() != 0 ) { 1017 if ( list.count() != 0 ) {
986 KABC::Addressee::List::ConstIterator it; 1018 KABC::Addressee::List::ConstIterator it;
987 for ( it = list.begin(); it != list.end(); ++it ) 1019 for ( it = list.begin(); it != list.end(); ++it )
988 mAddressBook->insertAddressee( *it ); 1020 mAddressBook->insertAddressee( *it );
989 if ( list.count() > 1 ) 1021 if ( list.count() > 1 )
990 setModified(); 1022 setModified();
991 else 1023 else
992 setModifiedWOrefresh(); 1024 setModifiedWOrefresh();
993 } 1025 }
994 if ( list.count() == 0 ) 1026 if ( list.count() == 0 )
995 mViewManager->refreshView(); 1027 mViewManager->refreshView();
996 else 1028 else
997 mViewManager->refreshView( list[ 0 ].uid() ); 1029 mViewManager->refreshView( list[ 0 ].uid() );
998 1030
999 1031
1000 1032
1001} 1033}
1002 1034
1003QString KABCore::getNameByPhone( const QString &phone ) 1035QString KABCore::getNameByPhone( const QString &phone )
1004{ 1036{
1005#ifndef KAB_EMBEDDED 1037#ifndef KAB_EMBEDDED
@@ -1025,13 +1057,13 @@ QString KABCore::getNameByPhone( const QString &phone )
1025 1057
1026 return ownerName; 1058 return ownerName;
1027#else //KAB_EMBEDDED 1059#else //KAB_EMBEDDED
1028 qDebug("KABCore::getNameByPhone finsih method"); 1060 qDebug("KABCore::getNameByPhone finsih method");
1029 return ""; 1061 return "";
1030#endif //KAB_EMBEDDED 1062#endif //KAB_EMBEDDED
1031 1063
1032} 1064}
1033 1065
1034void KABCore::openConfigDialog() 1066void KABCore::openConfigDialog()
1035{ 1067{
1036 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1068 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1037 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1069 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
@@ -1182,13 +1214,13 @@ void KABCore::initGUI()
1182 topLayout->addWidget( mJumpButtonBar ); 1214 topLayout->addWidget( mJumpButtonBar );
1183 topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1215 topLayout->setStretchFactor( mJumpButtonBar, 1 );
1184 1216
1185 mXXPortManager = new XXPortManager( this, this ); 1217 mXXPortManager = new XXPortManager( this, this );
1186 1218
1187#else //KAB_EMBEDDED 1219#else //KAB_EMBEDDED
1188 //US initialize viewMenu before settingup viewmanager. 1220 //US initialize viewMenu before settingup viewmanager.
1189 // Viewmanager needs this menu to plugin submenues. 1221 // Viewmanager needs this menu to plugin submenues.
1190 viewMenu = new QPopupMenu( this ); 1222 viewMenu = new QPopupMenu( this );
1191 settingsMenu = new QPopupMenu( this ); 1223 settingsMenu = new QPopupMenu( this );
1192 //filterMenu = new QPopupMenu( this ); 1224 //filterMenu = new QPopupMenu( this );
1193 ImportMenu = new QPopupMenu( this ); 1225 ImportMenu = new QPopupMenu( this );
1194 ExportMenu = new QPopupMenu( this ); 1226 ExportMenu = new QPopupMenu( this );
@@ -1199,23 +1231,23 @@ void KABCore::initGUI()
1199// a layout with two frames. One left and one right. 1231// a layout with two frames. One left and one right.
1200 1232
1201 QBoxLayout *topLayout; 1233 QBoxLayout *topLayout;
1202 1234
1203 // = new QHBoxLayout( this ); 1235 // = new QHBoxLayout( this );
1204// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1236// QBoxLayout *topLayout = (QBoxLayout*)layout();
1205 1237
1206// QWidget *mainBox = new QWidget( this ); 1238// QWidget *mainBox = new QWidget( this );
1207// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1239// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1208 1240
1209#ifdef DESKTOP_VERSION 1241#ifdef DESKTOP_VERSION
1210 topLayout = new QHBoxLayout( this ); 1242 topLayout = new QHBoxLayout( this );
1211 1243
1212 1244
1213 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1245 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1214 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1246 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1215 1247
1216 topLayout->addWidget(mMiniSplitter ); 1248 topLayout->addWidget(mMiniSplitter );
1217 1249
1218 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1250 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1219 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1251 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1220 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1252 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1221 mDetails = new ViewContainer( mMiniSplitter ); 1253 mDetails = new ViewContainer( mMiniSplitter );
@@ -1228,24 +1260,24 @@ void KABCore::initGUI()
1228 } else { 1260 } else {
1229 1261
1230 topLayout = new QHBoxLayout( this ); 1262 topLayout = new QHBoxLayout( this );
1231 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1263 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1232 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1264 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1233 } 1265 }
1234 1266
1235 topLayout->addWidget(mMiniSplitter ); 1267 topLayout->addWidget(mMiniSplitter );
1236 mViewManager = new ViewManager( this, mMiniSplitter ); 1268 mViewManager = new ViewManager( this, mMiniSplitter );
1237 mDetails = new ViewContainer( mMiniSplitter ); 1269 mDetails = new ViewContainer( mMiniSplitter );
1238 1270
1239 1271
1240 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1272 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1241#endif 1273#endif
1242 //eh->hide(); 1274 //eh->hide();
1243 // topLayout->addWidget(mExtensionManager ); 1275 // topLayout->addWidget(mExtensionManager );
1244 1276
1245 1277
1246/*US 1278/*US
1247#ifndef KAB_NOSPLITTER 1279#ifndef KAB_NOSPLITTER
1248 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1280 QHBoxLayout *topLayout = new QHBoxLayout( this );
1249//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1281//US topLayout->setSpacing( KDialogBase::spacingHint() );
1250 topLayout->setSpacing( 10 ); 1282 topLayout->setSpacing( 10 );
1251 1283
@@ -1254,13 +1286,13 @@ void KABCore::initGUI()
1254 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1286 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1255 1287
1256 mViewManager = new ViewManager( this, viewSpace ); 1288 mViewManager = new ViewManager( this, viewSpace );
1257 viewSpace->setStretchFactor( mViewManager, 1 ); 1289 viewSpace->setStretchFactor( mViewManager, 1 );
1258 1290
1259 mDetails = new ViewContainer( mDetailsSplitter ); 1291 mDetails = new ViewContainer( mDetailsSplitter );
1260 1292
1261 topLayout->addWidget( mDetailsSplitter ); 1293 topLayout->addWidget( mDetailsSplitter );
1262 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1294 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1263#else //KAB_NOSPLITTER 1295#else //KAB_NOSPLITTER
1264 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1296 QHBoxLayout *topLayout = new QHBoxLayout( this );
1265//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1297//US topLayout->setSpacing( KDialogBase::spacingHint() );
1266 topLayout->setSpacing( 10 ); 1298 topLayout->setSpacing( 10 );
@@ -1277,13 +1309,13 @@ void KABCore::initGUI()
1277 topLayout->addWidget( viewSpace ); 1309 topLayout->addWidget( viewSpace );
1278// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1310// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1279 topLayout->addWidget( mDetails ); 1311 topLayout->addWidget( mDetails );
1280#endif //KAB_NOSPLITTER 1312#endif //KAB_NOSPLITTER
1281*/ 1313*/
1282 1314
1283 1315
1284#endif //KAB_EMBEDDED 1316#endif //KAB_EMBEDDED
1285 initActions(); 1317 initActions();
1286 1318
1287#ifdef KAB_EMBEDDED 1319#ifdef KAB_EMBEDDED
1288 addActionsManually(); 1320 addActionsManually();
1289 //US make sure the export and import menues are initialized before creating the xxPortManager. 1321 //US make sure the export and import menues are initialized before creating the xxPortManager.
@@ -1295,51 +1327,51 @@ void KABCore::initGUI()
1295 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1327 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1296 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1328 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1297 // mIncSearchWidget->hide(); 1329 // mIncSearchWidget->hide();
1298 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1330 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1299 SLOT( incrementalSearch( const QString& ) ) ); 1331 SLOT( incrementalSearch( const QString& ) ) );
1300 1332
1301 1333
1302 mJumpButtonBar = new JumpButtonBar( this, this ); 1334 mJumpButtonBar = new JumpButtonBar( this, this );
1303 1335
1304 topLayout->addWidget( mJumpButtonBar ); 1336 topLayout->addWidget( mJumpButtonBar );
1305//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1337//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1306 1338
1307// mMainWindow->getIconToolBar()->raise(); 1339// mMainWindow->getIconToolBar()->raise();
1308 1340
1309#endif //KAB_EMBEDDED 1341#endif //KAB_EMBEDDED
1310 1342
1311} 1343}
1312void KABCore::initActions() 1344void KABCore::initActions()
1313{ 1345{
1314//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1346//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1315 1347
1316#ifndef KAB_EMBEDDED 1348#ifndef KAB_EMBEDDED
1317 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1349 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1318 SLOT( clipboardDataChanged() ) ); 1350 SLOT( clipboardDataChanged() ) );
1319#endif //KAB_EMBEDDED 1351#endif //KAB_EMBEDDED
1320 1352
1321 // file menu 1353 // file menu
1322 if ( mIsPart ) { 1354 if ( mIsPart ) {
1323 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this, 1355 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this,
1324 SLOT( sendMail() ), actionCollection(), 1356 SLOT( sendMail() ), actionCollection(),
1325 "kaddressbook_mail" ); 1357 "kaddressbook_mail" );
1326 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this, 1358 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this,
1327 SLOT( print() ), actionCollection(), "kaddressbook_print" ); 1359 SLOT( print() ), actionCollection(), "kaddressbook_print" );
1328 1360
1329 } else { 1361 } else {
1330 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1362 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1331 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1363 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1332 } 1364 }
1333 1365
1334 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1366 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1335 SLOT( save() ), actionCollection(), "file_sync" ); 1367 SLOT( save() ), actionCollection(), "file_sync" );
1336 1368
1337 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1369 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1338 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1370 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1339 1371
1340 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1372 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1341 this, SLOT( mailVCard() ), 1373 this, SLOT( mailVCard() ),
1342 actionCollection(), "file_mail_vcard"); 1374 actionCollection(), "file_mail_vcard");
1343 1375
1344 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1376 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1345 this, SLOT( editContact2() ), 1377 this, SLOT( editContact2() ),
@@ -1348,13 +1380,13 @@ void KABCore::initActions()
1348#ifdef KAB_EMBEDDED 1380#ifdef KAB_EMBEDDED
1349 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1381 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1350 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1382 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1351 mMainWindow, SLOT( exit() ), 1383 mMainWindow, SLOT( exit() ),
1352 actionCollection(), "quit" ); 1384 actionCollection(), "quit" );
1353#endif //KAB_EMBEDDED 1385#endif //KAB_EMBEDDED
1354 1386
1355 // edit menu 1387 // edit menu
1356 if ( mIsPart ) { 1388 if ( mIsPart ) {
1357 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1389 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1358 SLOT( copyContacts() ), actionCollection(), 1390 SLOT( copyContacts() ), actionCollection(),
1359 "kaddressbook_copy" ); 1391 "kaddressbook_copy" );
1360 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1392 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
@@ -1384,61 +1416,61 @@ void KABCore::initActions()
1384 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1416 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1385 Key_Delete, this, SLOT( deleteContacts() ), 1417 Key_Delete, this, SLOT( deleteContacts() ),
1386 actionCollection(), "edit_delete" ); 1418 actionCollection(), "edit_delete" );
1387 1419
1388 mActionUndo->setEnabled( false ); 1420 mActionUndo->setEnabled( false );
1389 mActionRedo->setEnabled( false ); 1421 mActionRedo->setEnabled( false );
1390 1422
1391 // settings menu 1423 // settings menu
1392#ifdef KAB_EMBEDDED 1424#ifdef KAB_EMBEDDED
1393//US special menuentry to configure the addressbook resources. On KDE 1425//US special menuentry to configure the addressbook resources. On KDE
1394// you do that through the control center !!! 1426// you do that through the control center !!!
1395 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1427 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1396 SLOT( configureResources() ), actionCollection(), 1428 SLOT( configureResources() ), actionCollection(),
1397 "kaddressbook_configure_resources" ); 1429 "kaddressbook_configure_resources" );
1398#endif //KAB_EMBEDDED 1430#endif //KAB_EMBEDDED
1399 1431
1400 if ( mIsPart ) { 1432 if ( mIsPart ) {
1401 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1433 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1402 SLOT( openConfigDialog() ), actionCollection(), 1434 SLOT( openConfigDialog() ), actionCollection(),
1403 "kaddressbook_configure" ); 1435 "kaddressbook_configure" );
1404 1436
1405 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1437 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1406 this, SLOT( configureKeyBindings() ), actionCollection(), 1438 this, SLOT( configureKeyBindings() ), actionCollection(),
1407 "kaddressbook_configure_shortcuts" ); 1439 "kaddressbook_configure_shortcuts" );
1408#ifdef KAB_EMBEDDED 1440#ifdef KAB_EMBEDDED
1409 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1441 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1410 mActionConfigureToolbars->setEnabled( false ); 1442 mActionConfigureToolbars->setEnabled( false );
1411#endif //KAB_EMBEDDED 1443#endif //KAB_EMBEDDED
1412 1444
1413 } else { 1445 } else {
1414 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1446 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1415 1447
1416 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1448 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1417 } 1449 }
1418 1450
1419 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1451 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1420 actionCollection(), "options_show_jump_bar" ); 1452 actionCollection(), "options_show_jump_bar" );
1421 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1453 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1422 1454
1423 mActionDetails = new KToggleAction( i18n( "Show Details" ), 0, 0, 1455 mActionDetails = new KToggleAction( i18n( "Show Details" ), 0, 0,
1424 actionCollection(), "options_show_details" ); 1456 actionCollection(), "options_show_details" );
1425 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1457 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1426 1458
1427 // misc 1459 // misc
1428 // only enable LDAP lookup if we can handle the protocol 1460 // only enable LDAP lookup if we can handle the protocol
1429#ifndef KAB_EMBEDDED 1461#ifndef KAB_EMBEDDED
1430 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1462 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1431 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1463 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
1432 this, SLOT( openLDAPDialog() ), actionCollection(), 1464 this, SLOT( openLDAPDialog() ), actionCollection(),
1433 "ldap_lookup" ); 1465 "ldap_lookup" );
1434 } 1466 }
1435#else //KAB_EMBEDDED 1467#else //KAB_EMBEDDED
1436 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1468 //qDebug("KABCore::initActions() LDAP has to be implemented");
1437#endif //KAB_EMBEDDED 1469#endif //KAB_EMBEDDED
1438 1470
1439 1471
1440 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1472 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1441 SLOT( setWhoAmI() ), actionCollection(), 1473 SLOT( setWhoAmI() ), actionCollection(),
1442 "set_personal" ); 1474 "set_personal" );
1443 1475
1444 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1476 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
@@ -1454,13 +1486,13 @@ void KABCore::initActions()
1454#ifdef KAB_EMBEDDED 1486#ifdef KAB_EMBEDDED
1455 1487
1456 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1488 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1457 this, SLOT( createAboutData() ), actionCollection(), 1489 this, SLOT( createAboutData() ), actionCollection(),
1458 "kaddressbook_about_data" ); 1490 "kaddressbook_about_data" );
1459#endif //KAB_EMBEDDED 1491#endif //KAB_EMBEDDED
1460 1492
1461 clipboardDataChanged(); 1493 clipboardDataChanged();
1462 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1494 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1463 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1495 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1464} 1496}
1465 1497
1466//US we need this function, to plug all actions into the correct menues. 1498//US we need this function, to plug all actions into the correct menues.
@@ -1475,32 +1507,32 @@ void KABCore::addActionsManually()
1475 QPopupMenu *helpMenu = new QPopupMenu( this ); 1507 QPopupMenu *helpMenu = new QPopupMenu( this );
1476 1508
1477 KToolBar* tb = mMainWindow->toolBar(); 1509 KToolBar* tb = mMainWindow->toolBar();
1478 1510
1479#ifdef DESKTOP_VERSION 1511#ifdef DESKTOP_VERSION
1480 QMenuBar* mb = mMainWindow->menuBar(); 1512 QMenuBar* mb = mMainWindow->menuBar();
1481 1513
1482 //US setup menubar. 1514 //US setup menubar.
1483 //Disable the following block if you do not want to have a menubar. 1515 //Disable the following block if you do not want to have a menubar.
1484 mb->insertItem( "&File", fileMenu ); 1516 mb->insertItem( "&File", fileMenu );
1485 mb->insertItem( "&Edit", editMenu ); 1517 mb->insertItem( "&Edit", editMenu );
1486 mb->insertItem( "&View", viewMenu ); 1518 mb->insertItem( "&View", viewMenu );
1487 mb->insertItem( "&Settings", settingsMenu ); 1519 mb->insertItem( "&Settings", settingsMenu );
1488 mb->insertItem( "&Change selected", changeMenu ); 1520 mb->insertItem( "&Change selected", changeMenu );
1489 mb->insertItem( "&Help", helpMenu ); 1521 mb->insertItem( "&Help", helpMenu );
1490 mIncSearchWidget = new IncSearchWidget( tb ); 1522 mIncSearchWidget = new IncSearchWidget( tb );
1491 // tb->insertWidget(-1, 0, mIncSearchWidget); 1523 // tb->insertWidget(-1, 0, mIncSearchWidget);
1492 1524
1493#else 1525#else
1494 //US setup toolbar 1526 //US setup toolbar
1495 QMenuBar *menuBarTB = new QMenuBar( tb ); 1527 QMenuBar *menuBarTB = new QMenuBar( tb );
1496 QPopupMenu *popupBarTB = new QPopupMenu( this ); 1528 QPopupMenu *popupBarTB = new QPopupMenu( this );
1497 menuBarTB->insertItem( "ME", popupBarTB); 1529 menuBarTB->insertItem( "ME", popupBarTB);
1498 tb->insertWidget(-1, 0, menuBarTB); 1530 tb->insertWidget(-1, 0, menuBarTB);
1499 mIncSearchWidget = new IncSearchWidget( tb ); 1531 mIncSearchWidget = new IncSearchWidget( tb );
1500 1532
1501 tb->enableMoving(false); 1533 tb->enableMoving(false);
1502 popupBarTB->insertItem( "&File", fileMenu ); 1534 popupBarTB->insertItem( "&File", fileMenu );
1503 popupBarTB->insertItem( "&Edit", editMenu ); 1535 popupBarTB->insertItem( "&Edit", editMenu );
1504 popupBarTB->insertItem( "&View", viewMenu ); 1536 popupBarTB->insertItem( "&View", viewMenu );
1505 popupBarTB->insertItem( "&Settings", settingsMenu ); 1537 popupBarTB->insertItem( "&Settings", settingsMenu );
1506 mViewManager->getFilterAction()->plug ( popupBarTB); 1538 mViewManager->getFilterAction()->plug ( popupBarTB);
@@ -1515,97 +1547,97 @@ void KABCore::addActionsManually()
1515 1547
1516 1548
1517 //US Now connect the actions with the menue entries. 1549 //US Now connect the actions with the menue entries.
1518 mActionPrint->plug( fileMenu ); 1550 mActionPrint->plug( fileMenu );
1519 mActionMail->plug( fileMenu ); 1551 mActionMail->plug( fileMenu );
1520 fileMenu->insertSeparator(); 1552 fileMenu->insertSeparator();
1521 1553
1522 mActionNewContact->plug( fileMenu ); 1554 mActionNewContact->plug( fileMenu );
1523 mActionNewContact->plug( tb ); 1555 mActionNewContact->plug( tb );
1524 1556
1525 mActionEditAddressee->plug( fileMenu ); 1557 mActionEditAddressee->plug( fileMenu );
1526 fileMenu->insertSeparator(); 1558 fileMenu->insertSeparator();
1527 mActionSave->plug( fileMenu ); 1559 mActionSave->plug( fileMenu );
1528 fileMenu->insertItem( "&Import", ImportMenu ); 1560 fileMenu->insertItem( "&Import", ImportMenu );
1529 fileMenu->insertItem( "&Emport", ExportMenu ); 1561 fileMenu->insertItem( "&Emport", ExportMenu );
1530 fileMenu->insertSeparator(); 1562 fileMenu->insertSeparator();
1531 mActionMailVCard->plug( fileMenu ); 1563 mActionMailVCard->plug( fileMenu );
1532 fileMenu->insertSeparator(); 1564 fileMenu->insertSeparator();
1533 mActionQuit->plug( fileMenu ); 1565 mActionQuit->plug( fileMenu );
1534#ifdef _WIN32_ 1566#ifdef _WIN32_
1535 mActionImportOL->plug( ImportMenu ); 1567 mActionImportOL->plug( ImportMenu );
1536#endif 1568#endif
1537 // edit menu 1569 // edit menu
1538 mActionUndo->plug( editMenu ); 1570 mActionUndo->plug( editMenu );
1539 mActionRedo->plug( editMenu ); 1571 mActionRedo->plug( editMenu );
1540 editMenu->insertSeparator(); 1572 editMenu->insertSeparator();
1541 mActionCut->plug( editMenu ); 1573 mActionCut->plug( editMenu );
1542 mActionCopy->plug( editMenu ); 1574 mActionCopy->plug( editMenu );
1543 mActionPaste->plug( editMenu ); 1575 mActionPaste->plug( editMenu );
1544 mActionDelete->plug( editMenu ); 1576 mActionDelete->plug( editMenu );
1545 editMenu->insertSeparator(); 1577 editMenu->insertSeparator();
1546 mActionSelectAll->plug( editMenu ); 1578 mActionSelectAll->plug( editMenu );
1547 1579
1548 mActionRemoveVoice->plug( changeMenu ); 1580 mActionRemoveVoice->plug( changeMenu );
1549 // settings menu 1581 // settings menu
1550//US special menuentry to configure the addressbook resources. On KDE 1582//US special menuentry to configure the addressbook resources. On KDE
1551// you do that through the control center !!! 1583// you do that through the control center !!!
1552 mActionConfigResources->plug( settingsMenu ); 1584 mActionConfigResources->plug( settingsMenu );
1553 settingsMenu->insertSeparator(); 1585 settingsMenu->insertSeparator();
1554 1586
1555 mActionConfigKAddressbook->plug( settingsMenu ); 1587 mActionConfigKAddressbook->plug( settingsMenu );
1556 1588
1557 if ( mIsPart ) { 1589 if ( mIsPart ) {
1558 mActionConfigShortcuts->plug( settingsMenu ); 1590 mActionConfigShortcuts->plug( settingsMenu );
1559 mActionConfigureToolbars->plug( settingsMenu ); 1591 mActionConfigureToolbars->plug( settingsMenu );
1560 1592
1561 } else { 1593 } else {
1562 mActionKeyBindings->plug( settingsMenu ); 1594 mActionKeyBindings->plug( settingsMenu );
1563 } 1595 }
1564 1596
1565 settingsMenu->insertSeparator(); 1597 settingsMenu->insertSeparator();
1566 1598
1567 mActionJumpBar->plug( settingsMenu ); 1599 mActionJumpBar->plug( settingsMenu );
1568 mActionDetails->plug( settingsMenu ); 1600 mActionDetails->plug( settingsMenu );
1569 settingsMenu->insertSeparator(); 1601 settingsMenu->insertSeparator();
1570 1602
1571 mActionWhoAmI->plug( settingsMenu ); 1603 mActionWhoAmI->plug( settingsMenu );
1572 mActionCategories->plug( settingsMenu ); 1604 mActionCategories->plug( settingsMenu );
1573 1605
1574 mActionAboutKAddressbook->plug( helpMenu ); 1606 mActionAboutKAddressbook->plug( helpMenu );
1575 1607
1576 1608
1577 if (QApplication::desktop()->width() > 320 ) { 1609 if (QApplication::desktop()->width() > 320 ) {
1578 1610
1579 mActionEditAddressee->plug( tb ); 1611 mActionEditAddressee->plug( tb );
1580 mActionSave->plug( tb ); 1612 mActionSave->plug( tb );
1581 mViewManager->getFilterAction()->plug ( tb); 1613 mViewManager->getFilterAction()->plug ( tb);
1582 if (QApplication::desktop()->width() > 480 ) { 1614 if (QApplication::desktop()->width() > 480 ) {
1583 mActionUndo->plug( tb ); 1615 mActionUndo->plug( tb );
1584 mActionDelete->plug( tb ); 1616 mActionDelete->plug( tb );
1585 mActionRedo->plug( tb ); 1617 mActionRedo->plug( tb );
1586 } 1618 }
1587 } 1619 }
1588 //mActionQuit->plug ( tb ); 1620 //mActionQuit->plug ( tb );
1589 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 1621 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
1590 1622
1591 //US link the searchwidget first to this. 1623 //US link the searchwidget first to this.
1592 // The real linkage to the toolbar happens later. 1624 // The real linkage to the toolbar happens later.
1593//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 1625//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
1594//US tb->insertItem( mIncSearchWidget ); 1626//US tb->insertItem( mIncSearchWidget );
1595/*US 1627/*US
1596 mIncSearchWidget = new IncSearchWidget( tb ); 1628 mIncSearchWidget = new IncSearchWidget( tb );
1597 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1629 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1598 SLOT( incrementalSearch( const QString& ) ) ); 1630 SLOT( incrementalSearch( const QString& ) ) );
1599 1631
1600 mJumpButtonBar = new JumpButtonBar( this, this ); 1632 mJumpButtonBar = new JumpButtonBar( this, this );
1601 1633
1602//US topLayout->addWidget( mJumpButtonBar ); 1634//US topLayout->addWidget( mJumpButtonBar );
1603 this->layout()->add( mJumpButtonBar ); 1635 this->layout()->add( mJumpButtonBar );
1604*/ 1636*/
1605 1637
1606#endif //KAB_EMBEDDED 1638#endif //KAB_EMBEDDED
1607} 1639}
1608void KABCore::removeVoice() 1640void KABCore::removeVoice()
1609{ 1641{
1610 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 ) 1642 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 )
1611 return; 1643 return;
@@ -1620,24 +1652,24 @@ void KABCore::removeVoice()
1620 if ((*phoneIt).type() - PhoneNumber::Voice ) { 1652 if ((*phoneIt).type() - PhoneNumber::Voice ) {
1621 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice ); 1653 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice );
1622 (*it).insertPhoneNumber( (*phoneIt) ); 1654 (*it).insertPhoneNumber( (*phoneIt) );
1623 found = true; 1655 found = true;
1624 } 1656 }
1625 } 1657 }
1626 1658
1627 } 1659 }
1628 if ( found ) 1660 if ( found )
1629 contactModified((*it) ); 1661 contactModified((*it) );
1630 } 1662 }
1631} 1663}
1632 1664
1633 1665
1634 1666
1635void KABCore::clipboardDataChanged() 1667void KABCore::clipboardDataChanged()
1636{ 1668{
1637 1669
1638 if ( mReadWrite ) 1670 if ( mReadWrite )
1639 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 1671 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
1640 1672
1641} 1673}
1642 1674
1643void KABCore::updateActionMenu() 1675void KABCore::updateActionMenu()
@@ -1670,13 +1702,13 @@ void KABCore::configureKeyBindings()
1670} 1702}
1671 1703
1672#ifdef KAB_EMBEDDED 1704#ifdef KAB_EMBEDDED
1673void KABCore::configureResources() 1705void KABCore::configureResources()
1674{ 1706{
1675 KRES::KCMKResources dlg( this, "" , 0 ); 1707 KRES::KCMKResources dlg( this, "" , 0 );
1676 1708
1677 if ( !dlg.exec() ) 1709 if ( !dlg.exec() )
1678 return; 1710 return;
1679 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 1711 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
1680} 1712}
1681#endif //KAB_EMBEDDED 1713#endif //KAB_EMBEDDED
1682 1714
diff --git a/kaddressbook/kabprefs.cpp b/kaddressbook/kabprefs.cpp
index 5b3b1ab..8bd4b15 100644
--- a/kaddressbook/kabprefs.cpp
+++ b/kaddressbook/kabprefs.cpp
@@ -1,26 +1,26 @@
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//US#ifdef KAB_EMBEDDED 24//US#ifdef KAB_EMBEDDED
25//#include <qstring.h> 25//#include <qstring.h>
26//#endif //KAB_EMBEDDED 26//#endif //KAB_EMBEDDED
@@ -43,18 +43,21 @@ KABPrefs::KABPrefs()
43 addItemBool( "HonorSingleClick", &mHonorSingleClick, false ); 43 addItemBool( "HonorSingleClick", &mHonorSingleClick, false );
44 44
45 KPrefs::setCurrentGroup( "General" ); 45 KPrefs::setCurrentGroup( "General" );
46 addItemBool( "AutomaticNameParsing", &mAutomaticNameParsing, true ); 46 addItemBool( "AutomaticNameParsing", &mAutomaticNameParsing, true );
47 addItemInt( "CurrentIncSearchField", &mCurrentIncSearchField, 0 ); 47 addItemInt( "CurrentIncSearchField", &mCurrentIncSearchField, 0 );
48 48
49#ifdef KAB_EMBEDDED 49#ifdef KAB_EMBEDDED
50 addItemBool("AskForQuit",&mAskForQuit,false); 50 addItemBool("AskForQuit",&mAskForQuit,false);
51 addItemBool("ToolBarHor",&mToolBarHor, true ); 51 addItemBool("ToolBarHor",&mToolBarHor, true );
52 addItemBool("ToolBarUp",&mToolBarUp, false ); 52 addItemBool("ToolBarUp",&mToolBarUp, false );
53 addItemInt( "EmailChannelType", &mEmailClient, OMPI );
54 addItemString( "EmailChannelOther", &mEmailChannel, "" );
55
53#endif //KAB_EMBEDDED 56#endif //KAB_EMBEDDED
54 57
55 KPrefs::setCurrentGroup( "MainWindow" ); 58 KPrefs::setCurrentGroup( "MainWindow" );
56 addItemBool( "JumpButtonBarVisible", &mJumpButtonBarVisible, false ); 59 addItemBool( "JumpButtonBarVisible", &mJumpButtonBarVisible, false );
57 addItemBool( "DetailsPageVisible", &mDetailsPageVisible, true ); 60 addItemBool( "DetailsPageVisible", &mDetailsPageVisible, true );
58 addItemIntList( "ExtensionsSplitter", &mExtensionsSplitter ); 61 addItemIntList( "ExtensionsSplitter", &mExtensionsSplitter );
59 addItemIntList( "DetailsSplitter", &mDetailsSplitter ); 62 addItemIntList( "DetailsSplitter", &mDetailsSplitter );
60 63
@@ -94,13 +97,13 @@ KABPrefs *KABPrefs::instance()
94 return sInstance; 97 return sInstance;
95} 98}
96 99
97void KABPrefs::setCategoryDefaults() 100void KABPrefs::setCategoryDefaults()
98{ 101{
99 mCustomCategories.clear(); 102 mCustomCategories.clear();
100 103
101 mCustomCategories << i18n( "Business" ) << i18n( "Family" ) << i18n( "School" ) 104 mCustomCategories << i18n( "Business" ) << i18n( "Family" ) << i18n( "School" )
102 << i18n( "Customer" ) << i18n( "Friend" ); 105 << i18n( "Customer" ) << i18n( "Friend" );
103} 106}
104 107
105 // US introduce a nonconst way to return the config object. 108 // US introduce a nonconst way to return the config object.
106KConfig* KABPrefs::getConfig() 109KConfig* KABPrefs::getConfig()
diff --git a/kaddressbook/kabprefs.h b/kaddressbook/kabprefs.h
index 370fc5b..c81a9a9 100644
--- a/kaddressbook/kabprefs.h
+++ b/kaddressbook/kabprefs.h
@@ -1,28 +1,28 @@
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#ifndef KABPREFS_H 24#ifndef KABPREFS_H
25#define KABPREFS_H 25#define KABPREFS_H
26 26
27#include <qstringlist.h> 27#include <qstringlist.h>
28 28
@@ -33,36 +33,48 @@ class KConfig;
33class KABPrefs : public KPimPrefs 33class KABPrefs : public KPimPrefs
34{ 34{
35 public: 35 public:
36 virtual ~KABPrefs(); 36 virtual ~KABPrefs();
37 37
38 static KABPrefs *instance(); 38 static KABPrefs *instance();
39 39
40 enum EMailClients {
41 OMPI = 0,
42 QTOPIA = 1,
43 OPIE = 2,
44 OTHER = 3
45 };
46
47
40 // General 48 // General
41 bool mHonorSingleClick; 49 bool mHonorSingleClick;
42 bool mAutomaticNameParsing; 50 bool mAutomaticNameParsing;
43 int mCurrentIncSearchField; 51 int mCurrentIncSearchField;
44 52
45#ifdef KAB_EMBEDDED 53#ifdef KAB_EMBEDDED
46 // US introduce a nonconst way to return the config object. 54 // US introduce a nonconst way to return the config object.
47 KConfig* getConfig(); 55 KConfig* getConfig();
48 56
49 bool mToolBarHor; 57 bool mToolBarHor;
50 bool mToolBarUp; 58 bool mToolBarUp;
51 bool mAskForQuit; 59 bool mAskForQuit;
60
61 int mEmailClient;
62 QString mEmailChannel;
63
52 /** Set preferences to default values */ 64 /** Set preferences to default values */
53// void usrSetDefaults(); 65// void usrSetDefaults();
54 66
55 /** Read preferences from config file */ 67 /** Read preferences from config file */
56// void usrReadConfig(); 68// void usrReadConfig();
57 69
58 /** Write preferences to config file */ 70 /** Write preferences to config file */
59// void usrWriteConfig(); 71// void usrWriteConfig();
60#endif //KAB_EMBEDDED 72#endif //KAB_EMBEDDED
61 73
62 74
63 // GUI 75 // GUI
64 bool mJumpButtonBarVisible; 76 bool mJumpButtonBarVisible;
65 bool mDetailsPageVisible; 77 bool mDetailsPageVisible;
66 QValueList<int> mExtensionsSplitter; 78 QValueList<int> mExtensionsSplitter;
67 QValueList<int> mDetailsSplitter; 79 QValueList<int> mDetailsSplitter;
68 80
@@ -75,14 +87,14 @@ class KABPrefs : public KPimPrefs
75 QStringList mViewNames; 87 QStringList mViewNames;
76 88
77 // Filter 89 // Filter
78 int mCurrentFilter; 90 int mCurrentFilter;
79 91
80 void setCategoryDefaults(); 92 void setCategoryDefaults();
81 93
82 private: 94 private:
83 KABPrefs(); 95 KABPrefs();
84 96
85 static KABPrefs *sInstance; 97 static KABPrefs *sInstance;
86}; 98};
87 99
88#endif 100#endif
diff --git a/kaddressbook/kcmconfigs/kabconfigwidget.cpp b/kaddressbook/kcmconfigs/kabconfigwidget.cpp
index 38c7946..1bac26f 100644
--- a/kaddressbook/kcmconfigs/kabconfigwidget.cpp
+++ b/kaddressbook/kcmconfigs/kabconfigwidget.cpp
@@ -1,35 +1,39 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qcheckbox.h> 24#include <qcheckbox.h>
25#include <qframe.h> 25#include <qframe.h>
26#include <qgroupbox.h> 26#include <qgroupbox.h>
27#include <qlayout.h> 27#include <qlayout.h>
28#include <qpushbutton.h> 28#include <qpushbutton.h>
29#include <qtabwidget.h> 29#include <qtabwidget.h>
30#include <qcombobox.h>
31#include <qlineedit.h>
32#include <qlabel.h>
33#include <qfile.h>
30 34
31#include <kconfig.h> 35#include <kconfig.h>
32#include <kdebug.h> 36#include <kdebug.h>
33#include <kdialog.h> 37#include <kdialog.h>
34#include <klistview.h> 38#include <klistview.h>
35#include <klocale.h> 39#include <klocale.h>
@@ -72,15 +76,15 @@ class ExtensionItem : public QCheckListItem
72#ifndef KAB_EMBEDDED 76#ifndef KAB_EMBEDDED
73 KService::Ptr mPtr; 77 KService::Ptr mPtr;
74#else //KAB_EMBEDDED 78#else //KAB_EMBEDDED
75 ExtensionFactory* mFactory; 79 ExtensionFactory* mFactory;
76 QString mName; 80 QString mName;
77 QString mComment; 81 QString mComment;
78 82
79#endif //KAB_EMBEDDED 83#endif //KAB_EMBEDDED
80 84
81}; 85};
82 86
83KABConfigWidget::KABConfigWidget( QWidget *parent, const char *name ) 87KABConfigWidget::KABConfigWidget( QWidget *parent, const char *name )
84 : QWidget( parent, name ) 88 : QWidget( parent, name )
85{ 89{
86 QVBoxLayout *topLayout = new QVBoxLayout( this, 0, 90 QVBoxLayout *topLayout = new QVBoxLayout( this, 0,
@@ -90,13 +94,13 @@ KABConfigWidget::KABConfigWidget( QWidget *parent, const char *name )
90 topLayout->addWidget( tabWidget ); 94 topLayout->addWidget( tabWidget );
91 95
92 // General page 96 // General page
93 QWidget *generalPage = new QWidget( this ); 97 QWidget *generalPage = new QWidget( this );
94 QVBoxLayout *layout = new QVBoxLayout( generalPage, KDialog::marginHintSmall(), 98 QVBoxLayout *layout = new QVBoxLayout( generalPage, KDialog::marginHintSmall(),
95 KDialog::spacingHintSmall() ); 99 KDialog::spacingHintSmall() );
96 100 //general groupbox
97 QGroupBox *groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "General" ), generalPage ); 101 QGroupBox *groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "General" ), generalPage );
98 QVBoxLayout *boxLayout = new QVBoxLayout( groupBox->layout() ); 102 QVBoxLayout *boxLayout = new QVBoxLayout( groupBox->layout() );
99 boxLayout->setAlignment( Qt::AlignTop ); 103 boxLayout->setAlignment( Qt::AlignTop );
100 boxLayout->setMargin(KDialog::marginHintSmall() ); 104 boxLayout->setMargin(KDialog::marginHintSmall() );
101 groupBox->layout()->setMargin(KDialog::marginHintSmall()) ; 105 groupBox->layout()->setMargin(KDialog::marginHintSmall()) ;
102 groupBox->layout()->setSpacing(KDialog::spacingHintSmall()); 106 groupBox->layout()->setSpacing(KDialog::spacingHintSmall());
@@ -106,25 +110,28 @@ KABConfigWidget::KABConfigWidget( QWidget *parent, const char *name )
106 110
107 mNameParsing = new QCheckBox( i18n( "Automatic name parsing for new addressees" ), groupBox, "mparse" ); 111 mNameParsing = new QCheckBox( i18n( "Automatic name parsing for new addressees" ), groupBox, "mparse" );
108 boxLayout->addWidget( mNameParsing ); 112 boxLayout->addWidget( mNameParsing );
109 113
110 layout->addWidget( groupBox ); 114 layout->addWidget( groupBox );
111 115
116
117 //extensions groupbox
118
112 groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Extensions" ), generalPage ); 119 groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Extensions" ), generalPage );
113 boxLayout = new QVBoxLayout( groupBox->layout() ); 120 boxLayout = new QVBoxLayout( groupBox->layout() );
114 boxLayout->setAlignment( Qt::AlignTop ); 121 boxLayout->setAlignment( Qt::AlignTop );
115 boxLayout->setMargin(KDialog::marginHintSmall()); 122 boxLayout->setMargin(KDialog::marginHintSmall());
116 boxLayout->setSpacing(KDialog::spacingHintSmall()); 123 boxLayout->setSpacing(KDialog::spacingHintSmall());
117 groupBox->layout()->setMargin(1) ; 124 groupBox->layout()->setMargin(1) ;
118 groupBox->layout()->setSpacing(0); 125 groupBox->layout()->setSpacing(0);
119 mExtensionView = new KListView( groupBox ); 126 mExtensionView = new KListView( groupBox );
120 mExtensionView->setAllColumnsShowFocus( true ); 127 mExtensionView->setAllColumnsShowFocus( true );
121 mExtensionView->addColumn( i18n( "Name" ) ); 128 mExtensionView->addColumn( i18n( "Name" ) );
122 mExtensionView->addColumn( i18n( "Description" ) ); 129 mExtensionView->addColumn( i18n( "Description" ) );
123 mExtensionView->setMaximumHeight(80); 130 mExtensionView->setMaximumHeight(80);
124 131
125 boxLayout->addWidget( mExtensionView ); 132 boxLayout->addWidget( mExtensionView );
126 133
127 mConfigureButton = new QPushButton( i18n( "Configure..." ), groupBox ); 134 mConfigureButton = new QPushButton( i18n( "Configure..." ), groupBox );
128 mConfigureButton->setEnabled( false ); 135 mConfigureButton->setEnabled( false );
129 boxLayout->addWidget( mConfigureButton ); 136 boxLayout->addWidget( mConfigureButton );
130 137
@@ -142,21 +149,113 @@ KABConfigWidget::KABConfigWidget( QWidget *parent, const char *name )
142 tabWidget->addTab( generalPage, i18n( "General" ) ); 149 tabWidget->addTab( generalPage, i18n( "General" ) );
143 150
144 // Addressee page 151 // Addressee page
145 mAddresseeWidget = new AddresseeWidget( this ); 152 mAddresseeWidget = new AddresseeWidget( this );
146 tabWidget->addTab( mAddresseeWidget, i18n( "Contact" ) ); 153 tabWidget->addTab( mAddresseeWidget, i18n( "Contact" ) );
147 connect( mAddresseeWidget, SIGNAL( modified() ), SLOT( modified() ) ); 154 connect( mAddresseeWidget, SIGNAL( modified() ), SLOT( modified() ) );
155
156 // mailclient page
157 QWidget *mailclientPage = new QWidget( this );
158 layout = new QVBoxLayout( mailclientPage, KDialog::marginHintSmall(),
159 KDialog::spacingHintSmall() );
160
161 groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Used Mail Client" ), mailclientPage );
162 boxLayout = new QVBoxLayout( groupBox->layout() );
163 boxLayout->setAlignment( Qt::AlignTop );
164// boxLayout->setMargin(KDialog::marginHintSmall() );
165// groupBox->layout()->setMargin(KDialog::marginHintSmall()) ;
166// groupBox->layout()->setSpacing(KDialog::spacingHintSmall());
167// boxLayout->setSpacing( KDialog::spacingHintSmall() );
168
169 mEmailClient = new QComboBox( groupBox );
170 mEmailClient->insertItem( i18n("OM/Pi"), KABPrefs::OMPI );
171 mEmailClient->insertItem( i18n("Qtopia mail"), KABPrefs::QTOPIA );
172 mEmailClient->insertItem( i18n("Opie mail"), KABPrefs::OPIE );
173 mEmailClient->insertItem( i18n("Other"), KABPrefs::OTHER );
174 boxLayout->addWidget( mEmailClient );
175
176 connect( mEmailClient, SIGNAL( activated( int ) ),
177 this, SLOT (emailclient_changed( int ) ) );
178
179 QLabel* lab = new QLabel( i18n("Channel:"), groupBox);
180 boxLayout->addWidget( lab );
181 mEmailChannel = new QLineEdit(groupBox);
182 mEmailChannel->setReadOnly(true);
183 boxLayout->addWidget( mEmailChannel );
184
185 layout->addWidget( groupBox );
186 tabWidget->addTab( mailclientPage, i18n( "Mail" ) );
187
188
189
148} 190}
149 191
192
193
194void KABConfigWidget::emailclient_changed( int newClient )
195{
196 if (newClient == KABPrefs::OTHER)
197 mEmailChannel->setReadOnly(false);
198 else
199 mEmailChannel->setReadOnly(true);
200
201 QString opiepath = QString::fromLatin1( getenv("OPIEDIR") );
202 QString qtopiapath = QString::fromLatin1( getenv("QPEDIR") );
203
204 if (opiepath.isEmpty())
205 opiepath = qtopiapath;
206
207 QString text = mEmailChannel->text();
208
209 if (newClient == KABPrefs::OPIE)
210 {
211 if ( QFile::exists( opiepath + "/bin/opiemail" ))
212 text = "QPE/Application/opiemail";
213 else
214 text = "FILENOTFOUND: " + opiepath + "/bin/opiemail";
215 }
216 else if (newClient == KABPrefs::QTOPIA)
217 {
218 if ( QFile::exists( qtopiapath + "/bin/qtmail" ))
219 text = "QPE/Application/qtmail";
220 else
221 text = "FILENOTFOUND: " + qtopiapath + "/bin/qtmail";
222
223 }
224 else if (newClient == KABPrefs::OMPI)
225 {
226 if ( QFile::exists( qtopiapath + "/bin/ompi" ))
227 text = "QPE/Application/ompi";
228 else if ( QFile::exists( opiepath + "/bin/ompi" ))
229 text = "QPE/Application/ompi";
230 else
231 text = "FILENOTFOUND: " + qtopiapath + "/bin/ompi";
232
233 }
234 else
235 {
236 //do nothing if we choosed other
237 }
238
239 mEmailChannel->setText( text );
240
241
242}
243
244
150void KABConfigWidget::restoreSettings() 245void KABConfigWidget::restoreSettings()
151{ 246{
152 bool blocked = signalsBlocked(); 247 bool blocked = signalsBlocked();
153 blockSignals( true ); 248 blockSignals( true );
154 249
155 mNameParsing->setChecked( KABPrefs::instance()->mAutomaticNameParsing ); 250 mNameParsing->setChecked( KABPrefs::instance()->mAutomaticNameParsing );
156 mViewsSingleClickBox->setChecked( KABPrefs::instance()->mHonorSingleClick ); 251 mViewsSingleClickBox->setChecked( KABPrefs::instance()->mHonorSingleClick );
252
253 mEmailChannel->setText( KABPrefs::instance()->mEmailChannel );
254 mEmailClient->setCurrentItem(KABPrefs::instance()->mEmailClient);
255
157 mAddresseeWidget->restoreSettings(); 256 mAddresseeWidget->restoreSettings();
158 257
159 restoreExtensionSettings(); 258 restoreExtensionSettings();
160 259
161 blockSignals( blocked ); 260 blockSignals( blocked );
162 261
@@ -164,12 +263,16 @@ void KABConfigWidget::restoreSettings()
164} 263}
165 264
166void KABConfigWidget::saveSettings() 265void KABConfigWidget::saveSettings()
167{ 266{
168 KABPrefs::instance()->mAutomaticNameParsing = mNameParsing->isChecked(); 267 KABPrefs::instance()->mAutomaticNameParsing = mNameParsing->isChecked();
169 KABPrefs::instance()->mHonorSingleClick = mViewsSingleClickBox->isChecked(); 268 KABPrefs::instance()->mHonorSingleClick = mViewsSingleClickBox->isChecked();
269
270 KABPrefs::instance()->mEmailClient = mEmailClient->currentItem();
271 KABPrefs::instance()->mEmailChannel = mEmailChannel->text();
272
170 mAddresseeWidget->saveSettings(); 273 mAddresseeWidget->saveSettings();
171 274
172 saveExtensionSettings(); 275 saveExtensionSettings();
173 KABPrefs::instance()->writeConfig(); 276 KABPrefs::instance()->writeConfig();
174 277
175 emit changed( false ); 278 emit changed( false );
@@ -177,12 +280,16 @@ void KABConfigWidget::saveSettings()
177 280
178void KABConfigWidget::defaults() 281void KABConfigWidget::defaults()
179{ 282{
180 mNameParsing->setChecked( true ); 283 mNameParsing->setChecked( true );
181 mViewsSingleClickBox->setChecked( false ); 284 mViewsSingleClickBox->setChecked( false );
182 285
286 mEmailClient->setCurrentItem(KABPrefs::OMPI);
287 emailclient_changed( KABPrefs::OMPI );
288
289
183 emit changed( true ); 290 emit changed( true );
184} 291}
185 292
186void KABConfigWidget::modified() 293void KABConfigWidget::modified()
187{ 294{
188 emit changed( true ); 295 emit changed( true );
@@ -207,30 +314,30 @@ void KABConfigWidget::restoreExtensionSettings()
207 item->setOn( true ); 314 item->setOn( true );
208 } 315 }
209#else //KAB_EMBEDDED 316#else //KAB_EMBEDDED
210 ExtensionFactory *extensionFactory = new MergeFactory(); 317 ExtensionFactory *extensionFactory = new MergeFactory();
211 318
212 ExtensionItem *item = new ExtensionItem( mExtensionView, "Merge", "Merge", "Merge contacts"); 319 ExtensionItem *item = new ExtensionItem( mExtensionView, "Merge", "Merge", "Merge contacts");
213 320
214 item->setFactory( extensionFactory ); 321 item->setFactory( extensionFactory );
215 if ( activeExtensions.contains( extensionFactory->identifier() ) ) 322 if ( activeExtensions.contains( extensionFactory->identifier() ) )
216 item->setOn( true ); 323 item->setOn( true );
217
218 324
219 325
326
220 extensionFactory = new DistributionListFactory(); 327 extensionFactory = new DistributionListFactory();
221 328
222 item = new ExtensionItem( mExtensionView, "Distribution List", "Distribution List", "Manage Distribution Lists"); 329 item = new ExtensionItem( mExtensionView, "Distribution List", "Distribution List", "Manage Distribution Lists");
223 330
224 item->setFactory( extensionFactory ); 331 item->setFactory( extensionFactory );
225 if ( activeExtensions.contains( extensionFactory->identifier() ) ) 332 if ( activeExtensions.contains( extensionFactory->identifier() ) )
226 item->setOn( true ); 333 item->setOn( true );
227 334
228 335
229#endif //KAB_EMBEDDED 336#endif //KAB_EMBEDDED
230 337
231} 338}
232 339
233void KABConfigWidget::saveExtensionSettings() 340void KABConfigWidget::saveExtensionSettings()
234{ 341{
235 QStringList activeExtensions; 342 QStringList activeExtensions;
236 343
@@ -314,13 +421,13 @@ bool ExtensionItem::configWidgetAvailable() const
314 if ( !factory ) 421 if ( !factory )
315 return false; 422 return false;
316 423
317 ExtensionFactory *extensionFactory = static_cast<ExtensionFactory*>( factory ); 424 ExtensionFactory *extensionFactory = static_cast<ExtensionFactory*>( factory );
318 if ( !extensionFactory ) 425 if ( !extensionFactory )
319 return false; 426 return false;
320 427
321 return extensionFactory->configureWidgetAvailable(); 428 return extensionFactory->configureWidgetAvailable();
322#else //KAB_EMBEDDED 429#else //KAB_EMBEDDED
323 return mFactory->configureWidgetAvailable(); 430 return mFactory->configureWidgetAvailable();
324#endif //KAB_EMBEDDED 431#endif //KAB_EMBEDDED
325 432
326} 433}
diff --git a/kaddressbook/kcmconfigs/kabconfigwidget.h b/kaddressbook/kcmconfigs/kabconfigwidget.h
index 0f36d9e..9d1363b 100644
--- a/kaddressbook/kcmconfigs/kabconfigwidget.h
+++ b/kaddressbook/kcmconfigs/kabconfigwidget.h
@@ -1,72 +1,78 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
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#ifndef KABCONFIGWIDGET_H 24#ifndef KABCONFIGWIDGET_H
25#define KABCONFIGWIDGET_H 25#define KABCONFIGWIDGET_H
26 26
27#include <qwidget.h> 27#include <qwidget.h>
28 28
29class QCheckBox; 29class QCheckBox;
30class QListViewItem; 30class QListViewItem;
31class QPushButton; 31class QPushButton;
32 32class QComboBox;
33class QLineEdit;
33class KListView; 34class KListView;
34 35
35class AddresseeWidget; 36class AddresseeWidget;
36 37
37class KABConfigWidget : public QWidget 38class KABConfigWidget : public QWidget
38{ 39{
39 Q_OBJECT 40 Q_OBJECT
40 41
41 public: 42 public:
42 KABConfigWidget( QWidget *parent, const char *name = 0 ); 43 KABConfigWidget( QWidget *parent, const char *name = 0 );
43 44
44 void restoreSettings(); 45 void restoreSettings();
45 void saveSettings(); 46 void saveSettings();
46 void defaults(); 47 void defaults();
47 48
48 signals: 49 signals:
49 void changed( bool ); 50 void changed( bool );
50 51
51 public slots: 52 public slots:
52 void modified(); 53 void modified();
53 54
55
56
54 private slots: 57 private slots:
55 void configureExtension(); 58 void configureExtension();
56 void selectionChanged( QListViewItem* ); 59 void selectionChanged( QListViewItem* );
57 void itemClicked( QListViewItem* ); 60 void itemClicked( QListViewItem* );
61 void emailclient_changed( int newClient );
58 62
59 private: 63 private:
60 void restoreExtensionSettings(); 64 void restoreExtensionSettings();
61 void saveExtensionSettings(); 65 void saveExtensionSettings();
62 66
63 KListView *mExtensionView; 67 KListView *mExtensionView;
64 68
65 QCheckBox *mNameParsing; 69 QCheckBox *mNameParsing;
66 QCheckBox *mViewsSingleClickBox; 70 QCheckBox *mViewsSingleClickBox;
67 QPushButton *mConfigureButton; 71 QPushButton *mConfigureButton;
72 QComboBox* mEmailClient;
73 QLineEdit* mEmailChannel;
68 74
69 AddresseeWidget *mAddresseeWidget; 75 AddresseeWidget *mAddresseeWidget;
70}; 76};
71 77
72#endif 78#endif