summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt3
-rw-r--r--bin/kdepim/kaddressbook/germantranslation.txt6
-rw-r--r--kaddressbook/kabcore.cpp20
-rw-r--r--kaddressbook/kabprefs.cpp1
-rw-r--r--kaddressbook/kabprefs.h1
-rw-r--r--kaddressbook/kcmconfigs/kabconfigwidget.cpp6
-rw-r--r--kaddressbook/kcmconfigs/kabconfigwidget.h1
7 files changed, 36 insertions, 2 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 59ef12f..2e5cf50 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,24 +1,27 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.2.1 ************ 3********** VERSION 2.2.1 ************
4 4
5KO/Pi: 5KO/Pi:
6Fixed a problem displaying very long allday events in agenda view in single day mode. 6Fixed a problem displaying very long allday events in agenda view in single day mode.
7 7
8KA/Pi:
9Added a config option to turn on asking before a contact is deleted.
10
8********** VERSION 2.2.0 ************ 11********** VERSION 2.2.0 ************
9 12
10New stable release! 13New stable release!
11Fixed some minor usability problems. 14Fixed some minor usability problems.
12Added writing of next alarm to a file for usage on pdaXrom. 15Added writing of next alarm to a file for usage on pdaXrom.
13 16
14 17
15************************************* 18*************************************
16 19
17You can find the complete changelog 20You can find the complete changelog
18from version 1.7.7 to 2.2.0 21from version 1.7.7 to 2.2.0
19in the source package or on 22in the source package or on
20 23
21http://www.pi-sync.net/html/changelog.html 24http://www.pi-sync.net/html/changelog.html
22 25
23 26
24 27
diff --git a/bin/kdepim/kaddressbook/germantranslation.txt b/bin/kdepim/kaddressbook/germantranslation.txt
index e874b85..f369169 100644
--- a/bin/kdepim/kaddressbook/germantranslation.txt
+++ b/bin/kdepim/kaddressbook/germantranslation.txt
@@ -787,29 +787,35 @@
787{ "Details","Details" }, 787{ "Details","Details" },
788{ "Search:","Suche:" }, 788{ "Search:","Suche:" },
789{ "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" }, 789{ "Automatically sync with KDE-Desktop\nwhen receiving sync request","Synce automatisch mit KDE-Desktop\nwenn eine Sync-Anforderung kommt" },
790{ "Pi-Sync Port Error","Pi-Sync Port Fehler" }, 790{ "Pi-Sync Port Error","Pi-Sync Port Fehler" },
791{ "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" }, 791{ "<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?","<b>Anschalten von Pi-Sync fehlgeschlagen!</b> Fehler beim Ansprechen des Ports %1! Ist bereits eine andere Anwendung dabei diesen Port zu nutzen?" },
792{ "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" }, 792{ "No valid port number:\n%1","Keine gültige Port Nummer:\n%1" },
793{ "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" }, 793{ "Port number (Default: %1)\nValid range from 1 to 65535","Port Nummer (Standard: %1)\nGültiger Bereich von 1 bis 65535" },
794{ "Pi-Sync Error","Pi-Sync Fehler" }, 794{ "Pi-Sync Error","Pi-Sync Fehler" },
795{ "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" }, 795{ "Got send file request\nwith invalid password","Erhielt "sende Datei" Anfrage\nmit ungültigem Passwort" },
796{ "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" }, 796{ "Got receive file request\nwith invalid password","Erhielt "empfange Datei" Anfrage\nmit ungültigem Passwort" },
797{ "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." }, 797{ "Wrong password: Receiving remote file failed.","Falsches Passwort: Empfangen von entfernter Datei fehlgeschlagen." },
798{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" }, 798{ "Please close error dialog on remote.","Bitte schließe Fehler-Dialog am entfernten Rechner" },
799{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" }, 799{ "Unknown error on remote.","Unbekannter Fehler am entfernten Rechner" },
800{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" }, 800{ "Pi-Sync: Connected!","Pi-Sync: Verbunden!" },
801{ "Receiving file from remote...","Empfange entfernte Datei..." }, 801{ "Receiving file from remote...","Empfange entfernte Datei..." },
802{ "Sending back synced file...","Sende synchronisierte Datei zurück..." }, 802{ "Sending back synced file...","Sende synchronisierte Datei zurück..." },
803{ "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" }, 803{ "Do you want to\nclear all sync info\nof all profiles?","Möchten Sie wirklich\ndie Sync-Info\nfür alle Profile\nlöschen?" },
804{ "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" }, 804{ "Do you want to\nclear the sync\ninfo of profile\n%1?\n","Möchten Sie wirklich\ndie Sync-Info für Profil\n%1?\nlöschen" },
805{ "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." }, 805{ "Sorry, no valid port.Syncing cancelled.","Sorry, kein gültiger Port. Syncing abgebrochen." },
806{ "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" }, 806{ "Remote port number:\n(May be: 1 - 65535)","Ferne Port Nummer:\n(Darf sein: 1 - 65535)" },
807{ "Writing back file ...","Schreibe Datei zurück..." }, 807{ "Writing back file ...","Schreibe Datei zurück..." },
808{ "Sending back file ...","Sende Datei zurück..." }, 808{ "Sending back file ...","Sende Datei zurück..." },
809{ "Eeek, there I am ticklish!","Huch, da bin ich kitzlig!" }, 809{ "Eeek, there I am ticklish!","Huch, da bin ich kitzlig!" },
810{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" }, 810{ "Save using LOCAL storage","Speichere nutze LOCAL Pfad" },
811{ "...and %1 more\ncontact(s) selected","...und noch %1 Kontakte\n mehr ausgewählt" },
812{ "Do you really\nwant to delete the\nsetected contact(s)?\n\n","Möchten Sie wirklich\ndie ausgewählten\nKontakte löschen?\n\n" },
813{ "","" },
814{ "","" },
815{ "","" },
816{ "","" },
811{ "","" }, 817{ "","" },
812{ "","" }, 818{ "","" },
813{ "","" }, 819{ "","" },
814{ "","" }, 820{ "","" },
815{ "","" }, \ No newline at end of file 821{ "","" }, \ No newline at end of file
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index d5de9cb..b9830b1 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1007,49 +1007,65 @@ void KABCore::beamDone( Ir *ir )
1007 1007
1008 1008
1009void KABCore::browse( const QString& url ) 1009void KABCore::browse( const QString& url )
1010{ 1010{
1011#ifndef KAB_EMBEDDED 1011#ifndef KAB_EMBEDDED
1012 kapp->invokeBrowser( url ); 1012 kapp->invokeBrowser( url );
1013#else //KAB_EMBEDDED 1013#else //KAB_EMBEDDED
1014 qDebug("KABCore::browse must be fixed"); 1014 qDebug("KABCore::browse must be fixed");
1015#endif //KAB_EMBEDDED 1015#endif //KAB_EMBEDDED
1016} 1016}
1017 1017
1018void KABCore::selectAllContacts() 1018void KABCore::selectAllContacts()
1019{ 1019{
1020 mViewManager->setSelected( QString::null, true ); 1020 mViewManager->setSelected( QString::null, true );
1021} 1021}
1022 1022
1023void KABCore::deleteContacts() 1023void KABCore::deleteContacts()
1024{ 1024{
1025 QStringList uidList = mViewManager->selectedUids(); 1025 QStringList uidList = mViewManager->selectedUids();
1026 deleteContacts( uidList ); 1026 deleteContacts( uidList );
1027} 1027}
1028 1028
1029void KABCore::deleteContacts( const QStringList &uids ) 1029void KABCore::deleteContacts( const QStringList &uids )
1030{ 1030{
1031
1031 if ( uids.count() > 0 ) { 1032 if ( uids.count() > 0 ) {
1033
1034 if ( KABPrefs::instance()->mAskForDelete ) {
1035 int count = uids.count();
1036 if ( count > 5 ) count = 5;
1037 QString cNames;
1038 int i;
1039 for ( i = 0; i < count ; ++i ) {
1040 cNames += KGlobal::formatMessage( mAddressBook->findByUid( uids[i] ).realName() ,0) + "\n";
1041 }
1042 if ( uids.count() > 5 )
1043 cNames += i18n("...and %1 more\ncontact(s) selected").arg( uids.count() - 5 );
1044 QString text = i18n( "Do you really\nwant to delete the\nsetected contact(s)?\n\n" ) + cNames ;
1045 if ( KMessageBox::questionYesNo( this, text ) != KMessageBox::Yes )
1046 return;
1047 }
1032 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 1048 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
1033 UndoStack::instance()->push( command ); 1049 UndoStack::instance()->push( command );
1034 RedoStack::instance()->clear(); 1050 RedoStack::instance()->clear();
1035 1051
1036 // now if we deleted anything, refresh 1052 // now if we deleted anything, refresh
1037 setContactSelected( QString::null ); 1053 setContactSelected( QString::null );
1038 setModified( true ); 1054 setModified( true );
1039 } 1055 }
1040} 1056}
1041 1057
1042void KABCore::copyContacts() 1058void KABCore::copyContacts()
1043{ 1059{
1044 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1060 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1045 1061
1046 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 1062 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
1047 1063
1048 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 1064 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
1049 1065
1050 QClipboard *cb = QApplication::clipboard(); 1066 QClipboard *cb = QApplication::clipboard();
1051 cb->setText( clipText ); 1067 cb->setText( clipText );
1052} 1068}
1053 1069
1054void KABCore::cutContacts() 1070void KABCore::cutContacts()
1055{ 1071{
@@ -1077,49 +1093,49 @@ void KABCore::pasteContacts()
1077void KABCore::pasteContacts( KABC::Addressee::List &list ) 1093void KABCore::pasteContacts( KABC::Addressee::List &list )
1078{ 1094{
1079 KABC::Resource *resource = requestResource( this ); 1095 KABC::Resource *resource = requestResource( this );
1080 KABC::Addressee::List::Iterator it; 1096 KABC::Addressee::List::Iterator it;
1081 for ( it = list.begin(); it != list.end(); ++it ) 1097 for ( it = list.begin(); it != list.end(); ++it )
1082 (*it).setResource( resource ); 1098 (*it).setResource( resource );
1083 1099
1084 PwPasteCommand *command = new PwPasteCommand( this, list ); 1100 PwPasteCommand *command = new PwPasteCommand( this, list );
1085 UndoStack::instance()->push( command ); 1101 UndoStack::instance()->push( command );
1086 RedoStack::instance()->clear(); 1102 RedoStack::instance()->clear();
1087 1103
1088 setModified( true ); 1104 setModified( true );
1089} 1105}
1090 1106
1091void KABCore::setWhoAmI() 1107void KABCore::setWhoAmI()
1092{ 1108{
1093 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1109 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1094 1110
1095 if ( addrList.count() > 1 ) { 1111 if ( addrList.count() > 1 ) {
1096 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 1112 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
1097 return; 1113 return;
1098 } 1114 }
1099 1115
1100 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 1116 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
1101 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 1117 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].realName() ) ) == KMessageBox::Yes )
1102 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 1118 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
1103} 1119}
1104void KABCore::editCategories() 1120void KABCore::editCategories()
1105{ 1121{
1106 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true ); 1122 KPIM::CategoryEditDialog dlg ( KABPrefs::instance(), this, "", true );
1107 dlg.exec(); 1123 dlg.exec();
1108} 1124}
1109void KABCore::setCategories() 1125void KABCore::setCategories()
1110{ 1126{
1111 1127
1112 QStringList uids; 1128 QStringList uids;
1113 XXPortSelectDialog dlgx( this, false, this ); 1129 XXPortSelectDialog dlgx( this, false, this );
1114 if ( dlgx.exec() ) 1130 if ( dlgx.exec() )
1115 uids = dlgx.uids(); 1131 uids = dlgx.uids();
1116 else 1132 else
1117 return; 1133 return;
1118 if ( uids.isEmpty() ) 1134 if ( uids.isEmpty() )
1119 return; 1135 return;
1120 // qDebug("count %d ", uids.count()); 1136 // qDebug("count %d ", uids.count());
1121 1137
1122 1138
1123 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 1139 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
1124 if ( !dlg.exec() ) { 1140 if ( !dlg.exec() ) {
1125 message( i18n("Setting categories cancelled") ); 1141 message( i18n("Setting categories cancelled") );
@@ -2645,49 +2661,49 @@ void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString
2645 QString formattedbday; 2661 QString formattedbday;
2646 2662
2647 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) 2663 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it )
2648 { 2664 {
2649 if ( ! bar.isVisible() ) 2665 if ( ! bar.isVisible() )
2650 return; 2666 return;
2651 bar.setProgress( count++ ); 2667 bar.setProgress( count++ );
2652 qApp->processEvents(); 2668 qApp->processEvents();
2653 bday = (*it).birthday().date(); 2669 bday = (*it).birthday().date();
2654 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" ); 2670 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" );
2655 2671
2656 if ( bday.isValid() || !anni.isEmpty()) 2672 if ( bday.isValid() || !anni.isEmpty())
2657 { 2673 {
2658 if (bday.isValid()) 2674 if (bday.isValid())
2659 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate); 2675 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate);
2660 else 2676 else
2661 formattedbday = "NOTVALID"; 2677 formattedbday = "NOTVALID";
2662 if (anni.isEmpty()) 2678 if (anni.isEmpty())
2663 anni = "INVALID"; 2679 anni = "INVALID";
2664 2680
2665 birthdayList.append(formattedbday); 2681 birthdayList.append(formattedbday);
2666 anniversaryList.append(anni); //should be ISODate 2682 anniversaryList.append(anni); //should be ISODate
2667 realNameList.append((*it).realName()); 2683 realNameList.append((*it).realName());
2668 preferredEmailList.append((*it).preferredEmail()); 2684 preferredEmailList.append((*it).preferredEmail());
2669 assembledNameList.append((*it).assembledName()); 2685 assembledNameList.append((*it).realName());
2670 uidList.append((*it).uid()); 2686 uidList.append((*it).uid());
2671 2687
2672 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() ); 2688 //qDebug("found birthday in KA/Pi: %s,%s,%s,%s: %s, %s", (*it).realName().latin1(), (*it).preferredEmail().latin1(), (*it).assembledName().latin1(), (*it).uid().latin1(), formattedbday.latin1(), anni.latin1() );
2673 } 2689 }
2674 } 2690 }
2675 2691
2676 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList); 2692 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList);
2677 2693
2678} 2694}
2679 2695
2680/* this method will be called through the QCop interface from other apps to show details of a contact. 2696/* this method will be called through the QCop interface from other apps to show details of a contact.
2681 */ 2697 */
2682void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 2698void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2683{ 2699{
2684 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1()); 2700 //qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2685 2701
2686 QString foundUid = QString::null; 2702 QString foundUid = QString::null;
2687 if ( ! uid.isEmpty() ) { 2703 if ( ! uid.isEmpty() ) {
2688 Addressee adrr = mAddressBook->findByUid( uid ); 2704 Addressee adrr = mAddressBook->findByUid( uid );
2689 if ( !adrr.isEmpty() ) { 2705 if ( !adrr.isEmpty() ) {
2690 foundUid = uid; 2706 foundUid = uid;
2691 } 2707 }
2692 if ( email == "sendbacklist" ) { 2708 if ( email == "sendbacklist" ) {
2693 //qDebug("ssssssssssssssssssssssend "); 2709 //qDebug("ssssssssssssssssssssssend ");
diff --git a/kaddressbook/kabprefs.cpp b/kaddressbook/kabprefs.cpp
index ea254b7..42d541b 100644
--- a/kaddressbook/kabprefs.cpp
+++ b/kaddressbook/kabprefs.cpp
@@ -35,48 +35,49 @@
35#include <klocale.h> 35#include <klocale.h>
36#include <kstaticdeleter.h> 36#include <kstaticdeleter.h>
37#include <kglobalsettings.h> 37#include <kglobalsettings.h>
38//US#include <kdebug.h> // defines kdDebug() 38//US#include <kdebug.h> // defines kdDebug()
39 39
40#include "kabprefs.h" 40#include "kabprefs.h"
41 41
42#ifdef DESKTOP_VERSION 42#ifdef DESKTOP_VERSION
43#include <qapplication.h> 43#include <qapplication.h>
44#endif 44#endif
45 45
46KABPrefs *KABPrefs::sInstance = 0; 46KABPrefs *KABPrefs::sInstance = 0;
47static KStaticDeleter<KABPrefs> staticDeleterAB; 47static KStaticDeleter<KABPrefs> staticDeleterAB;
48 48
49KABPrefs::KABPrefs() 49KABPrefs::KABPrefs()
50 : KPimPrefs("kaddressbookrc") 50 : KPimPrefs("kaddressbookrc")
51{ 51{
52 KPrefs::setCurrentGroup( "Views" ); 52 KPrefs::setCurrentGroup( "Views" );
53 addItemBool( "HonorSingleClick", &mHonorSingleClick, false ); 53 addItemBool( "HonorSingleClick", &mHonorSingleClick, false );
54 54
55 KPrefs::setCurrentGroup( "General" ); 55 KPrefs::setCurrentGroup( "General" );
56 addItemBool( "AutomaticNameParsing", &mAutomaticNameParsing, true ); 56 addItemBool( "AutomaticNameParsing", &mAutomaticNameParsing, true );
57 addItemInt( "CurrentIncSearchField", &mCurrentIncSearchField, 0 ); 57 addItemInt( "CurrentIncSearchField", &mCurrentIncSearchField, 0 );
58#ifdef KAB_EMBEDDED 58#ifdef KAB_EMBEDDED
59 addItemBool("AskForDelete",&mAskForDelete,true);
59 addItemBool("AskForQuit",&mAskForQuit,true); 60 addItemBool("AskForQuit",&mAskForQuit,true);
60 addItemBool("ToolBarHor",&mToolBarHor, true ); 61 addItemBool("ToolBarHor",&mToolBarHor, true );
61 addItemBool("ToolBarUp",&mToolBarUp, false ); 62 addItemBool("ToolBarUp",&mToolBarUp, false );
62 addItemBool("SearchWithReturn",&mSearchWithReturn, false ); 63 addItemBool("SearchWithReturn",&mSearchWithReturn, false );
63 addItemBool("AutoSearchWithWildcard",&mAutoSearchWithWildcard, false ); 64 addItemBool("AutoSearchWithWildcard",&mAutoSearchWithWildcard, false );
64 addItemBool("HideSearchOnSwitch",&mHideSearchOnSwitch, false ); 65 addItemBool("HideSearchOnSwitch",&mHideSearchOnSwitch, false );
65 addItemFont("DetailsFont",&mDetailsFont,KGlobalSettings::generalFont()); 66 addItemFont("DetailsFont",&mDetailsFont,KGlobalSettings::generalFont());
66 67
67 68
68#endif //KAB_EMBEDDED 69#endif //KAB_EMBEDDED
69 70
70 KPrefs::setCurrentGroup( "MainWindow" ); 71 KPrefs::setCurrentGroup( "MainWindow" );
71 bool m_visible = false; 72 bool m_visible = false;
72#ifdef DESKTOP_VERSION 73#ifdef DESKTOP_VERSION
73 m_visible = true; 74 m_visible = true;
74#endif 75#endif
75 addItemBool( "FullMenuBarVisible", &mFullMenuBarVisible, m_visible ); 76 addItemBool( "FullMenuBarVisible", &mFullMenuBarVisible, m_visible );
76 addItemBool( "JumpButtonBarVisible", &mJumpButtonBarVisible, false ); 77 addItemBool( "JumpButtonBarVisible", &mJumpButtonBarVisible, false );
77 addItemBool( "DetailsPageVisible", &mDetailsPageVisible, true ); 78 addItemBool( "DetailsPageVisible", &mDetailsPageVisible, true );
78 addItemIntList( "ExtensionsSplitter", &mExtensionsSplitter ); 79 addItemIntList( "ExtensionsSplitter", &mExtensionsSplitter );
79 addItemIntList( "DetailsSplitter", &mDetailsSplitter ); 80 addItemIntList( "DetailsSplitter", &mDetailsSplitter );
80 addItemBool( "MultipleViewsAtOnce", &mMultipleViewsAtOnce, true ); 81 addItemBool( "MultipleViewsAtOnce", &mMultipleViewsAtOnce, true );
81 82
82 83
diff --git a/kaddressbook/kabprefs.h b/kaddressbook/kabprefs.h
index 2bb173d..ddbc0c0 100644
--- a/kaddressbook/kabprefs.h
+++ b/kaddressbook/kabprefs.h
@@ -51,48 +51,49 @@ class KABPrefs : public KPimPrefs
51 bool mToolBarUp; 51 bool mToolBarUp;
52 bool mAskForQuit; 52 bool mAskForQuit;
53 53
54 54
55 /** Set preferences to default values */ 55 /** Set preferences to default values */
56// void usrSetDefaults(); 56// void usrSetDefaults();
57 57
58 /** Read preferences from config file */ 58 /** Read preferences from config file */
59// void usrReadConfig(); 59// void usrReadConfig();
60 60
61 /** Write preferences to config file */ 61 /** Write preferences to config file */
62// void usrWriteConfig(); 62// void usrWriteConfig();
63#endif //KAB_EMBEDDED 63#endif //KAB_EMBEDDED
64 void usrReadConfig(); 64 void usrReadConfig();
65 65
66 66
67 // GUI 67 // GUI
68 bool mFullMenuBarVisible; 68 bool mFullMenuBarVisible;
69 bool mJumpButtonBarVisible; 69 bool mJumpButtonBarVisible;
70 bool mDetailsPageVisible; 70 bool mDetailsPageVisible;
71 bool mMultipleViewsAtOnce; 71 bool mMultipleViewsAtOnce;
72 bool mSearchWithReturn; 72 bool mSearchWithReturn;
73 bool mAutoSearchWithWildcard; 73 bool mAutoSearchWithWildcard;
74 bool mHideSearchOnSwitch; 74 bool mHideSearchOnSwitch;
75 bool mAskForDelete;
75 QValueList<int> mExtensionsSplitter; 76 QValueList<int> mExtensionsSplitter;
76 QValueList<int> mDetailsSplitter; 77 QValueList<int> mDetailsSplitter;
77 78
78 // Extensions stuff 79 // Extensions stuff
79 int mCurrentExtension; 80 int mCurrentExtension;
80 QStringList mActiveExtensions; 81 QStringList mActiveExtensions;
81 82
82 // Views stuff 83 // Views stuff
83 QString mCurrentView; 84 QString mCurrentView;
84 QStringList mViewNames; 85 QStringList mViewNames;
85 86
86 // Filter 87 // Filter
87 int mCurrentFilter; 88 int mCurrentFilter;
88 89
89 void setCategoryDefaults(); 90 void setCategoryDefaults();
90 QFont mDetailsFont; 91 QFont mDetailsFont;
91 92
92 private: 93 private:
93 KABPrefs(); 94 KABPrefs();
94 95
95 static KABPrefs *sInstance; 96 static KABPrefs *sInstance;
96}; 97};
97 98
98#endif 99#endif
diff --git a/kaddressbook/kcmconfigs/kabconfigwidget.cpp b/kaddressbook/kcmconfigs/kabconfigwidget.cpp
index 1b4652a..9e4db74 100644
--- a/kaddressbook/kcmconfigs/kabconfigwidget.cpp
+++ b/kaddressbook/kcmconfigs/kabconfigwidget.cpp
@@ -121,142 +121,148 @@ KABConfigWidget::KABConfigWidget( KABPrefs* prefs, QWidget *parent, const char *
121 boxLayout->setAlignment( Qt::AlignTop ); 121 boxLayout->setAlignment( Qt::AlignTop );
122 boxLayout->setMargin(KDialog::marginHintSmall() ); 122 boxLayout->setMargin(KDialog::marginHintSmall() );
123 boxLayout->setSpacing( KDialog::spacingHintSmall() ); 123 boxLayout->setSpacing( KDialog::spacingHintSmall() );
124 mMenuBarBox = new QCheckBox( i18n( "Full Menu bar (restart)" ), vBox, "mremenuturn" ); 124 mMenuBarBox = new QCheckBox( i18n( "Full Menu bar (restart)" ), vBox, "mremenuturn" );
125 boxLayout->addWidget( mMenuBarBox ); 125 boxLayout->addWidget( mMenuBarBox );
126 mSearchReturnBox = new QCheckBox( i18n( "Search only after <return> key pressed" ), vBox, "mreturn" ); 126 mSearchReturnBox = new QCheckBox( i18n( "Search only after <return> key pressed" ), vBox, "mreturn" );
127 boxLayout->addWidget( mSearchReturnBox ); 127 boxLayout->addWidget( mSearchReturnBox );
128 mAutoSearchWithWildcardBox = new QCheckBox( i18n( "Search with '*' prefix (wildcard)" ), vBox, "mwildcard" ); 128 mAutoSearchWithWildcardBox = new QCheckBox( i18n( "Search with '*' prefix (wildcard)" ), vBox, "mwildcard" );
129 boxLayout->addWidget( mAutoSearchWithWildcardBox); 129 boxLayout->addWidget( mAutoSearchWithWildcardBox);
130 mHideSearchOnSwitchBox = new QCheckBox( i18n( "Shrink searchfield in portrait view" ), vBox, "mswitch" ); 130 mHideSearchOnSwitchBox = new QCheckBox( i18n( "Shrink searchfield in portrait view" ), vBox, "mswitch" );
131 boxLayout->addWidget( mHideSearchOnSwitchBox ); 131 boxLayout->addWidget( mHideSearchOnSwitchBox );
132 132
133#ifdef DESKTOP_VERSION 133#ifdef DESKTOP_VERSION
134 mHideSearchOnSwitchBox->hide(); 134 mHideSearchOnSwitchBox->hide();
135#endif 135#endif
136 mViewsSingleClickBox = new QCheckBox( i18n( "Show edit dialog on single click" ), vBox, "msingle" ); 136 mViewsSingleClickBox = new QCheckBox( i18n( "Show edit dialog on single click" ), vBox, "msingle" );
137 boxLayout->addWidget( mViewsSingleClickBox ); 137 boxLayout->addWidget( mViewsSingleClickBox );
138 138
139 mNameParsing = new QCheckBox( i18n( "Automatic name parsing for new contacts" ), vBox, "mparse" ); 139 mNameParsing = new QCheckBox( i18n( "Automatic name parsing for new contacts" ), vBox, "mparse" );
140 boxLayout->addWidget( mNameParsing ); 140 boxLayout->addWidget( mNameParsing );
141 141
142 mMultipleViewsAtOnce = new QCheckBox( i18n( "Display List and Details at once (restart)" ), vBox, "mdisplay" ); 142 mMultipleViewsAtOnce = new QCheckBox( i18n( "Display List and Details at once (restart)" ), vBox, "mdisplay" );
143 boxLayout->addWidget( mMultipleViewsAtOnce ); 143 boxLayout->addWidget( mMultipleViewsAtOnce );
144 144
145 mAskForDelete = new QCheckBox( i18n( "Ask before delete contact" ), vBox, "mdel" );
146 boxLayout->addWidget( mAskForDelete );
147
145 mAskForQuit = new QCheckBox( i18n( "Show exit confirmation" ), vBox, "mquit" ); 148 mAskForQuit = new QCheckBox( i18n( "Show exit confirmation" ), vBox, "mquit" );
146 boxLayout->addWidget( mAskForQuit ); 149 boxLayout->addWidget( mAskForQuit );
147 150
148 layout->addWidget( vBox ); 151 layout->addWidget( vBox );
149 152
150 tabWidget->addTab( generalPage, i18n( "General" ) ); 153 tabWidget->addTab( generalPage, i18n( "General" ) );
151 154
152 // Extension page 155 // Extension page
153 QWidget *extensionPage = new QWidget( this ); 156 QWidget *extensionPage = new QWidget( this );
154 QVBoxLayout *extensionLayout = new QVBoxLayout( extensionPage, KDialog::marginHintSmall(), 157 QVBoxLayout *extensionLayout = new QVBoxLayout( extensionPage, KDialog::marginHintSmall(),
155 KDialog::spacingHintSmall() ); 158 KDialog::spacingHintSmall() );
156 159
157 //extensions groupbox 160 //extensions groupbox
158 161
159 QGroupBox* groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Extensions (restart)" ), extensionPage ); 162 QGroupBox* groupBox = new QGroupBox( 0, Qt::Vertical, i18n( "Extensions (restart)" ), extensionPage );
160 boxLayout = new QVBoxLayout( groupBox->layout() ); 163 boxLayout = new QVBoxLayout( groupBox->layout() );
161 boxLayout->setAlignment( Qt::AlignTop ); 164 boxLayout->setAlignment( Qt::AlignTop );
162 boxLayout->setMargin(KDialog::marginHintSmall()); 165 boxLayout->setMargin(KDialog::marginHintSmall());
163 boxLayout->setSpacing(KDialog::spacingHintSmall()); 166 boxLayout->setSpacing(KDialog::spacingHintSmall());
164 groupBox->layout()->setMargin(1) ; 167 groupBox->layout()->setMargin(1) ;
165 groupBox->layout()->setSpacing(0); 168 groupBox->layout()->setSpacing(0);
166 mExtensionView = new KListView( groupBox ); 169 mExtensionView = new KListView( groupBox );
167 mExtensionView->setAllColumnsShowFocus( true ); 170 mExtensionView->setAllColumnsShowFocus( true );
168 mExtensionView->addColumn( i18n( "Name" ) ); 171 mExtensionView->addColumn( i18n( "Name" ) );
169 mExtensionView->addColumn( i18n( "Description" ) ); 172 mExtensionView->addColumn( i18n( "Description" ) );
170 //mExtensionView->setMaximumHeight(80); 173 //mExtensionView->setMaximumHeight(80);
171 174
172 boxLayout->addWidget( mExtensionView ); 175 boxLayout->addWidget( mExtensionView );
173 176
174 mConfigureButton = new QPushButton( i18n( "Configure..." ), groupBox ); 177 mConfigureButton = new QPushButton( i18n( "Configure..." ), groupBox );
175 mConfigureButton->setEnabled( false ); 178 mConfigureButton->setEnabled( false );
176 boxLayout->addWidget( mConfigureButton ); 179 boxLayout->addWidget( mConfigureButton );
177 180
178 extensionLayout->addWidget( groupBox ); 181 extensionLayout->addWidget( groupBox );
179 182
180 connect( mMenuBarBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 183 connect( mMenuBarBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
181 connect( mNameParsing, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 184 connect( mNameParsing, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
182 connect( mViewsSingleClickBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 185 connect( mViewsSingleClickBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
183 connect( mSearchReturnBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 186 connect( mSearchReturnBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
184 connect( mAutoSearchWithWildcardBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 187 connect( mAutoSearchWithWildcardBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
185 connect( mHideSearchOnSwitchBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 188 connect( mHideSearchOnSwitchBox, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
186 connect( mMultipleViewsAtOnce, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 189 connect( mMultipleViewsAtOnce, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
187 connect( mAskForQuit, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) ); 190 connect( mAskForQuit, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
191 connect( mAskForDelete, SIGNAL( toggled( bool ) ), this, SLOT( modified() ) );
188 connect( mExtensionView, SIGNAL( selectionChanged( QListViewItem* ) ), 192 connect( mExtensionView, SIGNAL( selectionChanged( QListViewItem* ) ),
189 SLOT( selectionChanged( QListViewItem* ) ) ); 193 SLOT( selectionChanged( QListViewItem* ) ) );
190 connect( mExtensionView, SIGNAL( clicked( QListViewItem* ) ), 194 connect( mExtensionView, SIGNAL( clicked( QListViewItem* ) ),
191 SLOT( itemClicked( QListViewItem* ) ) ); 195 SLOT( itemClicked( QListViewItem* ) ) );
192 connect( mConfigureButton, SIGNAL( clicked() ), 196 connect( mConfigureButton, SIGNAL( clicked() ),
193 SLOT( configureExtension() ) ); 197 SLOT( configureExtension() ) );
194 198
195 tabWidget->addTab( extensionPage, i18n( "Extensions" ) ); 199 tabWidget->addTab( extensionPage, i18n( "Extensions" ) );
196 200
197 // Addressee page 201 // Addressee page
198 mAddresseeWidget = new AddresseeWidget( this ); 202 mAddresseeWidget = new AddresseeWidget( this );
199 tabWidget->addTab( mAddresseeWidget, i18n( "Contact" ) ); 203 tabWidget->addTab( mAddresseeWidget, i18n( "Contact" ) );
200 connect( mAddresseeWidget, SIGNAL( modified() ), SLOT( modified() ) ); 204 connect( mAddresseeWidget, SIGNAL( modified() ), SLOT( modified() ) );
201 205
202} 206}
203 207
204void KABConfigWidget::usrReadConfig() 208void KABConfigWidget::usrReadConfig()
205{ 209{
206 KABPrefs* prefs = KABPrefs::instance(); 210 KABPrefs* prefs = KABPrefs::instance();
207 211
208 bool blocked = signalsBlocked(); 212 bool blocked = signalsBlocked();
209 blockSignals( true ); 213 blockSignals( true );
210 mMenuBarBox->setChecked( prefs->mFullMenuBarVisible); 214 mMenuBarBox->setChecked( prefs->mFullMenuBarVisible);
211 mNameParsing->setChecked( prefs->mAutomaticNameParsing ); 215 mNameParsing->setChecked( prefs->mAutomaticNameParsing );
212 mViewsSingleClickBox->setChecked( prefs->mHonorSingleClick ); 216 mViewsSingleClickBox->setChecked( prefs->mHonorSingleClick );
213 mSearchReturnBox->setChecked( prefs->mSearchWithReturn ); 217 mSearchReturnBox->setChecked( prefs->mSearchWithReturn );
214 mAutoSearchWithWildcardBox->setChecked( prefs->mAutoSearchWithWildcard ); 218 mAutoSearchWithWildcardBox->setChecked( prefs->mAutoSearchWithWildcard );
215 mHideSearchOnSwitchBox->setChecked( prefs->mHideSearchOnSwitch ); 219 mHideSearchOnSwitchBox->setChecked( prefs->mHideSearchOnSwitch );
216 mMultipleViewsAtOnce->setChecked( prefs->mMultipleViewsAtOnce ); 220 mMultipleViewsAtOnce->setChecked( prefs->mMultipleViewsAtOnce );
217 mAskForQuit->setChecked( prefs->mAskForQuit ); 221 mAskForQuit->setChecked( prefs->mAskForQuit );
222 mAskForDelete->setChecked( prefs->mAskForDelete );
218 223
219 mAddresseeWidget->restoreSettings(); 224 mAddresseeWidget->restoreSettings();
220 225
221 restoreExtensionSettings(); 226 restoreExtensionSettings();
222 227
223 blockSignals( blocked ); 228 blockSignals( blocked );
224 229
225} 230}
226 231
227void KABConfigWidget::usrWriteConfig() 232void KABConfigWidget::usrWriteConfig()
228{ 233{
229 KABPrefs* prefs = KABPrefs::instance(); 234 KABPrefs* prefs = KABPrefs::instance();
230 prefs->mFullMenuBarVisible = mMenuBarBox->isChecked(); 235 prefs->mFullMenuBarVisible = mMenuBarBox->isChecked();
231 prefs->mAutomaticNameParsing = mNameParsing->isChecked(); 236 prefs->mAutomaticNameParsing = mNameParsing->isChecked();
232 prefs->mHonorSingleClick = mViewsSingleClickBox->isChecked(); 237 prefs->mHonorSingleClick = mViewsSingleClickBox->isChecked();
233 prefs->mSearchWithReturn = mSearchReturnBox->isChecked(); 238 prefs->mSearchWithReturn = mSearchReturnBox->isChecked();
234 prefs->mAutoSearchWithWildcard = mAutoSearchWithWildcardBox->isChecked(); 239 prefs->mAutoSearchWithWildcard = mAutoSearchWithWildcardBox->isChecked();
235 prefs->mHideSearchOnSwitch = mHideSearchOnSwitchBox->isChecked(); 240 prefs->mHideSearchOnSwitch = mHideSearchOnSwitchBox->isChecked();
236 241
237 prefs->mMultipleViewsAtOnce = mMultipleViewsAtOnce->isChecked(); 242 prefs->mMultipleViewsAtOnce = mMultipleViewsAtOnce->isChecked();
238 prefs->mAskForQuit = mAskForQuit->isChecked(); 243 prefs->mAskForQuit = mAskForQuit->isChecked();
244 prefs->mAskForDelete = mAskForDelete->isChecked();
239 245
240 mAddresseeWidget->saveSettings(); 246 mAddresseeWidget->saveSettings();
241 247
242 saveExtensionSettings(); 248 saveExtensionSettings();
243 249
244} 250}
245 251
246void KABConfigWidget::restoreExtensionSettings() 252void KABConfigWidget::restoreExtensionSettings()
247{ 253{
248 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions; 254 QStringList activeExtensions = KABPrefs::instance()->mActiveExtensions;
249 255
250 mExtensionView->clear(); 256 mExtensionView->clear();
251 257
252#ifndef KAB_EMBEDDED 258#ifndef KAB_EMBEDDED
253 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" ); 259 KTrader::OfferList plugins = KTrader::self()->query( "KAddressBook/Extension" );
254 KTrader::OfferList::ConstIterator it; 260 KTrader::OfferList::ConstIterator it;
255 for ( it = plugins.begin(); it != plugins.end(); ++it ) { 261 for ( it = plugins.begin(); it != plugins.end(); ++it ) {
256 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) ) 262 if ( !(*it)->hasServiceType( "KAddressBook/Extension" ) )
257 continue; 263 continue;
258 264
259 ExtensionItem *item = new ExtensionItem( mExtensionView, (*it)->name() ); 265 ExtensionItem *item = new ExtensionItem( mExtensionView, (*it)->name() );
260 item->setService( *it ); 266 item->setService( *it );
261 if ( activeExtensions.contains( item->factory()->identifier() ) ) 267 if ( activeExtensions.contains( item->factory()->identifier() ) )
262 item->setOn( true ); 268 item->setOn( true );
diff --git a/kaddressbook/kcmconfigs/kabconfigwidget.h b/kaddressbook/kcmconfigs/kabconfigwidget.h
index a172e97..f2a6b1b 100644
--- a/kaddressbook/kcmconfigs/kabconfigwidget.h
+++ b/kaddressbook/kcmconfigs/kabconfigwidget.h
@@ -48,30 +48,31 @@ class KABConfigWidget : public KPrefsWidget
48 virtual void usrReadConfig(); 48 virtual void usrReadConfig();
49 /** Implement this to write custom configuration widgets. */ 49 /** Implement this to write custom configuration widgets. */
50 virtual void usrWriteConfig(); 50 virtual void usrWriteConfig();
51 51
52 52
53 53
54 private slots: 54 private slots:
55 void configureExtension(); 55 void configureExtension();
56 void selectionChanged( QListViewItem* ); 56 void selectionChanged( QListViewItem* );
57 void itemClicked( QListViewItem* ); 57 void itemClicked( QListViewItem* );
58 58
59 private: 59 private:
60 void restoreExtensionSettings(); 60 void restoreExtensionSettings();
61 void saveExtensionSettings(); 61 void saveExtensionSettings();
62 62
63 KListView *mExtensionView; 63 KListView *mExtensionView;
64 QCheckBox *mSearchReturnBox; 64 QCheckBox *mSearchReturnBox;
65 QCheckBox *mNameParsing; 65 QCheckBox *mNameParsing;
66 QCheckBox *mViewsSingleClickBox; 66 QCheckBox *mViewsSingleClickBox;
67 QCheckBox *mAutoSearchWithWildcardBox; 67 QCheckBox *mAutoSearchWithWildcardBox;
68 QCheckBox *mHideSearchOnSwitchBox; 68 QCheckBox *mHideSearchOnSwitchBox;
69 QCheckBox *mMultipleViewsAtOnce; 69 QCheckBox *mMultipleViewsAtOnce;
70 QCheckBox *mAskForQuit; 70 QCheckBox *mAskForQuit;
71 QCheckBox *mMenuBarBox; 71 QCheckBox *mMenuBarBox;
72 QCheckBox *mAskForDelete;
72 QPushButton *mConfigureButton; 73 QPushButton *mConfigureButton;
73 74
74 AddresseeWidget *mAddresseeWidget; 75 AddresseeWidget *mAddresseeWidget;
75}; 76};
76 77
77#endif 78#endif