summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorzautrix <zautrix>2004-10-08 20:03:23 (UTC)
committer zautrix <zautrix>2004-10-08 20:03:23 (UTC)
commit10a0e05cc4962d9412a7a5faf3d69a3caf6d1c34 (patch) (unidiff)
tree3105b985a9dbedd31dff52e14fe667eeff4f9ff4 /kaddressbook
parent13bd085e06b76228321f5a004759fcdf19cca711 (diff)
downloadkdepimpi-10a0e05cc4962d9412a7a5faf3d69a3caf6d1c34.zip
kdepimpi-10a0e05cc4962d9412a7a5faf3d69a3caf6d1c34.tar.gz
kdepimpi-10a0e05cc4962d9412a7a5faf3d69a3caf6d1c34.tar.bz2
added contact phone support
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp23
1 files changed, 19 insertions, 4 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index c5406bf..939296f 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,2886 +1,2901 @@
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/*s 24/*s
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include "kabcore.h" 31#include "kabcore.h"
32 32
33#include <stdaddressbook.h> 33#include <stdaddressbook.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kfiledialog.h> 35#include <kfiledialog.h>
36#include <qtimer.h> 36#include <qtimer.h>
37#include <qlabel.h> 37#include <qlabel.h>
38#include <qregexp.h> 38#include <qregexp.h>
39#include <qlineedit.h> 39#include <qlineedit.h>
40#include <qcheckbox.h> 40#include <qcheckbox.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qprogressbar.h> 42#include <qprogressbar.h>
43#include <libkdepim/phoneaccess.h> 43#include <libkdepim/phoneaccess.h>
44 44
45#ifndef KAB_EMBEDDED 45#ifndef KAB_EMBEDDED
46#include <qclipboard.h> 46#include <qclipboard.h>
47#include <qdir.h> 47#include <qdir.h>
48#include <qfile.h> 48#include <qfile.h>
49#include <qapplicaton.h> 49#include <qapplicaton.h>
50#include <qprogressbar.h> 50#include <qprogressbar.h>
51#include <qlayout.h> 51#include <qlayout.h>
52#include <qregexp.h> 52#include <qregexp.h>
53#include <qvbox.h> 53#include <qvbox.h>
54#include <kabc/addresseelist.h> 54#include <kabc/addresseelist.h>
55#include <kabc/errorhandler.h> 55#include <kabc/errorhandler.h>
56#include <kabc/resource.h> 56#include <kabc/resource.h>
57#include <kabc/vcardconverter.h> 57#include <kabc/vcardconverter.h>
58#include <kapplication.h> 58#include <kapplication.h>
59#include <kactionclasses.h> 59#include <kactionclasses.h>
60#include <kcmultidialog.h> 60#include <kcmultidialog.h>
61#include <kdebug.h> 61#include <kdebug.h>
62#include <kdeversion.h> 62#include <kdeversion.h>
63#include <kkeydialog.h> 63#include <kkeydialog.h>
64#include <kmessagebox.h> 64#include <kmessagebox.h>
65#include <kprinter.h> 65#include <kprinter.h>
66#include <kprotocolinfo.h> 66#include <kprotocolinfo.h>
67#include <kresources/selectdialog.h> 67#include <kresources/selectdialog.h>
68#include <kstandarddirs.h> 68#include <kstandarddirs.h>
69#include <ktempfile.h> 69#include <ktempfile.h>
70#include <kxmlguiclient.h> 70#include <kxmlguiclient.h>
71#include <kaboutdata.h> 71#include <kaboutdata.h>
72#include <libkdepim/categoryselectdialog.h> 72#include <libkdepim/categoryselectdialog.h>
73 73
74#include "addresseeutil.h" 74#include "addresseeutil.h"
75#include "addresseeeditordialog.h" 75#include "addresseeeditordialog.h"
76#include "extensionmanager.h" 76#include "extensionmanager.h"
77#include "kstdaction.h" 77#include "kstdaction.h"
78#include "kaddressbookservice.h" 78#include "kaddressbookservice.h"
79#include "ldapsearchdialog.h" 79#include "ldapsearchdialog.h"
80#include "printing/printingwizard.h" 80#include "printing/printingwizard.h"
81#else // KAB_EMBEDDED 81#else // KAB_EMBEDDED
82 82
83#include <kapplication.h> 83#include <kapplication.h>
84#include "KDGanttMinimizeSplitter.h" 84#include "KDGanttMinimizeSplitter.h"
85#include "kaddressbookmain.h" 85#include "kaddressbookmain.h"
86#include "kactioncollection.h" 86#include "kactioncollection.h"
87#include "addresseedialog.h" 87#include "addresseedialog.h"
88//US 88//US
89#include <addresseeview.h> 89#include <addresseeview.h>
90 90
91#include <qapp.h> 91#include <qapp.h>
92#include <qmenubar.h> 92#include <qmenubar.h>
93//#include <qtoolbar.h> 93//#include <qtoolbar.h>
94#include <qmessagebox.h> 94#include <qmessagebox.h>
95#include <kdebug.h> 95#include <kdebug.h>
96#include <kiconloader.h> // needed for SmallIcon 96#include <kiconloader.h> // needed for SmallIcon
97#include <kresources/kcmkresources.h> 97#include <kresources/kcmkresources.h>
98#include <ktoolbar.h> 98#include <ktoolbar.h>
99 99
100 100
101//#include <qlabel.h> 101//#include <qlabel.h>
102 102
103 103
104#ifndef DESKTOP_VERSION 104#ifndef DESKTOP_VERSION
105#include <qpe/ir.h> 105#include <qpe/ir.h>
106#include <qpe/qpemenubar.h> 106#include <qpe/qpemenubar.h>
107#include <qtopia/qcopenvelope_qws.h> 107#include <qtopia/qcopenvelope_qws.h>
108#else 108#else
109 109
110#include <qmenubar.h> 110#include <qmenubar.h>
111#endif 111#endif
112 112
113#endif // KAB_EMBEDDED 113#endif // KAB_EMBEDDED
114#include "kcmconfigs/kcmkabconfig.h" 114#include "kcmconfigs/kcmkabconfig.h"
115#include "kcmconfigs/kcmkdepimconfig.h" 115#include "kcmconfigs/kcmkdepimconfig.h"
116#include "kpimglobalprefs.h" 116#include "kpimglobalprefs.h"
117#include "externalapphandler.h" 117#include "externalapphandler.h"
118 118
119 119
120#include <kresources/selectdialog.h> 120#include <kresources/selectdialog.h>
121#include <kmessagebox.h> 121#include <kmessagebox.h>
122 122
123#include <picture.h> 123#include <picture.h>
124#include <resource.h> 124#include <resource.h>
125 125
126//US#include <qsplitter.h> 126//US#include <qsplitter.h>
127#include <qmap.h> 127#include <qmap.h>
128#include <qdir.h> 128#include <qdir.h>
129#include <qfile.h> 129#include <qfile.h>
130#include <qvbox.h> 130#include <qvbox.h>
131#include <qlayout.h> 131#include <qlayout.h>
132#include <qclipboard.h> 132#include <qclipboard.h>
133#include <qtextstream.h> 133#include <qtextstream.h>
134 134
135#include <libkdepim/categoryselectdialog.h> 135#include <libkdepim/categoryselectdialog.h>
136#include <kabc/vcardconverter.h> 136#include <kabc/vcardconverter.h>
137 137
138 138
139#include "addresseeutil.h" 139#include "addresseeutil.h"
140#include "undocmds.h" 140#include "undocmds.h"
141#include "addresseeeditordialog.h" 141#include "addresseeeditordialog.h"
142#include "viewmanager.h" 142#include "viewmanager.h"
143#include "details/detailsviewcontainer.h" 143#include "details/detailsviewcontainer.h"
144#include "kabprefs.h" 144#include "kabprefs.h"
145#include "xxportmanager.h" 145#include "xxportmanager.h"
146#include "incsearchwidget.h" 146#include "incsearchwidget.h"
147#include "jumpbuttonbar.h" 147#include "jumpbuttonbar.h"
148#include "extensionmanager.h" 148#include "extensionmanager.h"
149#include "addresseeconfig.h" 149#include "addresseeconfig.h"
150#include <kcmultidialog.h> 150#include <kcmultidialog.h>
151 151
152#ifdef _WIN32_ 152#ifdef _WIN32_
153 153
154#include "kaimportoldialog.h" 154#include "kaimportoldialog.h"
155#else 155#else
156#include <unistd.h> 156#include <unistd.h>
157#endif 157#endif
158// sync includes 158// sync includes
159#include <libkdepim/ksyncprofile.h> 159#include <libkdepim/ksyncprofile.h>
160#include <libkdepim/ksyncprefsdialog.h> 160#include <libkdepim/ksyncprefsdialog.h>
161 161
162class KAex2phonePrefs : public QDialog 162class KAex2phonePrefs : public QDialog
163{ 163{
164 public: 164 public:
165 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 165 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
166 QDialog( parent, name, true ) 166 QDialog( parent, name, true )
167 { 167 {
168 setCaption( i18n("Export to phone options") ); 168 setCaption( i18n("Export to phone options") );
169 QVBoxLayout* lay = new QVBoxLayout( this ); 169 QVBoxLayout* lay = new QVBoxLayout( this );
170 lay->setSpacing( 3 ); 170 lay->setSpacing( 3 );
171 lay->setMargin( 3 ); 171 lay->setMargin( 3 );
172 QLabel *lab; 172 QLabel *lab;
173 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 173 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
174 lab->setAlignment (AlignHCenter ); 174 lab->setAlignment (AlignHCenter );
175 QHBox* temphb; 175 QHBox* temphb;
176 temphb = new QHBox( this ); 176 temphb = new QHBox( this );
177 new QLabel( i18n("I/O device: "), temphb ); 177 new QLabel( i18n("I/O device: "), temphb );
178 mPhoneDevice = new QLineEdit( temphb); 178 mPhoneDevice = new QLineEdit( temphb);
179 lay->addWidget( temphb ); 179 lay->addWidget( temphb );
180 temphb = new QHBox( this ); 180 temphb = new QHBox( this );
181 new QLabel( i18n("Connection: "), temphb ); 181 new QLabel( i18n("Connection: "), temphb );
182 mPhoneConnection = new QLineEdit( temphb); 182 mPhoneConnection = new QLineEdit( temphb);
183 lay->addWidget( temphb ); 183 lay->addWidget( temphb );
184 temphb = new QHBox( this ); 184 temphb = new QHBox( this );
185 new QLabel( i18n("Model(opt.): "), temphb ); 185 new QLabel( i18n("Model(opt.): "), temphb );
186 mPhoneModel = new QLineEdit( temphb); 186 mPhoneModel = new QLineEdit( temphb);
187 lay->addWidget( temphb ); 187 lay->addWidget( temphb );
188 mWriteToSim= new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this ); 188 mWriteToSim= new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this );
189 lay->addWidget( mWriteToSim ); 189 lay->addWidget( mWriteToSim );
190 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) ); 190 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) );
191 lab->setAlignment (AlignHCenter ); 191 lab->setAlignment (AlignHCenter );
192 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 192 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
193 lay->addWidget( ok ); 193 lay->addWidget( ok );
194 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 194 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
195 lay->addWidget( cancel ); 195 lay->addWidget( cancel );
196 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 196 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
197 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 197 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
198 resize( 220, 240 ); 198 resize( 220, 240 );
199 199
200 } 200 }
201 201
202public: 202public:
203 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 203 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
204 QCheckBox* mWriteToSim; 204 QCheckBox* mWriteToSim;
205}; 205};
206 206
207bool pasteWithNewUid = true; 207bool pasteWithNewUid = true;
208 208
209#ifdef KAB_EMBEDDED 209#ifdef KAB_EMBEDDED
210KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 210KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
211 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 211 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
212 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 212 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
213 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 213 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
214#else //KAB_EMBEDDED 214#else //KAB_EMBEDDED
215KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 215KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
216 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 216 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
217 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 217 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
218 mReadWrite( readWrite ), mModified( false ) 218 mReadWrite( readWrite ), mModified( false )
219#endif //KAB_EMBEDDED 219#endif //KAB_EMBEDDED
220{ 220{
221 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 221 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
222 // syncManager->setBlockSave(false); 222 // syncManager->setBlockSave(false);
223 mExtensionBarSplitter = 0; 223 mExtensionBarSplitter = 0;
224 mIsPart = !parent->inherits( "KAddressBookMain" ); 224 mIsPart = !parent->inherits( "KAddressBookMain" );
225 225
226 mAddressBook = KABC::StdAddressBook::self(); 226 mAddressBook = KABC::StdAddressBook::self();
227 KABC::StdAddressBook::setAutomaticSave( false ); 227 KABC::StdAddressBook::setAutomaticSave( false );
228 228
229#ifndef KAB_EMBEDDED 229#ifndef KAB_EMBEDDED
230 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 230 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
231#endif //KAB_EMBEDDED 231#endif //KAB_EMBEDDED
232 232
233 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 233 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
234 SLOT( addressBookChanged() ) ); 234 SLOT( addressBookChanged() ) );
235 235
236#if 0 236#if 0
237 // LP moved to addressbook init method 237 // LP moved to addressbook init method
238 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 238 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
239 "X-Department", "KADDRESSBOOK" ); 239 "X-Department", "KADDRESSBOOK" );
240 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 240 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
241 "X-Profession", "KADDRESSBOOK" ); 241 "X-Profession", "KADDRESSBOOK" );
242 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 242 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
243 "X-AssistantsName", "KADDRESSBOOK" ); 243 "X-AssistantsName", "KADDRESSBOOK" );
244 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 244 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
245 "X-ManagersName", "KADDRESSBOOK" ); 245 "X-ManagersName", "KADDRESSBOOK" );
246 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 246 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
247 "X-SpousesName", "KADDRESSBOOK" ); 247 "X-SpousesName", "KADDRESSBOOK" );
248 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 248 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
249 "X-Office", "KADDRESSBOOK" ); 249 "X-Office", "KADDRESSBOOK" );
250 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 250 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
251 "X-IMAddress", "KADDRESSBOOK" ); 251 "X-IMAddress", "KADDRESSBOOK" );
252 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 252 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
253 "X-Anniversary", "KADDRESSBOOK" ); 253 "X-Anniversary", "KADDRESSBOOK" );
254 254
255 //US added this field to become compatible with Opie/qtopia addressbook 255 //US added this field to become compatible with Opie/qtopia addressbook
256 // values can be "female" or "male" or "". An empty field represents undefined. 256 // values can be "female" or "male" or "". An empty field represents undefined.
257 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 257 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
258 "X-Gender", "KADDRESSBOOK" ); 258 "X-Gender", "KADDRESSBOOK" );
259 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 259 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
260 "X-Children", "KADDRESSBOOK" ); 260 "X-Children", "KADDRESSBOOK" );
261 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 261 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
262 "X-FreeBusyUrl", "KADDRESSBOOK" ); 262 "X-FreeBusyUrl", "KADDRESSBOOK" );
263#endif 263#endif
264 initGUI(); 264 initGUI();
265 265
266 mIncSearchWidget->setFocus(); 266 mIncSearchWidget->setFocus();
267 267
268 268
269 connect( mViewManager, SIGNAL( selected( const QString& ) ), 269 connect( mViewManager, SIGNAL( selected( const QString& ) ),
270 SLOT( setContactSelected( const QString& ) ) ); 270 SLOT( setContactSelected( const QString& ) ) );
271 connect( mViewManager, SIGNAL( executed( const QString& ) ), 271 connect( mViewManager, SIGNAL( executed( const QString& ) ),
272 SLOT( executeContact( const QString& ) ) ); 272 SLOT( executeContact( const QString& ) ) );
273 273
274 connect( mViewManager, SIGNAL( deleteRequest( ) ), 274 connect( mViewManager, SIGNAL( deleteRequest( ) ),
275 SLOT( deleteContacts( ) ) ); 275 SLOT( deleteContacts( ) ) );
276 connect( mViewManager, SIGNAL( modified() ), 276 connect( mViewManager, SIGNAL( modified() ),
277 SLOT( setModified() ) ); 277 SLOT( setModified() ) );
278 278
279 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 279 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
280 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) ); 280 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
281 281
282 connect( mXXPortManager, SIGNAL( modified() ), 282 connect( mXXPortManager, SIGNAL( modified() ),
283 SLOT( setModified() ) ); 283 SLOT( setModified() ) );
284 284
285 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 285 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
286 SLOT( incrementalSearch( const QString& ) ) ); 286 SLOT( incrementalSearch( const QString& ) ) );
287 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 287 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
288 mJumpButtonBar, SLOT( recreateButtons() ) ); 288 mJumpButtonBar, SLOT( recreateButtons() ) );
289 289
290 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 290 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
291 SLOT( sendMail( const QString& ) ) ); 291 SLOT( sendMail( const QString& ) ) );
292 292
293 293
294 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&))); 294 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&)));
295 connect( ExternalAppHandler::instance(), SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)),this, SLOT(requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&))); 295 connect( ExternalAppHandler::instance(), SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)),this, SLOT(requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)));
296 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&))); 296 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&)));
297 297
298 298
299#ifndef KAB_EMBEDDED 299#ifndef KAB_EMBEDDED
300 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 300 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
301 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 301 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
302 302
303 connect( mDetails, SIGNAL( browse( const QString& ) ), 303 connect( mDetails, SIGNAL( browse( const QString& ) ),
304 SLOT( browse( const QString& ) ) ); 304 SLOT( browse( const QString& ) ) );
305 305
306 306
307 mAddressBookService = new KAddressBookService( this ); 307 mAddressBookService = new KAddressBookService( this );
308 308
309#endif //KAB_EMBEDDED 309#endif //KAB_EMBEDDED
310 mEditorDialog = 0; 310 mEditorDialog = 0;
311 createAddresseeEditorDialog( this ); 311 createAddresseeEditorDialog( this );
312 setModified( false ); 312 setModified( false );
313} 313}
314 314
315KABCore::~KABCore() 315KABCore::~KABCore()
316{ 316{
317 // save(); 317 // save();
318 //saveSettings(); 318 //saveSettings();
319 //KABPrefs::instance()->writeConfig(); 319 //KABPrefs::instance()->writeConfig();
320 delete AddresseeConfig::instance(); 320 delete AddresseeConfig::instance();
321 mAddressBook = 0; 321 mAddressBook = 0;
322 KABC::StdAddressBook::close(); 322 KABC::StdAddressBook::close();
323 323
324 delete syncManager; 324 delete syncManager;
325} 325}
326 326
327void KABCore::restoreSettings() 327void KABCore::restoreSettings()
328{ 328{
329 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce; 329 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce;
330 330
331 bool state; 331 bool state;
332 332
333 if (mMultipleViewsAtOnce) 333 if (mMultipleViewsAtOnce)
334 state = KABPrefs::instance()->mDetailsPageVisible; 334 state = KABPrefs::instance()->mDetailsPageVisible;
335 else 335 else
336 state = false; 336 state = false;
337 337
338 mActionDetails->setChecked( state ); 338 mActionDetails->setChecked( state );
339 setDetailsVisible( state ); 339 setDetailsVisible( state );
340 340
341 state = KABPrefs::instance()->mJumpButtonBarVisible; 341 state = KABPrefs::instance()->mJumpButtonBarVisible;
342 342
343 mActionJumpBar->setChecked( state ); 343 mActionJumpBar->setChecked( state );
344 setJumpButtonBarVisible( state ); 344 setJumpButtonBarVisible( state );
345/*US 345/*US
346 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 346 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
347 if ( splitterSize.count() == 0 ) { 347 if ( splitterSize.count() == 0 ) {
348 splitterSize.append( width() / 2 ); 348 splitterSize.append( width() / 2 );
349 splitterSize.append( width() / 2 ); 349 splitterSize.append( width() / 2 );
350 } 350 }
351 mMiniSplitter->setSizes( splitterSize ); 351 mMiniSplitter->setSizes( splitterSize );
352 if ( mExtensionBarSplitter ) { 352 if ( mExtensionBarSplitter ) {
353 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 353 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
354 if ( splitterSize.count() == 0 ) { 354 if ( splitterSize.count() == 0 ) {
355 splitterSize.append( width() / 2 ); 355 splitterSize.append( width() / 2 );
356 splitterSize.append( width() / 2 ); 356 splitterSize.append( width() / 2 );
357 } 357 }
358 mExtensionBarSplitter->setSizes( splitterSize ); 358 mExtensionBarSplitter->setSizes( splitterSize );
359 359
360 } 360 }
361*/ 361*/
362 mViewManager->restoreSettings(); 362 mViewManager->restoreSettings();
363 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 363 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
364 mExtensionManager->restoreSettings(); 364 mExtensionManager->restoreSettings();
365#ifdef DESKTOP_VERSION 365#ifdef DESKTOP_VERSION
366 int wid = width(); 366 int wid = width();
367 if ( wid < 10 ) 367 if ( wid < 10 )
368 wid = 400; 368 wid = 400;
369#else 369#else
370 int wid = QApplication::desktop()->width(); 370 int wid = QApplication::desktop()->width();
371 if ( wid < 640 ) 371 if ( wid < 640 )
372 wid = QApplication::desktop()->height(); 372 wid = QApplication::desktop()->height();
373#endif 373#endif
374 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter; 374 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter;
375 if ( true /*splitterSize.count() == 0*/ ) { 375 if ( true /*splitterSize.count() == 0*/ ) {
376 splitterSize.append( wid / 2 ); 376 splitterSize.append( wid / 2 );
377 splitterSize.append( wid / 2 ); 377 splitterSize.append( wid / 2 );
378 } 378 }
379 mMiniSplitter->setSizes( splitterSize ); 379 mMiniSplitter->setSizes( splitterSize );
380 if ( mExtensionBarSplitter ) { 380 if ( mExtensionBarSplitter ) {
381 //splitterSize = KABPrefs::instance()->mExtensionsSplitter; 381 //splitterSize = KABPrefs::instance()->mExtensionsSplitter;
382 if ( true /*splitterSize.count() == 0*/ ) { 382 if ( true /*splitterSize.count() == 0*/ ) {
383 splitterSize.append( wid / 2 ); 383 splitterSize.append( wid / 2 );
384 splitterSize.append( wid / 2 ); 384 splitterSize.append( wid / 2 );
385 } 385 }
386 mExtensionBarSplitter->setSizes( splitterSize ); 386 mExtensionBarSplitter->setSizes( splitterSize );
387 387
388 } 388 }
389 389
390 390
391} 391}
392 392
393void KABCore::saveSettings() 393void KABCore::saveSettings()
394{ 394{
395 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 395 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
396 if ( mExtensionBarSplitter ) 396 if ( mExtensionBarSplitter )
397 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 397 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
398 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 398 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
399 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 399 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
400#ifndef KAB_EMBEDDED 400#ifndef KAB_EMBEDDED
401 401
402 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 402 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
403 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 403 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
404#endif //KAB_EMBEDDED 404#endif //KAB_EMBEDDED
405 mExtensionManager->saveSettings(); 405 mExtensionManager->saveSettings();
406 mViewManager->saveSettings(); 406 mViewManager->saveSettings();
407 407
408 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 408 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
409} 409}
410 410
411KABC::AddressBook *KABCore::addressBook() const 411KABC::AddressBook *KABCore::addressBook() const
412{ 412{
413 return mAddressBook; 413 return mAddressBook;
414} 414}
415 415
416KConfig *KABCore::config() 416KConfig *KABCore::config()
417{ 417{
418#ifndef KAB_EMBEDDED 418#ifndef KAB_EMBEDDED
419 return KABPrefs::instance()->config(); 419 return KABPrefs::instance()->config();
420#else //KAB_EMBEDDED 420#else //KAB_EMBEDDED
421 return KABPrefs::instance()->getConfig(); 421 return KABPrefs::instance()->getConfig();
422#endif //KAB_EMBEDDED 422#endif //KAB_EMBEDDED
423} 423}
424 424
425KActionCollection *KABCore::actionCollection() const 425KActionCollection *KABCore::actionCollection() const
426{ 426{
427 return mGUIClient->actionCollection(); 427 return mGUIClient->actionCollection();
428} 428}
429 429
430KABC::Field *KABCore::currentSearchField() const 430KABC::Field *KABCore::currentSearchField() const
431{ 431{
432 if (mIncSearchWidget) 432 if (mIncSearchWidget)
433 return mIncSearchWidget->currentField(); 433 return mIncSearchWidget->currentField();
434 else 434 else
435 return 0; 435 return 0;
436} 436}
437 437
438QStringList KABCore::selectedUIDs() const 438QStringList KABCore::selectedUIDs() const
439{ 439{
440 return mViewManager->selectedUids(); 440 return mViewManager->selectedUids();
441} 441}
442 442
443KABC::Resource *KABCore::requestResource( QWidget *parent ) 443KABC::Resource *KABCore::requestResource( QWidget *parent )
444{ 444{
445 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 445 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
446 446
447 QPtrList<KRES::Resource> kresResources; 447 QPtrList<KRES::Resource> kresResources;
448 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 448 QPtrListIterator<KABC::Resource> resIt( kabcResources );
449 KABC::Resource *resource; 449 KABC::Resource *resource;
450 while ( ( resource = resIt.current() ) != 0 ) { 450 while ( ( resource = resIt.current() ) != 0 ) {
451 ++resIt; 451 ++resIt;
452 if ( !resource->readOnly() ) { 452 if ( !resource->readOnly() ) {
453 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 453 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
454 if ( res ) 454 if ( res )
455 kresResources.append( res ); 455 kresResources.append( res );
456 } 456 }
457 } 457 }
458 458
459 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 459 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
460 return static_cast<KABC::Resource*>( res ); 460 return static_cast<KABC::Resource*>( res );
461} 461}
462 462
463#ifndef KAB_EMBEDDED 463#ifndef KAB_EMBEDDED
464KAboutData *KABCore::createAboutData() 464KAboutData *KABCore::createAboutData()
465#else //KAB_EMBEDDED 465#else //KAB_EMBEDDED
466void KABCore::createAboutData() 466void KABCore::createAboutData()
467#endif //KAB_EMBEDDED 467#endif //KAB_EMBEDDED
468{ 468{
469#ifndef KAB_EMBEDDED 469#ifndef KAB_EMBEDDED
470 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 470 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
471 "3.1", I18N_NOOP( "The KDE Address Book" ), 471 "3.1", I18N_NOOP( "The KDE Address Book" ),
472 KAboutData::License_GPL_V2, 472 KAboutData::License_GPL_V2,
473 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 473 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
474 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 474 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
475 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 475 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
476 about->addAuthor( "Cornelius Schumacher", 476 about->addAuthor( "Cornelius Schumacher",
477 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 477 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
478 "schumacher@kde.org" ); 478 "schumacher@kde.org" );
479 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 479 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
480 "mpilone@slac.com" ); 480 "mpilone@slac.com" );
481 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 481 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
482 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 482 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
483 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 483 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
484 "michel@klaralvdalens-datakonsult.se" ); 484 "michel@klaralvdalens-datakonsult.se" );
485 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 485 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
486 "hansen@kde.org" ); 486 "hansen@kde.org" );
487 487
488 return about; 488 return about;
489#endif //KAB_EMBEDDED 489#endif //KAB_EMBEDDED
490 490
491 QString version; 491 QString version;
492#include <../version> 492#include <../version>
493 QMessageBox::about( this, "About KAddressbook/Pi", 493 QMessageBox::about( this, "About KAddressbook/Pi",
494 "KAddressbook/Platform-independent\n" 494 "KAddressbook/Platform-independent\n"
495 "(KA/Pi) " +version + " - " + 495 "(KA/Pi) " +version + " - " +
496#ifdef DESKTOP_VERSION 496#ifdef DESKTOP_VERSION
497 "Desktop Edition\n" 497 "Desktop Edition\n"
498#else 498#else
499 "PDA-Edition\n" 499 "PDA-Edition\n"
500 "for: Zaurus 5500 / 7x0 / 8x0\n" 500 "for: Zaurus 5500 / 7x0 / 8x0\n"
501#endif 501#endif
502 502
503 "(c) 2004 Ulf Schenk\n" 503 "(c) 2004 Ulf Schenk\n"
504 "(c) 2004 Lutz Rogowski\n" 504 "(c) 2004 Lutz Rogowski\n"
505 "(c) 1997-2003, The KDE PIM Team\n" 505 "(c) 1997-2003, The KDE PIM Team\n"
506 "Tobias Koenig Current maintainer\ntokoe@kde.org\n" 506 "Tobias Koenig Current maintainer\ntokoe@kde.org\n"
507 "Don Sanders Original author\n" 507 "Don Sanders Original author\n"
508 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n" 508 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n"
509 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n" 509 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n"
510 "Greg Stern DCOP interface\n" 510 "Greg Stern DCOP interface\n"
511 "Mark Westcot Contact pinning\n" 511 "Mark Westcot Contact pinning\n"
512 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 512 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
513 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n" 513 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n"
514#ifdef _WIN32_ 514#ifdef _WIN32_
515 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" 515 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n"
516#endif 516#endif
517 ); 517 );
518} 518}
519 519
520void KABCore::setContactSelected( const QString &uid ) 520void KABCore::setContactSelected( const QString &uid )
521{ 521{
522 KABC::Addressee addr = mAddressBook->findByUid( uid ); 522 KABC::Addressee addr = mAddressBook->findByUid( uid );
523 if ( !mDetails->isHidden() ) 523 if ( !mDetails->isHidden() )
524 mDetails->setAddressee( addr ); 524 mDetails->setAddressee( addr );
525 525
526 if ( !addr.isEmpty() ) { 526 if ( !addr.isEmpty() ) {
527 emit contactSelected( addr.formattedName() ); 527 emit contactSelected( addr.formattedName() );
528 KABC::Picture pic = addr.photo(); 528 KABC::Picture pic = addr.photo();
529 if ( pic.isIntern() ) { 529 if ( pic.isIntern() ) {
530//US emit contactSelected( pic.data() ); 530//US emit contactSelected( pic.data() );
531//US instead use: 531//US instead use:
532 QPixmap px; 532 QPixmap px;
533 if (pic.data().isNull() != true) 533 if (pic.data().isNull() != true)
534 { 534 {
535 px.convertFromImage(pic.data()); 535 px.convertFromImage(pic.data());
536 } 536 }
537 537
538 emit contactSelected( px ); 538 emit contactSelected( px );
539 } 539 }
540 } 540 }
541 541
542 542
543 mExtensionManager->setSelectionChanged(); 543 mExtensionManager->setSelectionChanged();
544 544
545 // update the actions 545 // update the actions
546 bool selected = !uid.isEmpty(); 546 bool selected = !uid.isEmpty();
547 547
548 if ( mReadWrite ) { 548 if ( mReadWrite ) {
549 mActionCut->setEnabled( selected ); 549 mActionCut->setEnabled( selected );
550 mActionPaste->setEnabled( selected ); 550 mActionPaste->setEnabled( selected );
551 } 551 }
552 552
553 mActionCopy->setEnabled( selected ); 553 mActionCopy->setEnabled( selected );
554 mActionDelete->setEnabled( selected ); 554 mActionDelete->setEnabled( selected );
555 mActionEditAddressee->setEnabled( selected ); 555 mActionEditAddressee->setEnabled( selected );
556 mActionMail->setEnabled( selected ); 556 mActionMail->setEnabled( selected );
557 mActionMailVCard->setEnabled( selected ); 557 mActionMailVCard->setEnabled( selected );
558 //if (mActionBeam) 558 //if (mActionBeam)
559 //mActionBeam->setEnabled( selected ); 559 //mActionBeam->setEnabled( selected );
560 560
561 if (mActionBeamVCard) 561 if (mActionBeamVCard)
562 mActionBeamVCard->setEnabled( selected ); 562 mActionBeamVCard->setEnabled( selected );
563 563
564 mActionExport2phone->setEnabled( selected ); 564 mActionExport2phone->setEnabled( selected );
565 mActionWhoAmI->setEnabled( selected ); 565 mActionWhoAmI->setEnabled( selected );
566 mActionCategories->setEnabled( selected ); 566 mActionCategories->setEnabled( selected );
567} 567}
568 568
569void KABCore::sendMail() 569void KABCore::sendMail()
570{ 570{
571 sendMail( mViewManager->selectedEmails().join( ", " ) ); 571 sendMail( mViewManager->selectedEmails().join( ", " ) );
572} 572}
573 573
574void KABCore::sendMail( const QString& emaillist ) 574void KABCore::sendMail( const QString& emaillist )
575{ 575{
576 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " 576 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
577 if (emaillist.contains(",") > 0) 577 if (emaillist.contains(",") > 0)
578 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); 578 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
579 else 579 else
580 ExternalAppHandler::instance()->mailToOneContact( emaillist ); 580 ExternalAppHandler::instance()->mailToOneContact( emaillist );
581} 581}
582 582
583 583
584 584
585void KABCore::mailVCard() 585void KABCore::mailVCard()
586{ 586{
587 QStringList uids = mViewManager->selectedUids(); 587 QStringList uids = mViewManager->selectedUids();
588 if ( !uids.isEmpty() ) 588 if ( !uids.isEmpty() )
589 mailVCard( uids ); 589 mailVCard( uids );
590} 590}
591 591
592void KABCore::mailVCard( const QStringList& uids ) 592void KABCore::mailVCard( const QStringList& uids )
593{ 593{
594 QStringList urls; 594 QStringList urls;
595 595
596// QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 596// QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
597 597
598 QString dirName = "/tmp/" + KApplication::randomString( 8 ); 598 QString dirName = "/tmp/" + KApplication::randomString( 8 );
599 599
600 600
601 601
602 QDir().mkdir( dirName, true ); 602 QDir().mkdir( dirName, true );
603 603
604 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 604 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
605 KABC::Addressee a = mAddressBook->findByUid( *it ); 605 KABC::Addressee a = mAddressBook->findByUid( *it );
606 606
607 if ( a.isEmpty() ) 607 if ( a.isEmpty() )
608 continue; 608 continue;
609 609
610 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 610 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
611 611
612 QString fileName = dirName + "/" + name; 612 QString fileName = dirName + "/" + name;
613 613
614 QFile outFile(fileName); 614 QFile outFile(fileName);
615 615
616 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 616 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
617 KABC::VCardConverter converter; 617 KABC::VCardConverter converter;
618 QString vcard; 618 QString vcard;
619 619
620 converter.addresseeToVCard( a, vcard ); 620 converter.addresseeToVCard( a, vcard );
621 621
622 QTextStream t( &outFile ); // use a text stream 622 QTextStream t( &outFile ); // use a text stream
623 t.setEncoding( QTextStream::UnicodeUTF8 ); 623 t.setEncoding( QTextStream::UnicodeUTF8 );
624 t << vcard; 624 t << vcard;
625 625
626 outFile.close(); 626 outFile.close();
627 627
628 urls.append( fileName ); 628 urls.append( fileName );
629 } 629 }
630 } 630 }
631 631
632 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); 632 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") );
633 633
634 634
635/*US 635/*US
636 kapp->invokeMailer( QString::null, QString::null, QString::null, 636 kapp->invokeMailer( QString::null, QString::null, QString::null,
637 QString::null, // subject 637 QString::null, // subject
638 QString::null, // body 638 QString::null, // body
639 QString::null, 639 QString::null,
640 urls ); // attachments 640 urls ); // attachments
641*/ 641*/
642 642
643} 643}
644 644
645/** 645/**
646 Beams the "WhoAmI contact. 646 Beams the "WhoAmI contact.
647*/ 647*/
648void KABCore::beamMySelf() 648void KABCore::beamMySelf()
649{ 649{
650 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 650 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
651 if (!a.isEmpty()) 651 if (!a.isEmpty())
652 { 652 {
653 QStringList uids; 653 QStringList uids;
654 uids << a.uid(); 654 uids << a.uid();
655 655
656 beamVCard(uids); 656 beamVCard(uids);
657 } else { 657 } else {
658 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 658 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
659 659
660 660
661 } 661 }
662} 662}
663 663
664void KABCore::export2phone() 664void KABCore::export2phone()
665{ 665{
666 666
667 KAex2phonePrefs ex2phone; 667 KAex2phonePrefs ex2phone;
668 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 668 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
669 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 669 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
670 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 670 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
671 671
672 if ( !ex2phone.exec() ) { 672 if ( !ex2phone.exec() ) {
673 return; 673 return;
674 } 674 }
675 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 675 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
676 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 676 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
677 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 677 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
678 678
679 679
680 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 680 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
681 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 681 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
682 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 682 KPimGlobalPrefs::instance()->mEx2PhoneModel );
683 683
684 QStringList uids = mViewManager->selectedUids(); 684 QStringList uids = mViewManager->selectedUids();
685 if ( uids.isEmpty() ) 685 if ( uids.isEmpty() )
686 return; 686 return;
687 687
688#ifdef _WIN32_ 688#ifdef _WIN32_
689 QString fileName = locateLocal("tmp", "tempfile.vcf"); 689 QString fileName = locateLocal("tmp", "tempfile.vcf");
690#else 690#else
691 QString fileName = "/tmp/kdepimtemp.vcf"; 691 QString fileName = "/tmp/kdepimtemp.vcf";
692#endif 692#endif
693 693
694 KABC::VCardConverter converter; 694 KABC::VCardConverter converter;
695 QString description; 695 QString description;
696 QString datastream; 696 QString datastream;
697 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 697 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
698 KABC::Addressee a = mAddressBook->findByUid( *it ); 698 KABC::Addressee a = mAddressBook->findByUid( *it );
699 699
700 if ( a.isEmpty() ) 700 if ( a.isEmpty() )
701 continue; 701 continue;
702 a.simplifyEmails();
703 a.simplifyPhoneNumbers();
704 a.simplifyPhoneNumberTypes();
702 705
703 if (description.isEmpty()) 706 if (description.isEmpty())
704 description = a.formattedName(); 707 description = a.formattedName();
705
706 QString vcard; 708 QString vcard;
709 QString vcardnew;
707 converter.addresseeToVCard( a, vcard ); 710 converter.addresseeToVCard( a, vcard );
708 int start = 0; 711 int start = 0;
709 int next; 712 int next;
710 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 713 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
711 int semi = vcard.find(";", next); 714 int semi = vcard.find(";", next);
712 int dopp = vcard.find(":", next); 715 int dopp = vcard.find(":", next);
713 int sep; 716 int sep;
714 if ( semi < dopp && semi >= 0 ) 717 if ( semi < dopp && semi >= 0 )
715 sep = semi ; 718 sep = semi ;
716 else 719 else
717 sep = dopp; 720 sep = dopp;
718 datastream +=vcard.mid( start, next - start); 721 vcardnew +=vcard.mid( start, next - start);
719 datastream +=vcard.mid( next+5,sep -next -5 ).upper(); 722 vcardnew +=vcard.mid( next+5,sep -next -5 ).upper();
720 start = sep; 723 start = sep;
721 } 724 }
722 datastream += vcard.mid( start,vcard.length() ); 725 vcardnew += vcard.mid( start,vcard.length() );
726 vcard = "";
727 start = 0;
728 while ( (next = vcardnew.find("ADR", start) )>= 0 ) {
729 int sep = vcardnew.find(":", next);
730 vcard +=vcardnew.mid( start, next - start+3);
731 start = sep;
732 }
733 vcard += vcardnew.mid( start,vcardnew.length() );
734 vcard.replace ( QRegExp(";;;") , "" );
735 vcard.replace ( QRegExp(";;") , "" );
736 datastream += vcard;
737
723 } 738 }
724 QFile outFile(fileName); 739 QFile outFile(fileName);
725 if ( outFile.open(IO_WriteOnly) ) { 740 if ( outFile.open(IO_WriteOnly) ) {
726 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 741 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
727 QTextStream t( &outFile ); // use a text stream 742 QTextStream t( &outFile ); // use a text stream
728 t.setEncoding( QTextStream::UnicodeUTF8 ); 743 t.setEncoding( QTextStream::UnicodeUTF8 );
729 t <<datastream; 744 t <<datastream;
730 outFile.close(); 745 outFile.close();
731 if ( PhoneAccess::writeToPhone( fileName ) ) 746 if ( PhoneAccess::writeToPhone( fileName ) )
732 qDebug("Export okay "); 747 qDebug("Export okay ");
733 else 748 else
734 qDebug("Error export contacts "); 749 qDebug("Error export contacts ");
735 750
736 } else { 751 } else {
737 qDebug("Error open temp file "); 752 qDebug("Error open temp file ");
738 return; 753 return;
739 } 754 }
740 755
741 756
742#if 0 757#if 0
743 758
744 setCaption( i18n("Writing to phone...")); 759 setCaption( i18n("Writing to phone..."));
745 if ( PhoneFormat::writeToPhone( cal ) ) 760 if ( PhoneFormat::writeToPhone( cal ) )
746 setCaption( i18n("Export to phone successful!")); 761 setCaption( i18n("Export to phone successful!"));
747 else 762 else
748 setCaption( i18n("Error exporting to phone!")); 763 setCaption( i18n("Error exporting to phone!"));
749#endif 764#endif
750 765
751 766
752} 767}
753void KABCore::beamVCard() 768void KABCore::beamVCard()
754{ 769{
755 QStringList uids = mViewManager->selectedUids(); 770 QStringList uids = mViewManager->selectedUids();
756 if ( !uids.isEmpty() ) 771 if ( !uids.isEmpty() )
757 beamVCard( uids ); 772 beamVCard( uids );
758} 773}
759 774
760 775
761void KABCore::beamVCard(const QStringList& uids) 776void KABCore::beamVCard(const QStringList& uids)
762{ 777{
763/*US 778/*US
764 QString beamFilename; 779 QString beamFilename;
765 Opie::OPimContact c; 780 Opie::OPimContact c;
766 if ( actionPersonal->isOn() ) { 781 if ( actionPersonal->isOn() ) {
767 beamFilename = addressbookPersonalVCardName(); 782 beamFilename = addressbookPersonalVCardName();
768 if ( !QFile::exists( beamFilename ) ) 783 if ( !QFile::exists( beamFilename ) )
769 return; // can't beam a non-existent file 784 return; // can't beam a non-existent file
770 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 785 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
771 beamFilename ); 786 beamFilename );
772 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 787 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
773 Opie::OPimContactAccess::List allList = access->allRecords(); 788 Opie::OPimContactAccess::List allList = access->allRecords();
774 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first 789 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first
775 c = *it; 790 c = *it;
776 791
777 delete access; 792 delete access;
778 } else { 793 } else {
779 unlink( beamfile ); // delete if exists 794 unlink( beamfile ); // delete if exists
780 mkdir("/tmp/obex/", 0755); 795 mkdir("/tmp/obex/", 0755);
781 c = m_abView -> currentEntry(); 796 c = m_abView -> currentEntry();
782 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 797 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
783 beamfile ); 798 beamfile );
784 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 799 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
785 access->add( c ); 800 access->add( c );
786 access->save(); 801 access->save();
787 delete access; 802 delete access;
788 803
789 beamFilename = beamfile; 804 beamFilename = beamfile;
790 } 805 }
791 806
792 owarn << "Beaming: " << beamFilename << oendl; 807 owarn << "Beaming: " << beamFilename << oendl;
793*/ 808*/
794 809
795#if 0 810#if 0
796 QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 811 QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
797 812
798 QString dirName = tmpdir + "/" + KApplication::randomString( 8 ); 813 QString dirName = tmpdir + "/" + KApplication::randomString( 8 );
799 814
800 QString name = "contact.vcf"; 815 QString name = "contact.vcf";
801 816
802 QString fileName = dirName + "/" + name; 817 QString fileName = dirName + "/" + name;
803#endif 818#endif
804 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory 819 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory
805 // 820 //
806 QString fileName = "/tmp/kapibeamfile.vcf"; 821 QString fileName = "/tmp/kapibeamfile.vcf";
807 822
808 823
809 //QDir().mkdir( dirName, true ); 824 //QDir().mkdir( dirName, true );
810 825
811 826
812 KABC::VCardConverter converter; 827 KABC::VCardConverter converter;
813 QString description; 828 QString description;
814 QString datastream; 829 QString datastream;
815 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 830 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
816 KABC::Addressee a = mAddressBook->findByUid( *it ); 831 KABC::Addressee a = mAddressBook->findByUid( *it );
817 832
818 if ( a.isEmpty() ) 833 if ( a.isEmpty() )
819 continue; 834 continue;
820 835
821 if (description.isEmpty()) 836 if (description.isEmpty())
822 description = a.formattedName(); 837 description = a.formattedName();
823 838
824 QString vcard; 839 QString vcard;
825 converter.addresseeToVCard( a, vcard ); 840 converter.addresseeToVCard( a, vcard );
826 int start = 0; 841 int start = 0;
827 int next; 842 int next;
828 while ( (next = vcard.find("TYPE=", start) )>= 0 ) { 843 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
829 int semi = vcard.find(";", next); 844 int semi = vcard.find(";", next);
830 int dopp = vcard.find(":", next); 845 int dopp = vcard.find(":", next);
831 int sep; 846 int sep;
832 if ( semi < dopp && semi >= 0 ) 847 if ( semi < dopp && semi >= 0 )
833 sep = semi ; 848 sep = semi ;
834 else 849 else
835 sep = dopp; 850 sep = dopp;
836 datastream +=vcard.mid( start, next - start); 851 datastream +=vcard.mid( start, next - start);
837 datastream +=vcard.mid( next+5,sep -next -5 ).upper(); 852 datastream +=vcard.mid( next+5,sep -next -5 ).upper();
838 start = sep; 853 start = sep;
839 } 854 }
840 datastream += vcard.mid( start,vcard.length() ); 855 datastream += vcard.mid( start,vcard.length() );
841 } 856 }
842#ifndef DESKTOP_VERSION 857#ifndef DESKTOP_VERSION
843 QFile outFile(fileName); 858 QFile outFile(fileName);
844 if ( outFile.open(IO_WriteOnly) ) { 859 if ( outFile.open(IO_WriteOnly) ) {
845 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" ); 860 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
846 QTextStream t( &outFile ); // use a text stream 861 QTextStream t( &outFile ); // use a text stream
847 t.setEncoding( QTextStream::UnicodeUTF8 ); 862 t.setEncoding( QTextStream::UnicodeUTF8 );
848 t <<datastream; 863 t <<datastream;
849 outFile.close(); 864 outFile.close();
850 Ir *ir = new Ir( this ); 865 Ir *ir = new Ir( this );
851 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 866 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
852 ir->send( fileName, description, "text/x-vCard" ); 867 ir->send( fileName, description, "text/x-vCard" );
853 } else { 868 } else {
854 qDebug("Error open temp beam file "); 869 qDebug("Error open temp beam file ");
855 return; 870 return;
856 } 871 }
857#endif 872#endif
858 873
859} 874}
860 875
861void KABCore::beamDone( Ir *ir ) 876void KABCore::beamDone( Ir *ir )
862{ 877{
863#ifndef DESKTOP_VERSION 878#ifndef DESKTOP_VERSION
864 delete ir; 879 delete ir;
865#endif 880#endif
866} 881}
867 882
868 883
869void KABCore::browse( const QString& url ) 884void KABCore::browse( const QString& url )
870{ 885{
871#ifndef KAB_EMBEDDED 886#ifndef KAB_EMBEDDED
872 kapp->invokeBrowser( url ); 887 kapp->invokeBrowser( url );
873#else //KAB_EMBEDDED 888#else //KAB_EMBEDDED
874 qDebug("KABCore::browse must be fixed"); 889 qDebug("KABCore::browse must be fixed");
875#endif //KAB_EMBEDDED 890#endif //KAB_EMBEDDED
876} 891}
877 892
878void KABCore::selectAllContacts() 893void KABCore::selectAllContacts()
879{ 894{
880 mViewManager->setSelected( QString::null, true ); 895 mViewManager->setSelected( QString::null, true );
881} 896}
882 897
883void KABCore::deleteContacts() 898void KABCore::deleteContacts()
884{ 899{
885 QStringList uidList = mViewManager->selectedUids(); 900 QStringList uidList = mViewManager->selectedUids();
886 deleteContacts( uidList ); 901 deleteContacts( uidList );
887} 902}
888 903
889void KABCore::deleteContacts( const QStringList &uids ) 904void KABCore::deleteContacts( const QStringList &uids )
890{ 905{
891 if ( uids.count() > 0 ) { 906 if ( uids.count() > 0 ) {
892 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 907 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
893 UndoStack::instance()->push( command ); 908 UndoStack::instance()->push( command );
894 RedoStack::instance()->clear(); 909 RedoStack::instance()->clear();
895 910
896 // now if we deleted anything, refresh 911 // now if we deleted anything, refresh
897 setContactSelected( QString::null ); 912 setContactSelected( QString::null );
898 setModified( true ); 913 setModified( true );
899 } 914 }
900} 915}
901 916
902void KABCore::copyContacts() 917void KABCore::copyContacts()
903{ 918{
904 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 919 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
905 920
906 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 921 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
907 922
908 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 923 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
909 924
910 QClipboard *cb = QApplication::clipboard(); 925 QClipboard *cb = QApplication::clipboard();
911 cb->setText( clipText ); 926 cb->setText( clipText );
912} 927}
913 928
914void KABCore::cutContacts() 929void KABCore::cutContacts()
915{ 930{
916 QStringList uidList = mViewManager->selectedUids(); 931 QStringList uidList = mViewManager->selectedUids();
917 932
918//US if ( uidList.size() > 0 ) { 933//US if ( uidList.size() > 0 ) {
919 if ( uidList.count() > 0 ) { 934 if ( uidList.count() > 0 ) {
920 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); 935 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList );
921 UndoStack::instance()->push( command ); 936 UndoStack::instance()->push( command );
922 RedoStack::instance()->clear(); 937 RedoStack::instance()->clear();
923 938
924 setModified( true ); 939 setModified( true );
925 } 940 }
926} 941}
927 942
928void KABCore::pasteContacts() 943void KABCore::pasteContacts()
929{ 944{
930 QClipboard *cb = QApplication::clipboard(); 945 QClipboard *cb = QApplication::clipboard();
931 946
932 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); 947 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() );
933 948
934 pasteContacts( list ); 949 pasteContacts( list );
935} 950}
936 951
937void KABCore::pasteContacts( KABC::Addressee::List &list ) 952void KABCore::pasteContacts( KABC::Addressee::List &list )
938{ 953{
939 KABC::Resource *resource = requestResource( this ); 954 KABC::Resource *resource = requestResource( this );
940 KABC::Addressee::List::Iterator it; 955 KABC::Addressee::List::Iterator it;
941 for ( it = list.begin(); it != list.end(); ++it ) 956 for ( it = list.begin(); it != list.end(); ++it )
942 (*it).setResource( resource ); 957 (*it).setResource( resource );
943 958
944 PwPasteCommand *command = new PwPasteCommand( this, list ); 959 PwPasteCommand *command = new PwPasteCommand( this, list );
945 UndoStack::instance()->push( command ); 960 UndoStack::instance()->push( command );
946 RedoStack::instance()->clear(); 961 RedoStack::instance()->clear();
947 962
948 setModified( true ); 963 setModified( true );
949} 964}
950 965
951void KABCore::setWhoAmI() 966void KABCore::setWhoAmI()
952{ 967{
953 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 968 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
954 969
955 if ( addrList.count() > 1 ) { 970 if ( addrList.count() > 1 ) {
956 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 971 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
957 return; 972 return;
958 } 973 }
959 974
960 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 975 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
961 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 976 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
962 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 977 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
963} 978}
964 979
965void KABCore::setCategories() 980void KABCore::setCategories()
966{ 981{
967 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 982 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
968 if ( !dlg.exec() ) 983 if ( !dlg.exec() )
969 return; 984 return;
970 985
971 bool merge = false; 986 bool merge = false;
972 QString msg = i18n( "Merge with existing categories?" ); 987 QString msg = i18n( "Merge with existing categories?" );
973 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 988 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
974 merge = true; 989 merge = true;
975 990
976 QStringList categories = dlg.selectedCategories(); 991 QStringList categories = dlg.selectedCategories();
977 992
978 QStringList uids = mViewManager->selectedUids(); 993 QStringList uids = mViewManager->selectedUids();
979 QStringList::Iterator it; 994 QStringList::Iterator it;
980 for ( it = uids.begin(); it != uids.end(); ++it ) { 995 for ( it = uids.begin(); it != uids.end(); ++it ) {
981 KABC::Addressee addr = mAddressBook->findByUid( *it ); 996 KABC::Addressee addr = mAddressBook->findByUid( *it );
982 if ( !addr.isEmpty() ) { 997 if ( !addr.isEmpty() ) {
983 if ( !merge ) 998 if ( !merge )
984 addr.setCategories( categories ); 999 addr.setCategories( categories );
985 else { 1000 else {
986 QStringList addrCategories = addr.categories(); 1001 QStringList addrCategories = addr.categories();
987 QStringList::Iterator catIt; 1002 QStringList::Iterator catIt;
988 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 1003 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
989 if ( !addrCategories.contains( *catIt ) ) 1004 if ( !addrCategories.contains( *catIt ) )
990 addrCategories.append( *catIt ); 1005 addrCategories.append( *catIt );
991 } 1006 }
992 addr.setCategories( addrCategories ); 1007 addr.setCategories( addrCategories );
993 } 1008 }
994 1009
995 mAddressBook->insertAddressee( addr ); 1010 mAddressBook->insertAddressee( addr );
996 } 1011 }
997 } 1012 }
998 1013
999 if ( uids.count() > 0 ) 1014 if ( uids.count() > 0 )
1000 setModified( true ); 1015 setModified( true );
1001} 1016}
1002 1017
1003void KABCore::setSearchFields( const KABC::Field::List &fields ) 1018void KABCore::setSearchFields( const KABC::Field::List &fields )
1004{ 1019{
1005 mIncSearchWidget->setFields( fields ); 1020 mIncSearchWidget->setFields( fields );
1006} 1021}
1007 1022
1008void KABCore::incrementalSearch( const QString& text ) 1023void KABCore::incrementalSearch( const QString& text )
1009{ 1024{
1010 mViewManager->doSearch( text, mIncSearchWidget->currentField() ); 1025 mViewManager->doSearch( text, mIncSearchWidget->currentField() );
1011} 1026}
1012 1027
1013void KABCore::setModified() 1028void KABCore::setModified()
1014{ 1029{
1015 setModified( true ); 1030 setModified( true );
1016} 1031}
1017 1032
1018void KABCore::setModifiedWOrefresh() 1033void KABCore::setModifiedWOrefresh()
1019{ 1034{
1020 // qDebug("KABCore::setModifiedWOrefresh() "); 1035 // qDebug("KABCore::setModifiedWOrefresh() ");
1021 mModified = true; 1036 mModified = true;
1022 mActionSave->setEnabled( mModified ); 1037 mActionSave->setEnabled( mModified );
1023#ifdef DESKTOP_VERSION 1038#ifdef DESKTOP_VERSION
1024 mDetails->refreshView(); 1039 mDetails->refreshView();
1025#endif 1040#endif
1026 1041
1027} 1042}
1028void KABCore::setModified( bool modified ) 1043void KABCore::setModified( bool modified )
1029{ 1044{
1030 mModified = modified; 1045 mModified = modified;
1031 mActionSave->setEnabled( mModified ); 1046 mActionSave->setEnabled( mModified );
1032 1047
1033 if ( modified ) 1048 if ( modified )
1034 mJumpButtonBar->recreateButtons(); 1049 mJumpButtonBar->recreateButtons();
1035 1050
1036 mViewManager->refreshView(); 1051 mViewManager->refreshView();
1037 mDetails->refreshView(); 1052 mDetails->refreshView();
1038 1053
1039} 1054}
1040 1055
1041bool KABCore::modified() const 1056bool KABCore::modified() const
1042{ 1057{
1043 return mModified; 1058 return mModified;
1044} 1059}
1045 1060
1046void KABCore::contactModified( const KABC::Addressee &addr ) 1061void KABCore::contactModified( const KABC::Addressee &addr )
1047{ 1062{
1048 1063
1049 Command *command = 0; 1064 Command *command = 0;
1050 QString uid; 1065 QString uid;
1051 1066
1052 // check if it exists already 1067 // check if it exists already
1053 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 1068 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
1054 if ( origAddr.isEmpty() ) 1069 if ( origAddr.isEmpty() )
1055 command = new PwNewCommand( mAddressBook, addr ); 1070 command = new PwNewCommand( mAddressBook, addr );
1056 else { 1071 else {
1057 command = new PwEditCommand( mAddressBook, origAddr, addr ); 1072 command = new PwEditCommand( mAddressBook, origAddr, addr );
1058 uid = addr.uid(); 1073 uid = addr.uid();
1059 } 1074 }
1060 1075
1061 UndoStack::instance()->push( command ); 1076 UndoStack::instance()->push( command );
1062 RedoStack::instance()->clear(); 1077 RedoStack::instance()->clear();
1063 1078
1064 setModified( true ); 1079 setModified( true );
1065} 1080}
1066 1081
1067void KABCore::newContact() 1082void KABCore::newContact()
1068{ 1083{
1069 1084
1070 1085
1071 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources(); 1086 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources();
1072 1087
1073 QPtrList<KRES::Resource> kresResources; 1088 QPtrList<KRES::Resource> kresResources;
1074 QPtrListIterator<KABC::Resource> it( kabcResources ); 1089 QPtrListIterator<KABC::Resource> it( kabcResources );
1075 KABC::Resource *resource; 1090 KABC::Resource *resource;
1076 while ( ( resource = it.current() ) != 0 ) { 1091 while ( ( resource = it.current() ) != 0 ) {
1077 ++it; 1092 ++it;
1078 if ( !resource->readOnly() ) { 1093 if ( !resource->readOnly() ) {
1079 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 1094 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
1080 if ( res ) 1095 if ( res )
1081 kresResources.append( res ); 1096 kresResources.append( res );
1082 } 1097 }
1083 } 1098 }
1084 1099
1085 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); 1100 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this );
1086 resource = static_cast<KABC::Resource*>( res ); 1101 resource = static_cast<KABC::Resource*>( res );
1087 1102
1088 if ( resource ) { 1103 if ( resource ) {
1089 KABC::Addressee addr; 1104 KABC::Addressee addr;
1090 addr.setResource( resource ); 1105 addr.setResource( resource );
1091 mEditorDialog->setAddressee( addr ); 1106 mEditorDialog->setAddressee( addr );
1092 KApplication::execDialog ( mEditorDialog ); 1107 KApplication::execDialog ( mEditorDialog );
1093 1108
1094 } else 1109 } else
1095 return; 1110 return;
1096 1111
1097 // mEditorDict.insert( dialog->addressee().uid(), dialog ); 1112 // mEditorDict.insert( dialog->addressee().uid(), dialog );
1098 1113
1099 1114
1100} 1115}
1101 1116
1102void KABCore::addEmail( QString aStr ) 1117void KABCore::addEmail( QString aStr )
1103{ 1118{
1104#ifndef KAB_EMBEDDED 1119#ifndef KAB_EMBEDDED
1105 QString fullName, email; 1120 QString fullName, email;
1106 1121
1107 KABC::Addressee::parseEmailAddress( aStr, fullName, email ); 1122 KABC::Addressee::parseEmailAddress( aStr, fullName, email );
1108 1123
1109 // Try to lookup the addressee matching the email address 1124 // Try to lookup the addressee matching the email address
1110 bool found = false; 1125 bool found = false;
1111 QStringList emailList; 1126 QStringList emailList;
1112 KABC::AddressBook::Iterator it; 1127 KABC::AddressBook::Iterator it;
1113 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { 1128 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) {
1114 emailList = (*it).emails(); 1129 emailList = (*it).emails();
1115 if ( emailList.contains( email ) > 0 ) { 1130 if ( emailList.contains( email ) > 0 ) {
1116 found = true; 1131 found = true;
1117 (*it).setNameFromString( fullName ); 1132 (*it).setNameFromString( fullName );
1118 editContact( (*it).uid() ); 1133 editContact( (*it).uid() );
1119 } 1134 }
1120 } 1135 }
1121 1136
1122 if ( !found ) { 1137 if ( !found ) {
1123 KABC::Addressee addr; 1138 KABC::Addressee addr;
1124 addr.setNameFromString( fullName ); 1139 addr.setNameFromString( fullName );
1125 addr.insertEmail( email, true ); 1140 addr.insertEmail( email, true );
1126 1141
1127 mAddressBook->insertAddressee( addr ); 1142 mAddressBook->insertAddressee( addr );
1128 mViewManager->refreshView( addr.uid() ); 1143 mViewManager->refreshView( addr.uid() );
1129 editContact( addr.uid() ); 1144 editContact( addr.uid() );
1130 } 1145 }
1131#else //KAB_EMBEDDED 1146#else //KAB_EMBEDDED
1132 qDebug("KABCore::addEmail finsih method"); 1147 qDebug("KABCore::addEmail finsih method");
1133#endif //KAB_EMBEDDED 1148#endif //KAB_EMBEDDED
1134} 1149}
1135 1150
1136void KABCore::importVCard( const KURL &url, bool showPreview ) 1151void KABCore::importVCard( const KURL &url, bool showPreview )
1137{ 1152{
1138 mXXPortManager->importVCard( url, showPreview ); 1153 mXXPortManager->importVCard( url, showPreview );
1139} 1154}
1140void KABCore::importFromOL() 1155void KABCore::importFromOL()
1141{ 1156{
1142#ifdef _WIN32_ 1157#ifdef _WIN32_
1143 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); 1158 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this );
1144 idgl->exec(); 1159 idgl->exec();
1145 KABC::Addressee::List list = idgl->getAddressList(); 1160 KABC::Addressee::List list = idgl->getAddressList();
1146 if ( list.count() > 0 ) { 1161 if ( list.count() > 0 ) {
1147 KABC::Addressee::List listNew; 1162 KABC::Addressee::List listNew;
1148 KABC::Addressee::List listExisting; 1163 KABC::Addressee::List listExisting;
1149 KABC::Addressee::List::Iterator it; 1164 KABC::Addressee::List::Iterator it;
1150 KABC::AddressBook::Iterator iter; 1165 KABC::AddressBook::Iterator iter;
1151 for ( it = list.begin(); it != list.end(); ++it ) { 1166 for ( it = list.begin(); it != list.end(); ++it ) {
1152 if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) 1167 if ( mAddressBook->findByUid((*it).uid() ).isEmpty())
1153 listNew.append( (*it) ); 1168 listNew.append( (*it) );
1154 else 1169 else
1155 listExisting.append( (*it) ); 1170 listExisting.append( (*it) );
1156 } 1171 }
1157 if ( listExisting.count() > 0 ) 1172 if ( listExisting.count() > 0 )
1158 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); 1173 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ));
1159 if ( listNew.count() > 0 ) { 1174 if ( listNew.count() > 0 ) {
1160 pasteWithNewUid = false; 1175 pasteWithNewUid = false;
1161 pasteContacts( listNew ); 1176 pasteContacts( listNew );
1162 pasteWithNewUid = true; 1177 pasteWithNewUid = true;
1163 } 1178 }
1164 } 1179 }
1165 delete idgl; 1180 delete idgl;
1166#endif 1181#endif
1167} 1182}
1168 1183
1169void KABCore::importVCard( const QString &vCard, bool showPreview ) 1184void KABCore::importVCard( const QString &vCard, bool showPreview )
1170{ 1185{
1171 mXXPortManager->importVCard( vCard, showPreview ); 1186 mXXPortManager->importVCard( vCard, showPreview );
1172} 1187}
1173 1188
1174//US added a second method without defaultparameter 1189//US added a second method without defaultparameter
1175void KABCore::editContact2() { 1190void KABCore::editContact2() {
1176 editContact( QString::null ); 1191 editContact( QString::null );
1177} 1192}
1178 1193
1179void KABCore::editContact( const QString &uid ) 1194void KABCore::editContact( const QString &uid )
1180{ 1195{
1181 1196
1182 if ( mExtensionManager->isQuickEditVisible() ) 1197 if ( mExtensionManager->isQuickEditVisible() )
1183 return; 1198 return;
1184 1199
1185 // First, locate the contact entry 1200 // First, locate the contact entry
1186 QString localUID = uid; 1201 QString localUID = uid;
1187 if ( localUID.isNull() ) { 1202 if ( localUID.isNull() ) {
1188 QStringList uidList = mViewManager->selectedUids(); 1203 QStringList uidList = mViewManager->selectedUids();
1189 if ( uidList.count() > 0 ) 1204 if ( uidList.count() > 0 )
1190 localUID = *( uidList.at( 0 ) ); 1205 localUID = *( uidList.at( 0 ) );
1191 } 1206 }
1192 1207
1193 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1208 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1194 if ( !addr.isEmpty() ) { 1209 if ( !addr.isEmpty() ) {
1195 mEditorDialog->setAddressee( addr ); 1210 mEditorDialog->setAddressee( addr );
1196 KApplication::execDialog ( mEditorDialog ); 1211 KApplication::execDialog ( mEditorDialog );
1197 } 1212 }
1198} 1213}
1199 1214
1200/** 1215/**
1201 Shows or edits the detail view for the given uid. If the uid is QString::null, 1216 Shows or edits the detail view for the given uid. If the uid is QString::null,
1202 the method will try to find a selected addressee in the view. 1217 the method will try to find a selected addressee in the view.
1203 */ 1218 */
1204void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1219void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1205{ 1220{
1206 if ( mMultipleViewsAtOnce ) 1221 if ( mMultipleViewsAtOnce )
1207 { 1222 {
1208 editContact( uid ); 1223 editContact( uid );
1209 } 1224 }
1210 else 1225 else
1211 { 1226 {
1212 setDetailsVisible( true ); 1227 setDetailsVisible( true );
1213 mActionDetails->setChecked(true); 1228 mActionDetails->setChecked(true);
1214 } 1229 }
1215 1230
1216} 1231}
1217 1232
1218void KABCore::save() 1233void KABCore::save()
1219{ 1234{
1220 if (syncManager->blockSave()) 1235 if (syncManager->blockSave())
1221 return; 1236 return;
1222 if ( !mModified ) 1237 if ( !mModified )
1223 return; 1238 return;
1224 1239
1225 syncManager->setBlockSave(true); 1240 syncManager->setBlockSave(true);
1226 QString text = i18n( "There was an error while attempting to save\n the " 1241 QString text = i18n( "There was an error while attempting to save\n the "
1227 "address book. Please check that some \nother application is " 1242 "address book. Please check that some \nother application is "
1228 "not using it. " ); 1243 "not using it. " );
1229 statusMessage(i18n("Saving addressbook ... ")); 1244 statusMessage(i18n("Saving addressbook ... "));
1230#ifndef KAB_EMBEDDED 1245#ifndef KAB_EMBEDDED
1231 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1246 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1232 if ( !b || !b->save() ) { 1247 if ( !b || !b->save() ) {
1233 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1248 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1234 } 1249 }
1235#else //KAB_EMBEDDED 1250#else //KAB_EMBEDDED
1236 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1251 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1237 if ( !b || !b->save() ) { 1252 if ( !b || !b->save() ) {
1238 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1253 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1239 } 1254 }
1240#endif //KAB_EMBEDDED 1255#endif //KAB_EMBEDDED
1241 1256
1242 statusMessage(i18n("Addressbook saved!")); 1257 statusMessage(i18n("Addressbook saved!"));
1243 setModified( false ); 1258 setModified( false );
1244 syncManager->setBlockSave(false); 1259 syncManager->setBlockSave(false);
1245} 1260}
1246 1261
1247void KABCore::statusMessage(QString mess , int time ) 1262void KABCore::statusMessage(QString mess , int time )
1248{ 1263{
1249 //topLevelWidget()->setCaption( mess ); 1264 //topLevelWidget()->setCaption( mess );
1250 // pending setting timer to revome message 1265 // pending setting timer to revome message
1251} 1266}
1252void KABCore::undo() 1267void KABCore::undo()
1253{ 1268{
1254 UndoStack::instance()->undo(); 1269 UndoStack::instance()->undo();
1255 1270
1256 // Refresh the view 1271 // Refresh the view
1257 mViewManager->refreshView(); 1272 mViewManager->refreshView();
1258} 1273}
1259 1274
1260void KABCore::redo() 1275void KABCore::redo()
1261{ 1276{
1262 RedoStack::instance()->redo(); 1277 RedoStack::instance()->redo();
1263 1278
1264 // Refresh the view 1279 // Refresh the view
1265 mViewManager->refreshView(); 1280 mViewManager->refreshView();
1266} 1281}
1267 1282
1268void KABCore::setJumpButtonBarVisible( bool visible ) 1283void KABCore::setJumpButtonBarVisible( bool visible )
1269{ 1284{
1270 if (mMultipleViewsAtOnce) 1285 if (mMultipleViewsAtOnce)
1271 { 1286 {
1272 if ( visible ) 1287 if ( visible )
1273 mJumpButtonBar->show(); 1288 mJumpButtonBar->show();
1274 else 1289 else
1275 mJumpButtonBar->hide(); 1290 mJumpButtonBar->hide();
1276 } 1291 }
1277 else 1292 else
1278 { 1293 {
1279 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1294 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1280 if (mViewManager->isVisible()) 1295 if (mViewManager->isVisible())
1281 { 1296 {
1282 if ( visible ) 1297 if ( visible )
1283 mJumpButtonBar->show(); 1298 mJumpButtonBar->show();
1284 else 1299 else
1285 mJumpButtonBar->hide(); 1300 mJumpButtonBar->hide();
1286 } 1301 }
1287 else 1302 else
1288 { 1303 {
1289 mJumpButtonBar->hide(); 1304 mJumpButtonBar->hide();
1290 } 1305 }
1291 } 1306 }
1292} 1307}
1293 1308
1294 1309
1295void KABCore::setDetailsToState() 1310void KABCore::setDetailsToState()
1296{ 1311{
1297 setDetailsVisible( mActionDetails->isChecked() ); 1312 setDetailsVisible( mActionDetails->isChecked() );
1298} 1313}
1299 1314
1300 1315
1301 1316
1302void KABCore::setDetailsVisible( bool visible ) 1317void KABCore::setDetailsVisible( bool visible )
1303{ 1318{
1304 if (visible && mDetails->isHidden()) 1319 if (visible && mDetails->isHidden())
1305 { 1320 {
1306 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1321 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1307 if ( addrList.count() > 0 ) 1322 if ( addrList.count() > 0 )
1308 mDetails->setAddressee( addrList[ 0 ] ); 1323 mDetails->setAddressee( addrList[ 0 ] );
1309 } 1324 }
1310 1325
1311 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1326 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1312 // the listview and the detailview. We do that by changing the splitbar size. 1327 // the listview and the detailview. We do that by changing the splitbar size.
1313 if (mMultipleViewsAtOnce) 1328 if (mMultipleViewsAtOnce)
1314 { 1329 {
1315 if ( visible ) 1330 if ( visible )
1316 mDetails->show(); 1331 mDetails->show();
1317 else 1332 else
1318 mDetails->hide(); 1333 mDetails->hide();
1319 } 1334 }
1320 else 1335 else
1321 { 1336 {
1322 if ( visible ) { 1337 if ( visible ) {
1323 mViewManager->hide(); 1338 mViewManager->hide();
1324 mDetails->show(); 1339 mDetails->show();
1325 } 1340 }
1326 else { 1341 else {
1327 mViewManager->show(); 1342 mViewManager->show();
1328 mDetails->hide(); 1343 mDetails->hide();
1329 } 1344 }
1330 setJumpButtonBarVisible( !visible ); 1345 setJumpButtonBarVisible( !visible );
1331 } 1346 }
1332 1347
1333} 1348}
1334 1349
1335void KABCore::extensionChanged( int id ) 1350void KABCore::extensionChanged( int id )
1336{ 1351{
1337 //change the details view only for non desktop systems 1352 //change the details view only for non desktop systems
1338#ifndef DESKTOP_VERSION 1353#ifndef DESKTOP_VERSION
1339 1354
1340 if (id == 0) 1355 if (id == 0)
1341 { 1356 {
1342 //the user disabled the extension. 1357 //the user disabled the extension.
1343 1358
1344 if (mMultipleViewsAtOnce) 1359 if (mMultipleViewsAtOnce)
1345 { // enable detailsview again 1360 { // enable detailsview again
1346 setDetailsVisible( true ); 1361 setDetailsVisible( true );
1347 mActionDetails->setChecked( true ); 1362 mActionDetails->setChecked( true );
1348 } 1363 }
1349 else 1364 else
1350 { //go back to the listview 1365 { //go back to the listview
1351 setDetailsVisible( false ); 1366 setDetailsVisible( false );
1352 mActionDetails->setChecked( false ); 1367 mActionDetails->setChecked( false );
1353 mActionDetails->setEnabled(true); 1368 mActionDetails->setEnabled(true);
1354 } 1369 }
1355 1370
1356 } 1371 }
1357 else 1372 else
1358 { 1373 {
1359 //the user enabled the extension. 1374 //the user enabled the extension.
1360 setDetailsVisible( false ); 1375 setDetailsVisible( false );
1361 mActionDetails->setChecked( false ); 1376 mActionDetails->setChecked( false );
1362 1377
1363 if (!mMultipleViewsAtOnce) 1378 if (!mMultipleViewsAtOnce)
1364 { 1379 {
1365 mActionDetails->setEnabled(false); 1380 mActionDetails->setEnabled(false);
1366 } 1381 }
1367 1382
1368 mExtensionManager->setSelectionChanged(); 1383 mExtensionManager->setSelectionChanged();
1369 1384
1370 } 1385 }
1371 1386
1372#endif// DESKTOP_VERSION 1387#endif// DESKTOP_VERSION
1373 1388
1374} 1389}
1375 1390
1376 1391
1377void KABCore::extensionModified( const KABC::Addressee::List &list ) 1392void KABCore::extensionModified( const KABC::Addressee::List &list )
1378{ 1393{
1379 1394
1380 if ( list.count() != 0 ) { 1395 if ( list.count() != 0 ) {
1381 KABC::Addressee::List::ConstIterator it; 1396 KABC::Addressee::List::ConstIterator it;
1382 for ( it = list.begin(); it != list.end(); ++it ) 1397 for ( it = list.begin(); it != list.end(); ++it )
1383 mAddressBook->insertAddressee( *it ); 1398 mAddressBook->insertAddressee( *it );
1384 if ( list.count() > 1 ) 1399 if ( list.count() > 1 )
1385 setModified(); 1400 setModified();
1386 else 1401 else
1387 setModifiedWOrefresh(); 1402 setModifiedWOrefresh();
1388 } 1403 }
1389 if ( list.count() == 0 ) 1404 if ( list.count() == 0 )
1390 mViewManager->refreshView(); 1405 mViewManager->refreshView();
1391 else 1406 else
1392 mViewManager->refreshView( list[ 0 ].uid() ); 1407 mViewManager->refreshView( list[ 0 ].uid() );
1393 1408
1394 1409
1395 1410
1396} 1411}
1397 1412
1398QString KABCore::getNameByPhone( const QString &phone ) 1413QString KABCore::getNameByPhone( const QString &phone )
1399{ 1414{
1400#ifndef KAB_EMBEDDED 1415#ifndef KAB_EMBEDDED
1401 QRegExp r( "[/*/-/ ]" ); 1416 QRegExp r( "[/*/-/ ]" );
1402 QString localPhone( phone ); 1417 QString localPhone( phone );
1403 1418
1404 bool found = false; 1419 bool found = false;
1405 QString ownerName = ""; 1420 QString ownerName = "";
1406 KABC::AddressBook::Iterator iter; 1421 KABC::AddressBook::Iterator iter;
1407 KABC::PhoneNumber::List::Iterator phoneIter; 1422 KABC::PhoneNumber::List::Iterator phoneIter;
1408 KABC::PhoneNumber::List phoneList; 1423 KABC::PhoneNumber::List phoneList;
1409 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1424 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1410 phoneList = (*iter).phoneNumbers(); 1425 phoneList = (*iter).phoneNumbers();
1411 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1426 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1412 ++phoneIter) { 1427 ++phoneIter) {
1413 // Get rid of separator chars so just the numbers are compared. 1428 // Get rid of separator chars so just the numbers are compared.
1414 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1429 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1415 ownerName = (*iter).formattedName(); 1430 ownerName = (*iter).formattedName();
1416 found = true; 1431 found = true;
1417 } 1432 }
1418 } 1433 }
1419 } 1434 }
1420 1435
1421 return ownerName; 1436 return ownerName;
1422#else //KAB_EMBEDDED 1437#else //KAB_EMBEDDED
1423 qDebug("KABCore::getNameByPhone finsih method"); 1438 qDebug("KABCore::getNameByPhone finsih method");
1424 return ""; 1439 return "";
1425#endif //KAB_EMBEDDED 1440#endif //KAB_EMBEDDED
1426 1441
1427} 1442}
1428 1443
1429void KABCore::openConfigDialog() 1444void KABCore::openConfigDialog()
1430{ 1445{
1431 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1446 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1432 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1447 KCMKabConfig* kabcfg = new KCMKabConfig( ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1433 ConfigureDialog->addModule(kabcfg ); 1448 ConfigureDialog->addModule(kabcfg );
1434 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1449 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1435 ConfigureDialog->addModule(kdelibcfg ); 1450 ConfigureDialog->addModule(kdelibcfg );
1436 1451
1437 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1452 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1438 this, SLOT( configurationChanged() ) ); 1453 this, SLOT( configurationChanged() ) );
1439 connect( ConfigureDialog, SIGNAL( okClicked() ), 1454 connect( ConfigureDialog, SIGNAL( okClicked() ),
1440 this, SLOT( configurationChanged() ) ); 1455 this, SLOT( configurationChanged() ) );
1441 saveSettings(); 1456 saveSettings();
1442#ifndef DESKTOP_VERSION 1457#ifndef DESKTOP_VERSION
1443 ConfigureDialog->showMaximized(); 1458 ConfigureDialog->showMaximized();
1444#endif 1459#endif
1445 if ( ConfigureDialog->exec() ) 1460 if ( ConfigureDialog->exec() )
1446 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1461 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1447 delete ConfigureDialog; 1462 delete ConfigureDialog;
1448} 1463}
1449 1464
1450void KABCore::openLDAPDialog() 1465void KABCore::openLDAPDialog()
1451{ 1466{
1452#ifndef KAB_EMBEDDED 1467#ifndef KAB_EMBEDDED
1453 if ( !mLdapSearchDialog ) { 1468 if ( !mLdapSearchDialog ) {
1454 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1469 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1455 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1470 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1456 SLOT( refreshView() ) ); 1471 SLOT( refreshView() ) );
1457 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1472 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1458 SLOT( setModified() ) ); 1473 SLOT( setModified() ) );
1459 } else 1474 } else
1460 mLdapSearchDialog->restoreSettings(); 1475 mLdapSearchDialog->restoreSettings();
1461 1476
1462 if ( mLdapSearchDialog->isOK() ) 1477 if ( mLdapSearchDialog->isOK() )
1463 mLdapSearchDialog->exec(); 1478 mLdapSearchDialog->exec();
1464#else //KAB_EMBEDDED 1479#else //KAB_EMBEDDED
1465 qDebug("KABCore::openLDAPDialog() finsih method"); 1480 qDebug("KABCore::openLDAPDialog() finsih method");
1466#endif //KAB_EMBEDDED 1481#endif //KAB_EMBEDDED
1467} 1482}
1468 1483
1469void KABCore::print() 1484void KABCore::print()
1470{ 1485{
1471#ifndef KAB_EMBEDDED 1486#ifndef KAB_EMBEDDED
1472 KPrinter printer; 1487 KPrinter printer;
1473 if ( !printer.setup( this ) ) 1488 if ( !printer.setup( this ) )
1474 return; 1489 return;
1475 1490
1476 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1491 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1477 mViewManager->selectedUids(), this ); 1492 mViewManager->selectedUids(), this );
1478 1493
1479 wizard.exec(); 1494 wizard.exec();
1480#else //KAB_EMBEDDED 1495#else //KAB_EMBEDDED
1481 qDebug("KABCore::print() finsih method"); 1496 qDebug("KABCore::print() finsih method");
1482#endif //KAB_EMBEDDED 1497#endif //KAB_EMBEDDED
1483 1498
1484} 1499}
1485 1500
1486 1501
1487void KABCore::addGUIClient( KXMLGUIClient *client ) 1502void KABCore::addGUIClient( KXMLGUIClient *client )
1488{ 1503{
1489 if ( mGUIClient ) 1504 if ( mGUIClient )
1490 mGUIClient->insertChildClient( client ); 1505 mGUIClient->insertChildClient( client );
1491 else 1506 else
1492 KMessageBox::error( this, "no KXMLGUICLient"); 1507 KMessageBox::error( this, "no KXMLGUICLient");
1493} 1508}
1494 1509
1495 1510
1496void KABCore::configurationChanged() 1511void KABCore::configurationChanged()
1497{ 1512{
1498 mExtensionManager->reconfigure(); 1513 mExtensionManager->reconfigure();
1499} 1514}
1500 1515
1501void KABCore::addressBookChanged() 1516void KABCore::addressBookChanged()
1502{ 1517{
1503/*US 1518/*US
1504 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1519 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1505 while ( it.current() ) { 1520 while ( it.current() ) {
1506 if ( it.current()->dirty() ) { 1521 if ( it.current()->dirty() ) {
1507 QString text = i18n( "Data has been changed externally. Unsaved " 1522 QString text = i18n( "Data has been changed externally. Unsaved "
1508 "changes will be lost." ); 1523 "changes will be lost." );
1509 KMessageBox::information( this, text ); 1524 KMessageBox::information( this, text );
1510 } 1525 }
1511 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1526 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1512 ++it; 1527 ++it;
1513 } 1528 }
1514*/ 1529*/
1515 if (mEditorDialog) 1530 if (mEditorDialog)
1516 { 1531 {
1517 if (mEditorDialog->dirty()) 1532 if (mEditorDialog->dirty())
1518 { 1533 {
1519 QString text = i18n( "Data has been changed externally. Unsaved " 1534 QString text = i18n( "Data has been changed externally. Unsaved "
1520 "changes will be lost." ); 1535 "changes will be lost." );
1521 KMessageBox::information( this, text ); 1536 KMessageBox::information( this, text );
1522 } 1537 }
1523 QString currentuid = mEditorDialog->addressee().uid(); 1538 QString currentuid = mEditorDialog->addressee().uid();
1524 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1539 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1525 } 1540 }
1526 mViewManager->refreshView(); 1541 mViewManager->refreshView();
1527// mDetails->refreshView(); 1542// mDetails->refreshView();
1528 1543
1529 1544
1530} 1545}
1531 1546
1532AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1547AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1533 const char *name ) 1548 const char *name )
1534{ 1549{
1535 1550
1536 if ( mEditorDialog == 0 ) { 1551 if ( mEditorDialog == 0 ) {
1537 mEditorDialog = new AddresseeEditorDialog( this, parent, 1552 mEditorDialog = new AddresseeEditorDialog( this, parent,
1538 name ? name : "editorDialog" ); 1553 name ? name : "editorDialog" );
1539 1554
1540 1555
1541 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1556 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1542 SLOT( contactModified( const KABC::Addressee& ) ) ); 1557 SLOT( contactModified( const KABC::Addressee& ) ) );
1543 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1558 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1544 // SLOT( slotEditorDestroyed( const QString& ) ) ; 1559 // SLOT( slotEditorDestroyed( const QString& ) ) ;
1545 } 1560 }
1546 1561
1547 return mEditorDialog; 1562 return mEditorDialog;
1548} 1563}
1549 1564
1550void KABCore::slotEditorDestroyed( const QString &uid ) 1565void KABCore::slotEditorDestroyed( const QString &uid )
1551{ 1566{
1552 //mEditorDict.remove( uid ); 1567 //mEditorDict.remove( uid );
1553} 1568}
1554 1569
1555void KABCore::initGUI() 1570void KABCore::initGUI()
1556{ 1571{
1557#ifndef KAB_EMBEDDED 1572#ifndef KAB_EMBEDDED
1558 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1573 QHBoxLayout *topLayout = new QHBoxLayout( this );
1559 topLayout->setSpacing( KDialogBase::spacingHint() ); 1574 topLayout->setSpacing( KDialogBase::spacingHint() );
1560 1575
1561 mExtensionBarSplitter = new QSplitter( this ); 1576 mExtensionBarSplitter = new QSplitter( this );
1562 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1577 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1563 1578
1564 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1579 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1565 1580
1566 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1581 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1567 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1582 mIncSearchWidget = new IncSearchWidget( viewSpace );
1568 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1583 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1569 SLOT( incrementalSearch( const QString& ) ) ); 1584 SLOT( incrementalSearch( const QString& ) ) );
1570 1585
1571 mViewManager = new ViewManager( this, viewSpace ); 1586 mViewManager = new ViewManager( this, viewSpace );
1572 viewSpace->setStretchFactor( mViewManager, 1 ); 1587 viewSpace->setStretchFactor( mViewManager, 1 );
1573 1588
1574 mDetails = new ViewContainer( mDetailsSplitter ); 1589 mDetails = new ViewContainer( mDetailsSplitter );
1575 1590
1576 mJumpButtonBar = new JumpButtonBar( this, this ); 1591 mJumpButtonBar = new JumpButtonBar( this, this );
1577 1592
1578 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1593 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1579 1594
1580 topLayout->addWidget( mExtensionBarSplitter ); 1595 topLayout->addWidget( mExtensionBarSplitter );
1581 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1596 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1582 topLayout->addWidget( mJumpButtonBar ); 1597 topLayout->addWidget( mJumpButtonBar );
1583 topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1598 topLayout->setStretchFactor( mJumpButtonBar, 1 );
1584 1599
1585 mXXPortManager = new XXPortManager( this, this ); 1600 mXXPortManager = new XXPortManager( this, this );
1586 1601
1587#else //KAB_EMBEDDED 1602#else //KAB_EMBEDDED
1588 //US initialize viewMenu before settingup viewmanager. 1603 //US initialize viewMenu before settingup viewmanager.
1589 // Viewmanager needs this menu to plugin submenues. 1604 // Viewmanager needs this menu to plugin submenues.
1590 viewMenu = new QPopupMenu( this ); 1605 viewMenu = new QPopupMenu( this );
1591 settingsMenu = new QPopupMenu( this ); 1606 settingsMenu = new QPopupMenu( this );
1592 //filterMenu = new QPopupMenu( this ); 1607 //filterMenu = new QPopupMenu( this );
1593 ImportMenu = new QPopupMenu( this ); 1608 ImportMenu = new QPopupMenu( this );
1594 ExportMenu = new QPopupMenu( this ); 1609 ExportMenu = new QPopupMenu( this );
1595 syncMenu = new QPopupMenu( this ); 1610 syncMenu = new QPopupMenu( this );
1596 changeMenu= new QPopupMenu( this ); 1611 changeMenu= new QPopupMenu( this );
1597 1612
1598//US since we have no splitter for the embedded system, setup 1613//US since we have no splitter for the embedded system, setup
1599// a layout with two frames. One left and one right. 1614// a layout with two frames. One left and one right.
1600 1615
1601 QBoxLayout *topLayout; 1616 QBoxLayout *topLayout;
1602 1617
1603 // = new QHBoxLayout( this ); 1618 // = new QHBoxLayout( this );
1604// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1619// QBoxLayout *topLayout = (QBoxLayout*)layout();
1605 1620
1606// QWidget *mainBox = new QWidget( this ); 1621// QWidget *mainBox = new QWidget( this );
1607// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1622// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1608 1623
1609#ifdef DESKTOP_VERSION 1624#ifdef DESKTOP_VERSION
1610 topLayout = new QHBoxLayout( this ); 1625 topLayout = new QHBoxLayout( this );
1611 1626
1612 1627
1613 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1628 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1614 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1629 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1615 1630
1616 topLayout->addWidget(mMiniSplitter ); 1631 topLayout->addWidget(mMiniSplitter );
1617 1632
1618 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1633 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1619 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1634 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1620 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1635 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1621 mDetails = new ViewContainer( mMiniSplitter ); 1636 mDetails = new ViewContainer( mMiniSplitter );
1622 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1637 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1623#else 1638#else
1624 if ( QApplication::desktop()->width() > 480 ) { 1639 if ( QApplication::desktop()->width() > 480 ) {
1625 topLayout = new QHBoxLayout( this ); 1640 topLayout = new QHBoxLayout( this );
1626 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1641 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1627 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1642 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1628 } else { 1643 } else {
1629 1644
1630 topLayout = new QHBoxLayout( this ); 1645 topLayout = new QHBoxLayout( this );
1631 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1646 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1632 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1647 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1633 } 1648 }
1634 1649
1635 topLayout->addWidget(mMiniSplitter ); 1650 topLayout->addWidget(mMiniSplitter );
1636 mViewManager = new ViewManager( this, mMiniSplitter ); 1651 mViewManager = new ViewManager( this, mMiniSplitter );
1637 mDetails = new ViewContainer( mMiniSplitter ); 1652 mDetails = new ViewContainer( mMiniSplitter );
1638 1653
1639 1654
1640 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1655 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1641#endif 1656#endif
1642 //eh->hide(); 1657 //eh->hide();
1643 // topLayout->addWidget(mExtensionManager ); 1658 // topLayout->addWidget(mExtensionManager );
1644 1659
1645 1660
1646/*US 1661/*US
1647#ifndef KAB_NOSPLITTER 1662#ifndef KAB_NOSPLITTER
1648 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1663 QHBoxLayout *topLayout = new QHBoxLayout( this );
1649//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1664//US topLayout->setSpacing( KDialogBase::spacingHint() );
1650 topLayout->setSpacing( 10 ); 1665 topLayout->setSpacing( 10 );
1651 1666
1652 mDetailsSplitter = new QSplitter( this ); 1667 mDetailsSplitter = new QSplitter( this );
1653 1668
1654 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1669 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1655 1670
1656 mViewManager = new ViewManager( this, viewSpace ); 1671 mViewManager = new ViewManager( this, viewSpace );
1657 viewSpace->setStretchFactor( mViewManager, 1 ); 1672 viewSpace->setStretchFactor( mViewManager, 1 );
1658 1673
1659 mDetails = new ViewContainer( mDetailsSplitter ); 1674 mDetails = new ViewContainer( mDetailsSplitter );
1660 1675
1661 topLayout->addWidget( mDetailsSplitter ); 1676 topLayout->addWidget( mDetailsSplitter );
1662 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1677 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1663#else //KAB_NOSPLITTER 1678#else //KAB_NOSPLITTER
1664 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1679 QHBoxLayout *topLayout = new QHBoxLayout( this );
1665//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1680//US topLayout->setSpacing( KDialogBase::spacingHint() );
1666 topLayout->setSpacing( 10 ); 1681 topLayout->setSpacing( 10 );
1667 1682
1668// mDetailsSplitter = new QSplitter( this ); 1683// mDetailsSplitter = new QSplitter( this );
1669 1684
1670 QVBox *viewSpace = new QVBox( this ); 1685 QVBox *viewSpace = new QVBox( this );
1671 1686
1672 mViewManager = new ViewManager( this, viewSpace ); 1687 mViewManager = new ViewManager( this, viewSpace );
1673 viewSpace->setStretchFactor( mViewManager, 1 ); 1688 viewSpace->setStretchFactor( mViewManager, 1 );
1674 1689
1675 mDetails = new ViewContainer( this ); 1690 mDetails = new ViewContainer( this );
1676 1691
1677 topLayout->addWidget( viewSpace ); 1692 topLayout->addWidget( viewSpace );
1678// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1693// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1679 topLayout->addWidget( mDetails ); 1694 topLayout->addWidget( mDetails );
1680#endif //KAB_NOSPLITTER 1695#endif //KAB_NOSPLITTER
1681*/ 1696*/
1682 1697
1683 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 1698 syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
1684 syncManager->setBlockSave(false); 1699 syncManager->setBlockSave(false);
1685 1700
1686 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) ); 1701 connect(syncManager , SIGNAL( request_file() ), this, SLOT( syncFileRequest() ) );
1687 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) ); 1702 connect(syncManager , SIGNAL( getFile( bool )), this, SLOT(getFile( bool ) ) );
1688 syncManager->setDefaultFileName( sentSyncFile()); 1703 syncManager->setDefaultFileName( sentSyncFile());
1689 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1704 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1690 1705
1691#endif //KAB_EMBEDDED 1706#endif //KAB_EMBEDDED
1692 initActions(); 1707 initActions();
1693 1708
1694#ifdef KAB_EMBEDDED 1709#ifdef KAB_EMBEDDED
1695 addActionsManually(); 1710 addActionsManually();
1696 //US make sure the export and import menues are initialized before creating the xxPortManager. 1711 //US make sure the export and import menues are initialized before creating the xxPortManager.
1697 mXXPortManager = new XXPortManager( this, this ); 1712 mXXPortManager = new XXPortManager( this, this );
1698 1713
1699 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1714 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1700 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1715 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1701 // mActionQuit->plug ( mMainWindow->toolBar()); 1716 // mActionQuit->plug ( mMainWindow->toolBar());
1702 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1717 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1703 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1718 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1704 // mIncSearchWidget->hide(); 1719 // mIncSearchWidget->hide();
1705 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1720 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1706 SLOT( incrementalSearch( const QString& ) ) ); 1721 SLOT( incrementalSearch( const QString& ) ) );
1707 1722
1708 1723
1709 mJumpButtonBar = new JumpButtonBar( this, this ); 1724 mJumpButtonBar = new JumpButtonBar( this, this );
1710 1725
1711 topLayout->addWidget( mJumpButtonBar ); 1726 topLayout->addWidget( mJumpButtonBar );
1712//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1727//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1713 1728
1714// mMainWindow->getIconToolBar()->raise(); 1729// mMainWindow->getIconToolBar()->raise();
1715 1730
1716#endif //KAB_EMBEDDED 1731#endif //KAB_EMBEDDED
1717 1732
1718} 1733}
1719void KABCore::initActions() 1734void KABCore::initActions()
1720{ 1735{
1721//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1736//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1722 1737
1723#ifndef KAB_EMBEDDED 1738#ifndef KAB_EMBEDDED
1724 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1739 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1725 SLOT( clipboardDataChanged() ) ); 1740 SLOT( clipboardDataChanged() ) );
1726#endif //KAB_EMBEDDED 1741#endif //KAB_EMBEDDED
1727 1742
1728 // file menu 1743 // file menu
1729 if ( mIsPart ) { 1744 if ( mIsPart ) {
1730 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this, 1745 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this,
1731 SLOT( sendMail() ), actionCollection(), 1746 SLOT( sendMail() ), actionCollection(),
1732 "kaddressbook_mail" ); 1747 "kaddressbook_mail" );
1733 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this, 1748 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this,
1734 SLOT( print() ), actionCollection(), "kaddressbook_print" ); 1749 SLOT( print() ), actionCollection(), "kaddressbook_print" );
1735 1750
1736 } else { 1751 } else {
1737 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1752 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1738 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1753 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1739 } 1754 }
1740 1755
1741 1756
1742 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1757 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1743 SLOT( save() ), actionCollection(), "file_sync" ); 1758 SLOT( save() ), actionCollection(), "file_sync" );
1744 1759
1745 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1760 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1746 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1761 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1747 1762
1748 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1763 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1749 this, SLOT( mailVCard() ), 1764 this, SLOT( mailVCard() ),
1750 actionCollection(), "file_mail_vcard"); 1765 actionCollection(), "file_mail_vcard");
1751 1766
1752 mActionExport2phone = new KAction( i18n( "Selected to phone" ), "ex2phone", 0, this, 1767 mActionExport2phone = new KAction( i18n( "Selected to phone" ), "ex2phone", 0, this,
1753 SLOT( export2phone() ), actionCollection(), 1768 SLOT( export2phone() ), actionCollection(),
1754 "kaddressbook_ex2phone" ); 1769 "kaddressbook_ex2phone" );
1755 1770
1756 mActionBeamVCard = 0; 1771 mActionBeamVCard = 0;
1757 mActionBeam = 0; 1772 mActionBeam = 0;
1758 1773
1759#ifndef DESKTOP_VERSION 1774#ifndef DESKTOP_VERSION
1760 if ( Ir::supported() ) { 1775 if ( Ir::supported() ) {
1761 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this, 1776 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this,
1762 SLOT( beamVCard() ), actionCollection(), 1777 SLOT( beamVCard() ), actionCollection(),
1763 "kaddressbook_beam_vcard" ); 1778 "kaddressbook_beam_vcard" );
1764 1779
1765 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1780 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1766 SLOT( beamMySelf() ), actionCollection(), 1781 SLOT( beamMySelf() ), actionCollection(),
1767 "kaddressbook_beam_myself" ); 1782 "kaddressbook_beam_myself" );
1768 } 1783 }
1769#endif 1784#endif
1770 1785
1771 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1786 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1772 this, SLOT( editContact2() ), 1787 this, SLOT( editContact2() ),
1773 actionCollection(), "file_properties" ); 1788 actionCollection(), "file_properties" );
1774 1789
1775#ifdef KAB_EMBEDDED 1790#ifdef KAB_EMBEDDED
1776 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1791 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1777 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1792 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1778 mMainWindow, SLOT( exit() ), 1793 mMainWindow, SLOT( exit() ),
1779 actionCollection(), "quit" ); 1794 actionCollection(), "quit" );
1780#endif //KAB_EMBEDDED 1795#endif //KAB_EMBEDDED
1781 1796
1782 // edit menu 1797 // edit menu
1783 if ( mIsPart ) { 1798 if ( mIsPart ) {
1784 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1799 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1785 SLOT( copyContacts() ), actionCollection(), 1800 SLOT( copyContacts() ), actionCollection(),
1786 "kaddressbook_copy" ); 1801 "kaddressbook_copy" );
1787 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1802 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1788 SLOT( cutContacts() ), actionCollection(), 1803 SLOT( cutContacts() ), actionCollection(),
1789 "kaddressbook_cut" ); 1804 "kaddressbook_cut" );
1790 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1805 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1791 SLOT( pasteContacts() ), actionCollection(), 1806 SLOT( pasteContacts() ), actionCollection(),
1792 "kaddressbook_paste" ); 1807 "kaddressbook_paste" );
1793 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1808 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1794 SLOT( selectAllContacts() ), actionCollection(), 1809 SLOT( selectAllContacts() ), actionCollection(),
1795 "kaddressbook_select_all" ); 1810 "kaddressbook_select_all" );
1796 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1811 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1797 SLOT( undo() ), actionCollection(), 1812 SLOT( undo() ), actionCollection(),
1798 "kaddressbook_undo" ); 1813 "kaddressbook_undo" );
1799 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1814 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1800 this, SLOT( redo() ), actionCollection(), 1815 this, SLOT( redo() ), actionCollection(),
1801 "kaddressbook_redo" ); 1816 "kaddressbook_redo" );
1802 } else { 1817 } else {
1803 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1818 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1804 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1819 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1805 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1820 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1806 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1821 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1807 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1822 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1808 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1823 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1809 } 1824 }
1810 1825
1811 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1826 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1812 Key_Delete, this, SLOT( deleteContacts() ), 1827 Key_Delete, this, SLOT( deleteContacts() ),
1813 actionCollection(), "edit_delete" ); 1828 actionCollection(), "edit_delete" );
1814 1829
1815 mActionUndo->setEnabled( false ); 1830 mActionUndo->setEnabled( false );
1816 mActionRedo->setEnabled( false ); 1831 mActionRedo->setEnabled( false );
1817 1832
1818 // settings menu 1833 // settings menu
1819#ifdef KAB_EMBEDDED 1834#ifdef KAB_EMBEDDED
1820//US special menuentry to configure the addressbook resources. On KDE 1835//US special menuentry to configure the addressbook resources. On KDE
1821// you do that through the control center !!! 1836// you do that through the control center !!!
1822 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1837 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1823 SLOT( configureResources() ), actionCollection(), 1838 SLOT( configureResources() ), actionCollection(),
1824 "kaddressbook_configure_resources" ); 1839 "kaddressbook_configure_resources" );
1825#endif //KAB_EMBEDDED 1840#endif //KAB_EMBEDDED
1826 1841
1827 if ( mIsPart ) { 1842 if ( mIsPart ) {
1828 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1843 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1829 SLOT( openConfigDialog() ), actionCollection(), 1844 SLOT( openConfigDialog() ), actionCollection(),
1830 "kaddressbook_configure" ); 1845 "kaddressbook_configure" );
1831 1846
1832 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1847 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1833 this, SLOT( configureKeyBindings() ), actionCollection(), 1848 this, SLOT( configureKeyBindings() ), actionCollection(),
1834 "kaddressbook_configure_shortcuts" ); 1849 "kaddressbook_configure_shortcuts" );
1835#ifdef KAB_EMBEDDED 1850#ifdef KAB_EMBEDDED
1836 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1851 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1837 mActionConfigureToolbars->setEnabled( false ); 1852 mActionConfigureToolbars->setEnabled( false );
1838#endif //KAB_EMBEDDED 1853#endif //KAB_EMBEDDED
1839 1854
1840 } else { 1855 } else {
1841 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1856 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1842 1857
1843 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1858 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1844 } 1859 }
1845 1860
1846 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1861 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1847 actionCollection(), "options_show_jump_bar" ); 1862 actionCollection(), "options_show_jump_bar" );
1848 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1863 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1849 1864
1850 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 1865 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
1851 actionCollection(), "options_show_details" ); 1866 actionCollection(), "options_show_details" );
1852 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1867 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1853 1868
1854 // misc 1869 // misc
1855 // only enable LDAP lookup if we can handle the protocol 1870 // only enable LDAP lookup if we can handle the protocol
1856#ifndef KAB_EMBEDDED 1871#ifndef KAB_EMBEDDED
1857 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1872 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1858 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1873 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
1859 this, SLOT( openLDAPDialog() ), actionCollection(), 1874 this, SLOT( openLDAPDialog() ), actionCollection(),
1860 "ldap_lookup" ); 1875 "ldap_lookup" );
1861 } 1876 }
1862#else //KAB_EMBEDDED 1877#else //KAB_EMBEDDED
1863 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1878 //qDebug("KABCore::initActions() LDAP has to be implemented");
1864#endif //KAB_EMBEDDED 1879#endif //KAB_EMBEDDED
1865 1880
1866 1881
1867 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1882 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1868 SLOT( setWhoAmI() ), actionCollection(), 1883 SLOT( setWhoAmI() ), actionCollection(),
1869 "set_personal" ); 1884 "set_personal" );
1870 1885
1871 1886
1872 1887
1873 1888
1874 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1889 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
1875 SLOT( setCategories() ), actionCollection(), 1890 SLOT( setCategories() ), actionCollection(),
1876 "edit_set_categories" ); 1891 "edit_set_categories" );
1877 1892
1878 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 1893 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
1879 SLOT( removeVoice() ), actionCollection(), 1894 SLOT( removeVoice() ), actionCollection(),
1880 "remove_voice" ); 1895 "remove_voice" );
1881 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 1896 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
1882 SLOT( importFromOL() ), actionCollection(), 1897 SLOT( importFromOL() ), actionCollection(),
1883 "import_OL" ); 1898 "import_OL" );
1884#ifdef KAB_EMBEDDED 1899#ifdef KAB_EMBEDDED
1885 mActionLicence = new KAction( i18n( "Licence" ), 0, 1900 mActionLicence = new KAction( i18n( "Licence" ), 0,
1886 this, SLOT( showLicence() ), actionCollection(), 1901 this, SLOT( showLicence() ), actionCollection(),
1887 "licence_about_data" ); 1902 "licence_about_data" );
1888 mActionFaq = new KAction( i18n( "Faq" ), 0, 1903 mActionFaq = new KAction( i18n( "Faq" ), 0,
1889 this, SLOT( faq() ), actionCollection(), 1904 this, SLOT( faq() ), actionCollection(),
1890 "faq_about_data" ); 1905 "faq_about_data" );
1891 1906
1892 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1907 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1893 this, SLOT( createAboutData() ), actionCollection(), 1908 this, SLOT( createAboutData() ), actionCollection(),
1894 "kaddressbook_about_data" ); 1909 "kaddressbook_about_data" );
1895#endif //KAB_EMBEDDED 1910#endif //KAB_EMBEDDED
1896 1911
1897 clipboardDataChanged(); 1912 clipboardDataChanged();
1898 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1913 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1899 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1914 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1900} 1915}
1901 1916
1902//US we need this function, to plug all actions into the correct menues. 1917//US we need this function, to plug all actions into the correct menues.
1903// KDE uses a XML format to plug the actions, but we work her without this overhead. 1918// KDE uses a XML format to plug the actions, but we work her without this overhead.
1904void KABCore::addActionsManually() 1919void KABCore::addActionsManually()
1905{ 1920{
1906//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1921//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1907 1922
1908#ifdef KAB_EMBEDDED 1923#ifdef KAB_EMBEDDED
1909 QPopupMenu *fileMenu = new QPopupMenu( this ); 1924 QPopupMenu *fileMenu = new QPopupMenu( this );
1910 QPopupMenu *editMenu = new QPopupMenu( this ); 1925 QPopupMenu *editMenu = new QPopupMenu( this );
1911 QPopupMenu *helpMenu = new QPopupMenu( this ); 1926 QPopupMenu *helpMenu = new QPopupMenu( this );
1912 1927
1913 KToolBar* tb = mMainWindow->toolBar(); 1928 KToolBar* tb = mMainWindow->toolBar();
1914 1929
1915#ifdef DESKTOP_VERSION 1930#ifdef DESKTOP_VERSION
1916 QMenuBar* mb = mMainWindow->menuBar(); 1931 QMenuBar* mb = mMainWindow->menuBar();
1917 1932
1918 //US setup menubar. 1933 //US setup menubar.
1919 //Disable the following block if you do not want to have a menubar. 1934 //Disable the following block if you do not want to have a menubar.
1920 mb->insertItem( "&File", fileMenu ); 1935 mb->insertItem( "&File", fileMenu );
1921 mb->insertItem( "&Edit", editMenu ); 1936 mb->insertItem( "&Edit", editMenu );
1922 mb->insertItem( "&View", viewMenu ); 1937 mb->insertItem( "&View", viewMenu );
1923 mb->insertItem( "&Settings", settingsMenu ); 1938 mb->insertItem( "&Settings", settingsMenu );
1924 mb->insertItem( i18n("Synchronize"), syncMenu ); 1939 mb->insertItem( i18n("Synchronize"), syncMenu );
1925 mb->insertItem( "&Change selected", changeMenu ); 1940 mb->insertItem( "&Change selected", changeMenu );
1926 mb->insertItem( "&Help", helpMenu ); 1941 mb->insertItem( "&Help", helpMenu );
1927 mIncSearchWidget = new IncSearchWidget( tb ); 1942 mIncSearchWidget = new IncSearchWidget( tb );
1928 // tb->insertWidget(-1, 0, mIncSearchWidget); 1943 // tb->insertWidget(-1, 0, mIncSearchWidget);
1929 1944
1930#else 1945#else
1931 //US setup toolbar 1946 //US setup toolbar
1932 QPEMenuBar *menuBarTB = new QPEMenuBar( tb ); 1947 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
1933 QPopupMenu *popupBarTB = new QPopupMenu( this ); 1948 QPopupMenu *popupBarTB = new QPopupMenu( this );
1934 menuBarTB->insertItem( "ME", popupBarTB); 1949 menuBarTB->insertItem( "ME", popupBarTB);
1935 tb->insertWidget(-1, 0, menuBarTB); 1950 tb->insertWidget(-1, 0, menuBarTB);
1936 mIncSearchWidget = new IncSearchWidget( tb ); 1951 mIncSearchWidget = new IncSearchWidget( tb );
1937 1952
1938 tb->enableMoving(false); 1953 tb->enableMoving(false);
1939 popupBarTB->insertItem( "&File", fileMenu ); 1954 popupBarTB->insertItem( "&File", fileMenu );
1940 popupBarTB->insertItem( "&Edit", editMenu ); 1955 popupBarTB->insertItem( "&Edit", editMenu );
1941 popupBarTB->insertItem( "&View", viewMenu ); 1956 popupBarTB->insertItem( "&View", viewMenu );
1942 popupBarTB->insertItem( "&Settings", settingsMenu ); 1957 popupBarTB->insertItem( "&Settings", settingsMenu );
1943 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 1958 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
1944 mViewManager->getFilterAction()->plug ( popupBarTB); 1959 mViewManager->getFilterAction()->plug ( popupBarTB);
1945 popupBarTB->insertItem( "&Change selected", changeMenu ); 1960 popupBarTB->insertItem( "&Change selected", changeMenu );
1946 popupBarTB->insertItem( "&Help", helpMenu ); 1961 popupBarTB->insertItem( "&Help", helpMenu );
1947 if (QApplication::desktop()->width() > 320 ) { 1962 if (QApplication::desktop()->width() > 320 ) {
1948 // mViewManager->getFilterAction()->plug ( tb); 1963 // mViewManager->getFilterAction()->plug ( tb);
1949 } 1964 }
1950#endif 1965#endif
1951 // mActionQuit->plug ( mMainWindow->toolBar()); 1966 // mActionQuit->plug ( mMainWindow->toolBar());
1952 1967
1953 1968
1954 1969
1955 //US Now connect the actions with the menue entries. 1970 //US Now connect the actions with the menue entries.
1956 mActionPrint->plug( fileMenu ); 1971 mActionPrint->plug( fileMenu );
1957 mActionMail->plug( fileMenu ); 1972 mActionMail->plug( fileMenu );
1958 fileMenu->insertSeparator(); 1973 fileMenu->insertSeparator();
1959 1974
1960 mActionNewContact->plug( fileMenu ); 1975 mActionNewContact->plug( fileMenu );
1961 mActionNewContact->plug( tb ); 1976 mActionNewContact->plug( tb );
1962 1977
1963 mActionEditAddressee->plug( fileMenu ); 1978 mActionEditAddressee->plug( fileMenu );
1964 if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 1979 if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
1965 (!KABPrefs::instance()->mMultipleViewsAtOnce )) 1980 (!KABPrefs::instance()->mMultipleViewsAtOnce ))
1966 mActionEditAddressee->plug( tb ); 1981 mActionEditAddressee->plug( tb );
1967 1982
1968 fileMenu->insertSeparator(); 1983 fileMenu->insertSeparator();
1969 mActionSave->plug( fileMenu ); 1984 mActionSave->plug( fileMenu );
1970 fileMenu->insertItem( "&Import", ImportMenu ); 1985 fileMenu->insertItem( "&Import", ImportMenu );
1971 fileMenu->insertItem( "&Export", ExportMenu ); 1986 fileMenu->insertItem( "&Export", ExportMenu );
1972 fileMenu->insertSeparator(); 1987 fileMenu->insertSeparator();
1973 mActionMailVCard->plug( fileMenu ); 1988 mActionMailVCard->plug( fileMenu );
1974#ifndef DESKTOP_VERSION 1989#ifndef DESKTOP_VERSION
1975 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu ); 1990 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu );
1976 if ( Ir::supported() ) mActionBeam->plug(fileMenu ); 1991 if ( Ir::supported() ) mActionBeam->plug(fileMenu );
1977#endif 1992#endif
1978 fileMenu->insertSeparator(); 1993 fileMenu->insertSeparator();
1979 mActionQuit->plug( fileMenu ); 1994 mActionQuit->plug( fileMenu );
1980#ifdef _WIN32_ 1995#ifdef _WIN32_
1981 mActionImportOL->plug( ImportMenu ); 1996 mActionImportOL->plug( ImportMenu );
1982#endif 1997#endif
1983 // edit menu 1998 // edit menu
1984 mActionUndo->plug( editMenu ); 1999 mActionUndo->plug( editMenu );
1985 mActionRedo->plug( editMenu ); 2000 mActionRedo->plug( editMenu );
1986 editMenu->insertSeparator(); 2001 editMenu->insertSeparator();
1987 mActionCut->plug( editMenu ); 2002 mActionCut->plug( editMenu );
1988 mActionCopy->plug( editMenu ); 2003 mActionCopy->plug( editMenu );
1989 mActionPaste->plug( editMenu ); 2004 mActionPaste->plug( editMenu );
1990 mActionDelete->plug( editMenu ); 2005 mActionDelete->plug( editMenu );
1991 editMenu->insertSeparator(); 2006 editMenu->insertSeparator();
1992 mActionSelectAll->plug( editMenu ); 2007 mActionSelectAll->plug( editMenu );
1993 2008
1994 mActionRemoveVoice->plug( changeMenu ); 2009 mActionRemoveVoice->plug( changeMenu );
1995 // settings menu 2010 // settings menu
1996//US special menuentry to configure the addressbook resources. On KDE 2011//US special menuentry to configure the addressbook resources. On KDE
1997// you do that through the control center !!! 2012// you do that through the control center !!!
1998 mActionConfigResources->plug( settingsMenu ); 2013 mActionConfigResources->plug( settingsMenu );
1999 settingsMenu->insertSeparator(); 2014 settingsMenu->insertSeparator();
2000 2015
2001 mActionConfigKAddressbook->plug( settingsMenu ); 2016 mActionConfigKAddressbook->plug( settingsMenu );
2002 2017
2003 if ( mIsPart ) { 2018 if ( mIsPart ) {
2004 mActionConfigShortcuts->plug( settingsMenu ); 2019 mActionConfigShortcuts->plug( settingsMenu );
2005 mActionConfigureToolbars->plug( settingsMenu ); 2020 mActionConfigureToolbars->plug( settingsMenu );
2006 2021
2007 } else { 2022 } else {
2008 mActionKeyBindings->plug( settingsMenu ); 2023 mActionKeyBindings->plug( settingsMenu );
2009 } 2024 }
2010 2025
2011 settingsMenu->insertSeparator(); 2026 settingsMenu->insertSeparator();
2012 2027
2013 mActionJumpBar->plug( settingsMenu ); 2028 mActionJumpBar->plug( settingsMenu );
2014 mActionDetails->plug( settingsMenu ); 2029 mActionDetails->plug( settingsMenu );
2015 if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2030 if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2016 mActionDetails->plug( tb ); 2031 mActionDetails->plug( tb );
2017 settingsMenu->insertSeparator(); 2032 settingsMenu->insertSeparator();
2018 2033
2019 mActionWhoAmI->plug( settingsMenu ); 2034 mActionWhoAmI->plug( settingsMenu );
2020 mActionCategories->plug( settingsMenu ); 2035 mActionCategories->plug( settingsMenu );
2021 2036
2022 mActionLicence->plug( helpMenu ); 2037 mActionLicence->plug( helpMenu );
2023 mActionFaq->plug( helpMenu ); 2038 mActionFaq->plug( helpMenu );
2024 mActionAboutKAddressbook->plug( helpMenu ); 2039 mActionAboutKAddressbook->plug( helpMenu );
2025 2040
2026 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2041 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2027 2042
2028 mActionSave->plug( tb ); 2043 mActionSave->plug( tb );
2029 mViewManager->getFilterAction()->plug ( tb); 2044 mViewManager->getFilterAction()->plug ( tb);
2030 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) { 2045 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) {
2031 mActionUndo->plug( tb ); 2046 mActionUndo->plug( tb );
2032 mActionDelete->plug( tb ); 2047 mActionDelete->plug( tb );
2033 mActionRedo->plug( tb ); 2048 mActionRedo->plug( tb );
2034 } 2049 }
2035 } 2050 }
2036 //mActionQuit->plug ( tb ); 2051 //mActionQuit->plug ( tb );
2037 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2052 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2038 2053
2039 //US link the searchwidget first to this. 2054 //US link the searchwidget first to this.
2040 // The real linkage to the toolbar happens later. 2055 // The real linkage to the toolbar happens later.
2041//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2056//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2042//US tb->insertItem( mIncSearchWidget ); 2057//US tb->insertItem( mIncSearchWidget );
2043/*US 2058/*US
2044 mIncSearchWidget = new IncSearchWidget( tb ); 2059 mIncSearchWidget = new IncSearchWidget( tb );
2045 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2060 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
2046 SLOT( incrementalSearch( const QString& ) ) ); 2061 SLOT( incrementalSearch( const QString& ) ) );
2047 2062
2048 mJumpButtonBar = new JumpButtonBar( this, this ); 2063 mJumpButtonBar = new JumpButtonBar( this, this );
2049 2064
2050//US topLayout->addWidget( mJumpButtonBar ); 2065//US topLayout->addWidget( mJumpButtonBar );
2051 this->layout()->add( mJumpButtonBar ); 2066 this->layout()->add( mJumpButtonBar );
2052*/ 2067*/
2053 2068
2054#endif //KAB_EMBEDDED 2069#endif //KAB_EMBEDDED
2055 2070
2056 mActionExport2phone->plug( ExportMenu ); 2071 mActionExport2phone->plug( ExportMenu );
2057 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2072 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2058 syncManager->fillSyncMenu(); 2073 syncManager->fillSyncMenu();
2059 2074
2060} 2075}
2061void KABCore::showLicence() 2076void KABCore::showLicence()
2062{ 2077{
2063 KApplication::showLicence(); 2078 KApplication::showLicence();
2064} 2079}
2065void KABCore::removeVoice() 2080void KABCore::removeVoice()
2066{ 2081{
2067 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 ) 2082 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 )
2068 return; 2083 return;
2069 KABC::Addressee::List list = mViewManager->selectedAddressees(); 2084 KABC::Addressee::List list = mViewManager->selectedAddressees();
2070 KABC::Addressee::List::Iterator it; 2085 KABC::Addressee::List::Iterator it;
2071 for ( it = list.begin(); it != list.end(); ++it ) { 2086 for ( it = list.begin(); it != list.end(); ++it ) {
2072 PhoneNumber::List phoneNumbers = (*it).phoneNumbers(); 2087 PhoneNumber::List phoneNumbers = (*it).phoneNumbers();
2073 PhoneNumber::List::Iterator phoneIt; 2088 PhoneNumber::List::Iterator phoneIt;
2074 bool found = false; 2089 bool found = false;
2075 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) { 2090 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) {
2076 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found 2091 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found
2077 if ((*phoneIt).type() - PhoneNumber::Voice ) { 2092 if ((*phoneIt).type() - PhoneNumber::Voice ) {
2078 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice ); 2093 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice );
2079 (*it).insertPhoneNumber( (*phoneIt) ); 2094 (*it).insertPhoneNumber( (*phoneIt) );
2080 found = true; 2095 found = true;
2081 } 2096 }
2082 } 2097 }
2083 2098
2084 } 2099 }
2085 if ( found ) 2100 if ( found )
2086 contactModified((*it) ); 2101 contactModified((*it) );
2087 } 2102 }
2088} 2103}
2089 2104
2090 2105
2091 2106
2092void KABCore::clipboardDataChanged() 2107void KABCore::clipboardDataChanged()
2093{ 2108{
2094 2109
2095 if ( mReadWrite ) 2110 if ( mReadWrite )
2096 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 2111 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
2097 2112
2098} 2113}
2099 2114
2100void KABCore::updateActionMenu() 2115void KABCore::updateActionMenu()
2101{ 2116{
2102 UndoStack *undo = UndoStack::instance(); 2117 UndoStack *undo = UndoStack::instance();
2103 RedoStack *redo = RedoStack::instance(); 2118 RedoStack *redo = RedoStack::instance();
2104 2119
2105 if ( undo->isEmpty() ) 2120 if ( undo->isEmpty() )
2106 mActionUndo->setText( i18n( "Undo" ) ); 2121 mActionUndo->setText( i18n( "Undo" ) );
2107 else 2122 else
2108 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 2123 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
2109 2124
2110 mActionUndo->setEnabled( !undo->isEmpty() ); 2125 mActionUndo->setEnabled( !undo->isEmpty() );
2111 2126
2112 if ( !redo->top() ) 2127 if ( !redo->top() )
2113 mActionRedo->setText( i18n( "Redo" ) ); 2128 mActionRedo->setText( i18n( "Redo" ) );
2114 else 2129 else
2115 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 2130 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
2116 2131
2117 mActionRedo->setEnabled( !redo->isEmpty() ); 2132 mActionRedo->setEnabled( !redo->isEmpty() );
2118} 2133}
2119 2134
2120void KABCore::configureKeyBindings() 2135void KABCore::configureKeyBindings()
2121{ 2136{
2122#ifndef KAB_EMBEDDED 2137#ifndef KAB_EMBEDDED
2123 KKeyDialog::configure( actionCollection(), true ); 2138 KKeyDialog::configure( actionCollection(), true );
2124#else //KAB_EMBEDDED 2139#else //KAB_EMBEDDED
2125 qDebug("KABCore::configureKeyBindings() not implemented"); 2140 qDebug("KABCore::configureKeyBindings() not implemented");
2126#endif //KAB_EMBEDDED 2141#endif //KAB_EMBEDDED
2127} 2142}
2128 2143
2129#ifdef KAB_EMBEDDED 2144#ifdef KAB_EMBEDDED
2130void KABCore::configureResources() 2145void KABCore::configureResources()
2131{ 2146{
2132 KRES::KCMKResources dlg( this, "" , 0 ); 2147 KRES::KCMKResources dlg( this, "" , 0 );
2133 2148
2134 if ( !dlg.exec() ) 2149 if ( !dlg.exec() )
2135 return; 2150 return;
2136 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 2151 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
2137} 2152}
2138#endif //KAB_EMBEDDED 2153#endif //KAB_EMBEDDED
2139 2154
2140 2155
2141/* this method will be called through the QCop interface from Ko/Pi to select addresses 2156/* this method will be called through the QCop interface from Ko/Pi to select addresses
2142 * for the attendees list of an event. 2157 * for the attendees list of an event.
2143 */ 2158 */
2144void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid) 2159void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
2145{ 2160{
2146 QStringList nameList; 2161 QStringList nameList;
2147 QStringList emailList; 2162 QStringList emailList;
2148 QStringList uidList; 2163 QStringList uidList;
2149 2164
2150 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 2165 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
2151 uint i=0; 2166 uint i=0;
2152 for (i=0; i < list.count(); i++) 2167 for (i=0; i < list.count(); i++)
2153 { 2168 {
2154 nameList.append(list[i].realName()); 2169 nameList.append(list[i].realName());
2155 emailList.append(list[i].preferredEmail()); 2170 emailList.append(list[i].preferredEmail());
2156 uidList.append(list[i].uid()); 2171 uidList.append(list[i].uid());
2157 } 2172 }
2158 2173
2159 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 2174 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
2160 2175
2161} 2176}
2162 2177
2163/* this method will be called through the QCop interface from Ko/Pi to select birthdays 2178/* this method will be called through the QCop interface from Ko/Pi to select birthdays
2164 * to put them into the calendar. 2179 * to put them into the calendar.
2165 */ 2180 */
2166void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid) 2181void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid)
2167{ 2182{
2168 // qDebug("KABCore::requestForBirthdayList"); 2183 // qDebug("KABCore::requestForBirthdayList");
2169 QStringList birthdayList; 2184 QStringList birthdayList;
2170 QStringList anniversaryList; 2185 QStringList anniversaryList;
2171 QStringList realNameList; 2186 QStringList realNameList;
2172 QStringList preferredEmailList; 2187 QStringList preferredEmailList;
2173 QStringList assembledNameList; 2188 QStringList assembledNameList;
2174 QStringList uidList; 2189 QStringList uidList;
2175 2190
2176 KABC::AddressBook::Iterator it; 2191 KABC::AddressBook::Iterator it;
2177 2192
2178 int count = 0; 2193 int count = 0;
2179 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2194 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2180 ++count; 2195 ++count;
2181 } 2196 }
2182 QProgressBar bar(count,0 ); 2197 QProgressBar bar(count,0 );
2183 int w = 300; 2198 int w = 300;
2184 if ( QApplication::desktop()->width() < 320 ) 2199 if ( QApplication::desktop()->width() < 320 )
2185 w = 220; 2200 w = 220;
2186 int h = bar.sizeHint().height() ; 2201 int h = bar.sizeHint().height() ;
2187 int dw = QApplication::desktop()->width(); 2202 int dw = QApplication::desktop()->width();
2188 int dh = QApplication::desktop()->height(); 2203 int dh = QApplication::desktop()->height();
2189 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2204 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2190 bar.show(); 2205 bar.show();
2191 bar.setCaption (i18n("collecting birthdays - close to abort!") ); 2206 bar.setCaption (i18n("collecting birthdays - close to abort!") );
2192 qApp->processEvents(); 2207 qApp->processEvents();
2193 2208
2194 QDate bday; 2209 QDate bday;
2195 QString anni; 2210 QString anni;
2196 QString formattedbday; 2211 QString formattedbday;
2197 2212
2198 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) 2213 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it )
2199 { 2214 {
2200 if ( ! bar.isVisible() ) 2215 if ( ! bar.isVisible() )
2201 return; 2216 return;
2202 bar.setProgress( count++ ); 2217 bar.setProgress( count++ );
2203 qApp->processEvents(); 2218 qApp->processEvents();
2204 bday = (*it).birthday().date(); 2219 bday = (*it).birthday().date();
2205 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" ); 2220 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" );
2206 2221
2207 if ( bday.isValid() || !anni.isEmpty()) 2222 if ( bday.isValid() || !anni.isEmpty())
2208 { 2223 {
2209 if (bday.isValid()) 2224 if (bday.isValid())
2210 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate); 2225 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate);
2211 else 2226 else
2212 formattedbday = "NOTVALID"; 2227 formattedbday = "NOTVALID";
2213 if (anni.isEmpty()) 2228 if (anni.isEmpty())
2214 anni = "INVALID"; 2229 anni = "INVALID";
2215 2230
2216 birthdayList.append(formattedbday); 2231 birthdayList.append(formattedbday);
2217 anniversaryList.append(anni); //should be ISODate 2232 anniversaryList.append(anni); //should be ISODate
2218 realNameList.append((*it).realName()); 2233 realNameList.append((*it).realName());
2219 preferredEmailList.append((*it).preferredEmail()); 2234 preferredEmailList.append((*it).preferredEmail());
2220 assembledNameList.append((*it).assembledName()); 2235 assembledNameList.append((*it).assembledName());
2221 uidList.append((*it).uid()); 2236 uidList.append((*it).uid());
2222 2237
2223 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() ); 2238 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() );
2224 } 2239 }
2225 } 2240 }
2226 2241
2227 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList); 2242 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList);
2228 2243
2229} 2244}
2230 2245
2231/* this method will be called through the QCop interface from other apps to show details of a contact. 2246/* this method will be called through the QCop interface from other apps to show details of a contact.
2232 */ 2247 */
2233void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 2248void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2234{ 2249{
2235 qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1()); 2250 qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2236 2251
2237 QString foundUid = QString::null; 2252 QString foundUid = QString::null;
2238 if ( ! uid.isEmpty() ) { 2253 if ( ! uid.isEmpty() ) {
2239 Addressee adrr = mAddressBook->findByUid( uid ); 2254 Addressee adrr = mAddressBook->findByUid( uid );
2240 if ( !adrr.isEmpty() ) { 2255 if ( !adrr.isEmpty() ) {
2241 foundUid = uid; 2256 foundUid = uid;
2242 } 2257 }
2243 if ( email == "sendbacklist" ) { 2258 if ( email == "sendbacklist" ) {
2244 //qDebug("ssssssssssssssssssssssend "); 2259 //qDebug("ssssssssssssssssssssssend ");
2245 QStringList nameList; 2260 QStringList nameList;
2246 QStringList emailList; 2261 QStringList emailList;
2247 QStringList uidList; 2262 QStringList uidList;
2248 nameList.append(adrr.realName()); 2263 nameList.append(adrr.realName());
2249 emailList = adrr.emails(); 2264 emailList = adrr.emails();
2250 uidList.append( adrr.preferredEmail()); 2265 uidList.append( adrr.preferredEmail());
2251 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 2266 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
2252 return; 2267 return;
2253 } 2268 }
2254 2269
2255 } 2270 }
2256 2271
2257 if ( email == "sendbacklist" ) 2272 if ( email == "sendbacklist" )
2258 return; 2273 return;
2259 if (foundUid.isEmpty()) 2274 if (foundUid.isEmpty())
2260 { 2275 {
2261 //find the uid of the person first 2276 //find the uid of the person first
2262 Addressee::List namelist; 2277 Addressee::List namelist;
2263 Addressee::List emaillist; 2278 Addressee::List emaillist;
2264 2279
2265 if (!name.isEmpty()) 2280 if (!name.isEmpty())
2266 namelist = mAddressBook->findByName( name ); 2281 namelist = mAddressBook->findByName( name );
2267 2282
2268 if (!email.isEmpty()) 2283 if (!email.isEmpty())
2269 emaillist = mAddressBook->findByEmail( email ); 2284 emaillist = mAddressBook->findByEmail( email );
2270 qDebug("count %d %d ", namelist.count(),emaillist.count() ); 2285 qDebug("count %d %d ", namelist.count(),emaillist.count() );
2271 //check if we have a match in Namelist and Emaillist 2286 //check if we have a match in Namelist and Emaillist
2272 if ((namelist.count() == 0) && (emaillist.count() > 0)) { 2287 if ((namelist.count() == 0) && (emaillist.count() > 0)) {
2273 foundUid = emaillist[0].uid(); 2288 foundUid = emaillist[0].uid();
2274 } 2289 }
2275 else if ((namelist.count() > 0) && (emaillist.count() == 0)) 2290 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2276 foundUid = namelist[0].uid(); 2291 foundUid = namelist[0].uid();
2277 else 2292 else
2278 { 2293 {
2279 for (int i = 0; i < namelist.count(); i++) 2294 for (int i = 0; i < namelist.count(); i++)
2280 { 2295 {
2281 for (int j = 0; j < emaillist.count(); j++) 2296 for (int j = 0; j < emaillist.count(); j++)
2282 { 2297 {
2283 if (namelist[i] == emaillist[j]) 2298 if (namelist[i] == emaillist[j])
2284 { 2299 {
2285 foundUid = namelist[i].uid(); 2300 foundUid = namelist[i].uid();
2286 } 2301 }
2287 } 2302 }
2288 } 2303 }
2289 } 2304 }
2290 } 2305 }
2291 else 2306 else
2292 { 2307 {
2293 foundUid = uid; 2308 foundUid = uid;
2294 } 2309 }
2295 2310
2296 if (!foundUid.isEmpty()) 2311 if (!foundUid.isEmpty())
2297 { 2312 {
2298 2313
2299 // raise Ka/Pi if it is in the background 2314 // raise Ka/Pi if it is in the background
2300#ifndef DESKTOP_VERSION 2315#ifndef DESKTOP_VERSION
2301#ifndef KORG_NODCOP 2316#ifndef KORG_NODCOP
2302 //QCopEnvelope e("QPE/Application/kapi", "raise()"); 2317 //QCopEnvelope e("QPE/Application/kapi", "raise()");
2303#endif 2318#endif
2304#endif 2319#endif
2305 2320
2306 mMainWindow->showMaximized(); 2321 mMainWindow->showMaximized();
2307 mMainWindow-> raise(); 2322 mMainWindow-> raise();
2308 2323
2309 mViewManager->setSelected( "", false); 2324 mViewManager->setSelected( "", false);
2310 mViewManager->refreshView( "" ); 2325 mViewManager->refreshView( "" );
2311 mViewManager->setSelected( foundUid, true ); 2326 mViewManager->setSelected( foundUid, true );
2312 mViewManager->refreshView( foundUid ); 2327 mViewManager->refreshView( foundUid );
2313 2328
2314 if ( !mMultipleViewsAtOnce ) 2329 if ( !mMultipleViewsAtOnce )
2315 { 2330 {
2316 setDetailsVisible( true ); 2331 setDetailsVisible( true );
2317 mActionDetails->setChecked(true); 2332 mActionDetails->setChecked(true);
2318 } 2333 }
2319 } 2334 }
2320} 2335}
2321 2336
2322 2337
2323void KABCore::faq() 2338void KABCore::faq()
2324{ 2339{
2325 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" ); 2340 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" );
2326} 2341}
2327 2342
2328#include <libkcal/syncdefines.h> 2343#include <libkcal/syncdefines.h>
2329 2344
2330KABC::Addressee KABCore::getLastSyncAddressee() 2345KABC::Addressee KABCore::getLastSyncAddressee()
2331{ 2346{
2332 Addressee lse; 2347 Addressee lse;
2333 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2348 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2334 2349
2335 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2350 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2336 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2351 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2337 if (lse.isEmpty()) { 2352 if (lse.isEmpty()) {
2338 qDebug("Creating new last-syncAddressee "); 2353 qDebug("Creating new last-syncAddressee ");
2339 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2354 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2340 QString sum = ""; 2355 QString sum = "";
2341 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2356 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
2342 sum = "E: "; 2357 sum = "E: ";
2343 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event")); 2358 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event"));
2344 lse.setRevision( mLastAddressbookSync ); 2359 lse.setRevision( mLastAddressbookSync );
2345 lse.setCategories( i18n("SyncEvent") ); 2360 lse.setCategories( i18n("SyncEvent") );
2346 mAddressBook->insertAddressee( lse ); 2361 mAddressBook->insertAddressee( lse );
2347 } 2362 }
2348 return lse; 2363 return lse;
2349} 2364}
2350int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ) 2365int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2351{ 2366{
2352 2367
2353 //void setZaurusId(int id); 2368 //void setZaurusId(int id);
2354 // int zaurusId() const; 2369 // int zaurusId() const;
2355 // void setZaurusUid(int id); 2370 // void setZaurusUid(int id);
2356 // int zaurusUid() const; 2371 // int zaurusUid() const;
2357 // void setZaurusStat(int id); 2372 // void setZaurusStat(int id);
2358 // int zaurusStat() const; 2373 // int zaurusStat() const;
2359 // 0 equal 2374 // 0 equal
2360 // 1 take local 2375 // 1 take local
2361 // 2 take remote 2376 // 2 take remote
2362 // 3 cancel 2377 // 3 cancel
2363 QDateTime lastSync = mLastAddressbookSync; 2378 QDateTime lastSync = mLastAddressbookSync;
2364 QDateTime localMod = local->revision(); 2379 QDateTime localMod = local->revision();
2365 QDateTime remoteMod = remote->revision(); 2380 QDateTime remoteMod = remote->revision();
2366 2381
2367 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2382 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2368 2383
2369 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2384 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2370 bool remCh, locCh; 2385 bool remCh, locCh;
2371 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 2386 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2372 2387
2373 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 2388 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2374 locCh = ( localMod > mLastAddressbookSync ); 2389 locCh = ( localMod > mLastAddressbookSync );
2375 if ( !remCh && ! locCh ) { 2390 if ( !remCh && ! locCh ) {
2376 //qDebug("both not changed "); 2391 //qDebug("both not changed ");
2377 lastSync = localMod.addDays(1); 2392 lastSync = localMod.addDays(1);
2378 if ( mode <= SYNC_PREF_ASK ) 2393 if ( mode <= SYNC_PREF_ASK )
2379 return 0; 2394 return 0;
2380 } else { 2395 } else {
2381 if ( locCh ) { 2396 if ( locCh ) {
2382 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1()); 2397 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1());
2383 lastSync = localMod.addDays( -1 ); 2398 lastSync = localMod.addDays( -1 );
2384 if ( !remCh ) 2399 if ( !remCh )
2385 remoteMod =( lastSync.addDays( -1 ) ); 2400 remoteMod =( lastSync.addDays( -1 ) );
2386 } else { 2401 } else {
2387 //qDebug(" not loc changed "); 2402 //qDebug(" not loc changed ");
2388 lastSync = localMod.addDays( 1 ); 2403 lastSync = localMod.addDays( 1 );
2389 if ( remCh ) 2404 if ( remCh )
2390 remoteMod =( lastSync.addDays( 1 ) ); 2405 remoteMod =( lastSync.addDays( 1 ) );
2391 2406
2392 } 2407 }
2393 } 2408 }
2394 full = true; 2409 full = true;
2395 if ( mode < SYNC_PREF_ASK ) 2410 if ( mode < SYNC_PREF_ASK )
2396 mode = SYNC_PREF_ASK; 2411 mode = SYNC_PREF_ASK;
2397 } else { 2412 } else {
2398 if ( localMod == remoteMod ) 2413 if ( localMod == remoteMod )
2399 return 0; 2414 return 0;
2400 2415
2401 } 2416 }
2402 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 2417 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
2403 2418
2404 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , localMod, remote->lastModified().toString().latin1(), remoteMod); 2419 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , localMod, remote->lastModified().toString().latin1(), remoteMod);
2405 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() ); 2420 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
2406 //full = true; //debug only 2421 //full = true; //debug only
2407 if ( full ) { 2422 if ( full ) {
2408 bool equ = ( (*local) == (*remote) ); 2423 bool equ = ( (*local) == (*remote) );
2409 if ( equ ) { 2424 if ( equ ) {
2410 //qDebug("equal "); 2425 //qDebug("equal ");
2411 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2426 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2412 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 2427 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2413 } 2428 }
2414 if ( mode < SYNC_PREF_FORCE_LOCAL ) 2429 if ( mode < SYNC_PREF_FORCE_LOCAL )
2415 return 0; 2430 return 0;
2416 2431
2417 }//else //debug only 2432 }//else //debug only
2418 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 2433 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2419 } 2434 }
2420 int result; 2435 int result;
2421 bool localIsNew; 2436 bool localIsNew;
2422 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() ); 2437 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , local->lastModified().toString().latin1() , remote->lastModified().toString().latin1() );
2423 2438
2424 if ( full && mode < SYNC_PREF_NEWEST ) 2439 if ( full && mode < SYNC_PREF_NEWEST )
2425 mode = SYNC_PREF_ASK; 2440 mode = SYNC_PREF_ASK;
2426 2441
2427 switch( mode ) { 2442 switch( mode ) {
2428 case SYNC_PREF_LOCAL: 2443 case SYNC_PREF_LOCAL:
2429 if ( lastSync > remoteMod ) 2444 if ( lastSync > remoteMod )
2430 return 1; 2445 return 1;
2431 if ( lastSync > localMod ) 2446 if ( lastSync > localMod )
2432 return 2; 2447 return 2;
2433 return 1; 2448 return 1;
2434 break; 2449 break;
2435 case SYNC_PREF_REMOTE: 2450 case SYNC_PREF_REMOTE:
2436 if ( lastSync > remoteMod ) 2451 if ( lastSync > remoteMod )
2437 return 1; 2452 return 1;
2438 if ( lastSync > localMod ) 2453 if ( lastSync > localMod )
2439 return 2; 2454 return 2;
2440 return 2; 2455 return 2;
2441 break; 2456 break;
2442 case SYNC_PREF_NEWEST: 2457 case SYNC_PREF_NEWEST:
2443 if ( localMod > remoteMod ) 2458 if ( localMod > remoteMod )
2444 return 1; 2459 return 1;
2445 else 2460 else
2446 return 2; 2461 return 2;
2447 break; 2462 break;
2448 case SYNC_PREF_ASK: 2463 case SYNC_PREF_ASK:
2449 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 2464 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
2450 if ( lastSync > remoteMod ) 2465 if ( lastSync > remoteMod )
2451 return 1; 2466 return 1;
2452 if ( lastSync > localMod ) 2467 if ( lastSync > localMod )
2453 return 2; 2468 return 2;
2454 localIsNew = localMod >= remoteMod; 2469 localIsNew = localMod >= remoteMod;
2455 //qDebug("conflict! ************************************** "); 2470 //qDebug("conflict! ************************************** ");
2456 { 2471 {
2457 KPIM::AddresseeChooser acd ( *local,*remote, localIsNew , this ); 2472 KPIM::AddresseeChooser acd ( *local,*remote, localIsNew , this );
2458 result = acd.executeD(localIsNew); 2473 result = acd.executeD(localIsNew);
2459 return result; 2474 return result;
2460 } 2475 }
2461 break; 2476 break;
2462 case SYNC_PREF_FORCE_LOCAL: 2477 case SYNC_PREF_FORCE_LOCAL:
2463 return 1; 2478 return 1;
2464 break; 2479 break;
2465 case SYNC_PREF_FORCE_REMOTE: 2480 case SYNC_PREF_FORCE_REMOTE:
2466 return 2; 2481 return 2;
2467 break; 2482 break;
2468 2483
2469 default: 2484 default:
2470 // SYNC_PREF_TAKE_BOTH not implemented 2485 // SYNC_PREF_TAKE_BOTH not implemented
2471 break; 2486 break;
2472 } 2487 }
2473 return 0; 2488 return 0;
2474} 2489}
2475 2490
2476 2491
2477bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode) 2492bool KABCore::synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode)
2478{ 2493{
2479 bool syncOK = true; 2494 bool syncOK = true;
2480 int addedAddressee = 0; 2495 int addedAddressee = 0;
2481 int addedAddresseeR = 0; 2496 int addedAddresseeR = 0;
2482 int deletedAddresseeR = 0; 2497 int deletedAddresseeR = 0;
2483 int deletedAddresseeL = 0; 2498 int deletedAddresseeL = 0;
2484 int changedLocal = 0; 2499 int changedLocal = 0;
2485 int changedRemote = 0; 2500 int changedRemote = 0;
2486 2501
2487 QString mCurrentSyncName = syncManager->getCurrentSyncName(); 2502 QString mCurrentSyncName = syncManager->getCurrentSyncName();
2488 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2503 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2489 2504
2490 //QPtrList<Addressee> el = local->rawAddressees(); 2505 //QPtrList<Addressee> el = local->rawAddressees();
2491 Addressee addresseeR; 2506 Addressee addresseeR;
2492 QString uid; 2507 QString uid;
2493 int take; 2508 int take;
2494 Addressee addresseeL; 2509 Addressee addresseeL;
2495 Addressee addresseeRSync; 2510 Addressee addresseeRSync;
2496 Addressee addresseeLSync; 2511 Addressee addresseeLSync;
2497 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees(); 2512 // KABC::Addressee::List addresseeRSyncSharp = remote->getExternLastSyncAddressees();
2498 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees(); 2513 //KABC::Addressee::List addresseeLSyncSharp = local->getExternLastSyncAddressees();
2499 bool fullDateRange = false; 2514 bool fullDateRange = false;
2500 local->resetTempSyncStat(); 2515 local->resetTempSyncStat();
2501 mLastAddressbookSync = QDateTime::currentDateTime(); 2516 mLastAddressbookSync = QDateTime::currentDateTime();
2502 QDateTime modifiedCalendar = mLastAddressbookSync;; 2517 QDateTime modifiedCalendar = mLastAddressbookSync;;
2503 addresseeLSync = getLastSyncAddressee(); 2518 addresseeLSync = getLastSyncAddressee();
2504 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1()); 2519 qDebug("Last Sync %s ", addresseeLSync.revision().toString().latin1());
2505 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName ); 2520 addresseeR = remote->findByUid("last-syncAddressee-"+mCurrentSyncName );
2506 if ( !addresseeR.isEmpty() ) { 2521 if ( !addresseeR.isEmpty() ) {
2507 addresseeRSync = addresseeR; 2522 addresseeRSync = addresseeR;
2508 remote->removeAddressee(addresseeR ); 2523 remote->removeAddressee(addresseeR );
2509 2524
2510 } else { 2525 } else {
2511 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2526 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2512 addresseeRSync = addresseeLSync ; 2527 addresseeRSync = addresseeLSync ;
2513 } else { 2528 } else {
2514 qDebug("FULLDATE 1"); 2529 qDebug("FULLDATE 1");
2515 fullDateRange = true; 2530 fullDateRange = true;
2516 Addressee newAdd; 2531 Addressee newAdd;
2517 addresseeRSync = newAdd; 2532 addresseeRSync = newAdd;
2518 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee")); 2533 addresseeRSync.setFamilyName(mCurrentSyncName + i18n(" - sync addressee"));
2519 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName ); 2534 addresseeRSync.setUid("last-syncAddressee-"+mCurrentSyncName );
2520 addresseeRSync.setRevision( mLastAddressbookSync ); 2535 addresseeRSync.setRevision( mLastAddressbookSync );
2521 addresseeRSync.setCategories( i18n("SyncAddressee") ); 2536 addresseeRSync.setCategories( i18n("SyncAddressee") );
2522 } 2537 }
2523 } 2538 }
2524 if ( addresseeLSync.revision() == mLastAddressbookSync ) { 2539 if ( addresseeLSync.revision() == mLastAddressbookSync ) {
2525 qDebug("FULLDATE 2"); 2540 qDebug("FULLDATE 2");
2526 fullDateRange = true; 2541 fullDateRange = true;
2527 } 2542 }
2528 if ( ! fullDateRange ) { 2543 if ( ! fullDateRange ) {
2529 if ( addresseeLSync.revision() != addresseeRSync.revision() ) { 2544 if ( addresseeLSync.revision() != addresseeRSync.revision() ) {
2530 2545
2531 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() ); 2546 // qDebug("set fulldate to true %s %s" ,addresseeLSync->dtStart().toString().latin1(), addresseeRSync->dtStart().toString().latin1() );
2532 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec()); 2547 //qDebug("%d %d %d %d ", addresseeLSync->dtStart().time().second(), addresseeLSync->dtStart().time().msec() , addresseeRSync->dtStart().time().second(), addresseeRSync->dtStart().time().msec());
2533 fullDateRange = true; 2548 fullDateRange = true;
2534 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() ); 2549 qDebug("FULLDATE 3 %s %s", addresseeLSync.revision().toString().latin1() , addresseeRSync.revision().toString().latin1() );
2535 } 2550 }
2536 } 2551 }
2537 // fullDateRange = true; // debug only! 2552 // fullDateRange = true; // debug only!
2538 if ( fullDateRange ) 2553 if ( fullDateRange )
2539 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365); 2554 mLastAddressbookSync = QDateTime::currentDateTime().addDays( -100*365);
2540 else 2555 else
2541 mLastAddressbookSync = addresseeLSync.revision(); 2556 mLastAddressbookSync = addresseeLSync.revision();
2542 // for resyncing if own file has changed 2557 // for resyncing if own file has changed
2543 // PENDING fixme later when implemented 2558 // PENDING fixme later when implemented
2544#if 0 2559#if 0
2545 if ( mCurrentSyncDevice == "deleteaftersync" ) { 2560 if ( mCurrentSyncDevice == "deleteaftersync" ) {
2546 mLastAddressbookSync = loadedFileVersion; 2561 mLastAddressbookSync = loadedFileVersion;
2547 qDebug("setting mLastAddressbookSync "); 2562 qDebug("setting mLastAddressbookSync ");
2548 } 2563 }
2549#endif 2564#endif
2550 2565
2551 //qDebug("*************************** "); 2566 //qDebug("*************************** ");
2552 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() ); 2567 // qDebug("mLastAddressbookSync %s ",mLastAddressbookSync.toString().latin1() );
2553 QStringList er = remote->uidList(); 2568 QStringList er = remote->uidList();
2554 Addressee inR ;//= er.first(); 2569 Addressee inR ;//= er.first();
2555 Addressee inL; 2570 Addressee inL;
2556 2571
2557 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count()); 2572 syncManager->showProgressBar(0, i18n("Syncing - close to abort!"), er.count());
2558 2573
2559 int modulo = (er.count()/10)+1; 2574 int modulo = (er.count()/10)+1;
2560 int incCounter = 0; 2575 int incCounter = 0;
2561 while ( incCounter < er.count()) { 2576 while ( incCounter < er.count()) {
2562 if (syncManager->isProgressBarCanceled()) 2577 if (syncManager->isProgressBarCanceled())
2563 return false; 2578 return false;
2564 if ( incCounter % modulo == 0 ) 2579 if ( incCounter % modulo == 0 )
2565 syncManager->showProgressBar(incCounter); 2580 syncManager->showProgressBar(incCounter);
2566 2581
2567 uid = er[ incCounter ]; 2582 uid = er[ incCounter ];
2568 bool skipIncidence = false; 2583 bool skipIncidence = false;
2569 if ( uid.left(19) == QString("last-syncAddressee-") ) 2584 if ( uid.left(19) == QString("last-syncAddressee-") )
2570 skipIncidence = true; 2585 skipIncidence = true;
2571 QString idS,OidS; 2586 QString idS,OidS;
2572 qApp->processEvents(); 2587 qApp->processEvents();
2573 if ( !skipIncidence ) { 2588 if ( !skipIncidence ) {
2574 inL = local->findByUid( uid ); 2589 inL = local->findByUid( uid );
2575 inR = remote->findByUid( uid ); 2590 inR = remote->findByUid( uid );
2576 //inL.setResource( 0 ); 2591 //inL.setResource( 0 );
2577 //inR.setResource( 0 ); 2592 //inR.setResource( 0 );
2578 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars 2593 if ( !inL.isEmpty() ) { // maybe conflict - same uid in both calendars
2579 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) { 2594 if ( take = takeAddressee( &inL, &inR, mode, fullDateRange ) ) {
2580 //qDebug("take %d %s ", take, inL.summary().latin1()); 2595 //qDebug("take %d %s ", take, inL.summary().latin1());
2581 if ( take == 3 ) 2596 if ( take == 3 )
2582 return false; 2597 return false;
2583 if ( take == 1 ) {// take local 2598 if ( take == 1 ) {// take local
2584 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2599 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2585 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2600 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2586 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2601 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2587 local->insertAddressee( inL, false ); 2602 local->insertAddressee( inL, false );
2588 idS = inR.externalUID(); 2603 idS = inR.externalUID();
2589 OidS = inR.originalExternalUID(); 2604 OidS = inR.originalExternalUID();
2590 } 2605 }
2591 else 2606 else
2592 idS = inR.IDStr(); 2607 idS = inR.IDStr();
2593 remote->removeAddressee( inR ); 2608 remote->removeAddressee( inR );
2594 inR = inL; 2609 inR = inL;
2595 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 2610 inR.setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
2596 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2611 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2597 inR.setOriginalExternalUID( OidS ); 2612 inR.setOriginalExternalUID( OidS );
2598 inR.setExternalUID( idS ); 2613 inR.setExternalUID( idS );
2599 } else { 2614 } else {
2600 inR.setIDStr( idS ); 2615 inR.setIDStr( idS );
2601 } 2616 }
2602 inR.setResource( 0 ); 2617 inR.setResource( 0 );
2603 remote->insertAddressee( inR , false); 2618 remote->insertAddressee( inR , false);
2604 ++changedRemote; 2619 ++changedRemote;
2605 } else { // take == 2 take remote 2620 } else { // take == 2 take remote
2606 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2621 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2607 if ( inR.revision().date().year() < 2004 ) 2622 if ( inR.revision().date().year() < 2004 )
2608 inR.setRevision( modifiedCalendar ); 2623 inR.setRevision( modifiedCalendar );
2609 } 2624 }
2610 idS = inL.IDStr(); 2625 idS = inL.IDStr();
2611 local->removeAddressee( inL ); 2626 local->removeAddressee( inL );
2612 inL = inR; 2627 inL = inR;
2613 inL.setIDStr( idS ); 2628 inL.setIDStr( idS );
2614 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2629 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2615 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) ); 2630 inL.setCsum( mCurrentSyncDevice, inR.getCsum(mCurrentSyncDevice) );
2616 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) ); 2631 inL.setID( mCurrentSyncDevice, inR.getID(mCurrentSyncDevice) );
2617 } 2632 }
2618 inL.setResource( 0 ); 2633 inL.setResource( 0 );
2619 local->insertAddressee( inL , false ); 2634 local->insertAddressee( inL , false );
2620 ++changedLocal; 2635 ++changedLocal;
2621 } 2636 }
2622 } 2637 }
2623 } else { // no conflict 2638 } else { // no conflict
2624 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2639 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2625 QString des = addresseeLSync.note(); 2640 QString des = addresseeLSync.note();
2626 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 2641 if ( des.find( inR.getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
2627 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 2642 inR.setTempSyncStat( SYNC_TEMPSTATE_DELETE );
2628 remote->insertAddressee( inR, false ); 2643 remote->insertAddressee( inR, false );
2629 ++deletedAddresseeR; 2644 ++deletedAddresseeR;
2630 } else { 2645 } else {
2631 inR.setRevision( modifiedCalendar ); 2646 inR.setRevision( modifiedCalendar );
2632 remote->insertAddressee( inR, false ); 2647 remote->insertAddressee( inR, false );
2633 inL = inR; 2648 inL = inR;
2634 inL.setResource( 0 ); 2649 inL.setResource( 0 );
2635 local->insertAddressee( inL , false); 2650 local->insertAddressee( inL , false);
2636 ++addedAddressee; 2651 ++addedAddressee;
2637 } 2652 }
2638 } else { 2653 } else {
2639 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) { 2654 if ( inR.revision() > mLastAddressbookSync || mode == 5 ) {
2640 inR.setRevision( modifiedCalendar ); 2655 inR.setRevision( modifiedCalendar );
2641 remote->insertAddressee( inR, false ); 2656 remote->insertAddressee( inR, false );
2642 inR.setResource( 0 ); 2657 inR.setResource( 0 );
2643 local->insertAddressee( inR, false ); 2658 local->insertAddressee( inR, false );
2644 ++addedAddressee; 2659 ++addedAddressee;
2645 } else { 2660 } else {
2646 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR); 2661 // pending checkExternSyncAddressee(addresseeRSyncSharp, inR);
2647 remote->removeAddressee( inR ); 2662 remote->removeAddressee( inR );
2648 ++deletedAddresseeR; 2663 ++deletedAddresseeR;
2649 } 2664 }
2650 } 2665 }
2651 } 2666 }
2652 } 2667 }
2653 ++incCounter; 2668 ++incCounter;
2654 } 2669 }
2655 er.clear(); 2670 er.clear();
2656 QStringList el = local->uidList(); 2671 QStringList el = local->uidList();
2657 modulo = (el.count()/10)+1; 2672 modulo = (el.count()/10)+1;
2658 2673
2659 syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count()); 2674 syncManager->showProgressBar(0, i18n("Add / remove addressees"), el.count());
2660 incCounter = 0; 2675 incCounter = 0;
2661 while ( incCounter < el.count()) { 2676 while ( incCounter < el.count()) {
2662 qApp->processEvents(); 2677 qApp->processEvents();
2663 if (syncManager->isProgressBarCanceled()) 2678 if (syncManager->isProgressBarCanceled())
2664 return false; 2679 return false;
2665 if ( incCounter % modulo == 0 ) 2680 if ( incCounter % modulo == 0 )
2666 syncManager->showProgressBar(incCounter); 2681 syncManager->showProgressBar(incCounter);
2667 uid = el[ incCounter ]; 2682 uid = el[ incCounter ];
2668 bool skipIncidence = false; 2683 bool skipIncidence = false;
2669 if ( uid.left(19) == QString("last-syncAddressee-") ) 2684 if ( uid.left(19) == QString("last-syncAddressee-") )
2670 skipIncidence = true; 2685 skipIncidence = true;
2671 if ( !skipIncidence ) { 2686 if ( !skipIncidence ) {
2672 inL = local->findByUid( uid ); 2687 inL = local->findByUid( uid );
2673 inR = remote->findByUid( uid ); 2688 inR = remote->findByUid( uid );
2674 if ( inR.isEmpty() ) { 2689 if ( inR.isEmpty() ) {
2675 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2690 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2676 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 2691 if ( !inL.getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
2677 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 2692 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
2678 local->removeAddressee( inL ); 2693 local->removeAddressee( inL );
2679 ++deletedAddresseeL; 2694 ++deletedAddresseeL;
2680 } else { 2695 } else {
2681 if ( ! syncManager->mWriteBackExistingOnly ) { 2696 if ( ! syncManager->mWriteBackExistingOnly ) {
2682 inL.removeID(mCurrentSyncDevice ); 2697 inL.removeID(mCurrentSyncDevice );
2683 ++addedAddresseeR; 2698 ++addedAddresseeR;
2684 inL.setRevision( modifiedCalendar ); 2699 inL.setRevision( modifiedCalendar );
2685 local->insertAddressee( inL, false ); 2700 local->insertAddressee( inL, false );
2686 inR = inL; 2701 inR = inL;
2687 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL ); 2702 inR.setTempSyncStat( SYNC_TEMPSTATE_ADDED_EXTERNAL );
2688 inR.setResource( 0 ); 2703 inR.setResource( 0 );
2689 remote->insertAddressee( inR, false ); 2704 remote->insertAddressee( inR, false );
2690 } 2705 }
2691 } 2706 }
2692 } else { 2707 } else {
2693 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) { 2708 if ( inL.revision() < mLastAddressbookSync && mode != 4 ) {
2694 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL); 2709 // pending checkExternSyncAddressee(addresseeLSyncSharp, inL);
2695 local->removeAddressee( inL ); 2710 local->removeAddressee( inL );
2696 ++deletedAddresseeL; 2711 ++deletedAddresseeL;
2697 } else { 2712 } else {
2698 if ( ! syncManager->mWriteBackExistingOnly ) { 2713 if ( ! syncManager->mWriteBackExistingOnly ) {
2699 ++addedAddresseeR; 2714 ++addedAddresseeR;
2700 inL.setRevision( modifiedCalendar ); 2715 inL.setRevision( modifiedCalendar );
2701 local->insertAddressee( inL, false ); 2716 local->insertAddressee( inL, false );
2702 inR = inL; 2717 inR = inL;
2703 inR.setResource( 0 ); 2718 inR.setResource( 0 );
2704 remote->insertAddressee( inR, false ); 2719 remote->insertAddressee( inR, false );
2705 } 2720 }
2706 } 2721 }
2707 } 2722 }
2708 } 2723 }
2709 } 2724 }
2710 ++incCounter; 2725 ++incCounter;
2711 } 2726 }
2712 el.clear(); 2727 el.clear();
2713 syncManager->hideProgressBar(); 2728 syncManager->hideProgressBar();
2714 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 ); 2729 mLastAddressbookSync = QDateTime::currentDateTime().addSecs( 1 );
2715 // get rid of micro seconds 2730 // get rid of micro seconds
2716 QTime t = mLastAddressbookSync.time(); 2731 QTime t = mLastAddressbookSync.time();
2717 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) ); 2732 mLastAddressbookSync.setTime( QTime (t.hour (), t.minute (), t.second () ) );
2718 addresseeLSync.setRevision( mLastAddressbookSync ); 2733 addresseeLSync.setRevision( mLastAddressbookSync );
2719 addresseeRSync.setRevision( mLastAddressbookSync ); 2734 addresseeRSync.setRevision( mLastAddressbookSync );
2720 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ; 2735 addresseeRSync.setRole( i18n("!Remote from: ")+mCurrentSyncName ) ;
2721 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName ); 2736 addresseeLSync.setRole(i18n("!Local from: ") + mCurrentSyncName );
2722 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ; 2737 addresseeRSync.setGivenName( i18n("!DO NOT EDIT!") ) ;
2723 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") ); 2738 addresseeLSync.setGivenName(i18n("!DO NOT EDIT!") );
2724 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ; 2739 addresseeRSync.setOrganization( "!"+mLastAddressbookSync.toString() ) ;
2725 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() ); 2740 addresseeLSync.setOrganization("!"+ mLastAddressbookSync.toString() );
2726 addresseeRSync.setNote( "" ) ; 2741 addresseeRSync.setNote( "" ) ;
2727 addresseeLSync.setNote( "" ); 2742 addresseeLSync.setNote( "" );
2728 2743
2729 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 2744 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
2730 remote->insertAddressee( addresseeRSync, false ); 2745 remote->insertAddressee( addresseeRSync, false );
2731 local->insertAddressee( addresseeLSync, false ); 2746 local->insertAddressee( addresseeLSync, false );
2732 QString mes; 2747 QString mes;
2733 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR ); 2748 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedAddressee, addedAddresseeR, changedLocal, changedRemote, deletedAddresseeL, deletedAddresseeR );
2734 if ( syncManager->mShowSyncSummary ) { 2749 if ( syncManager->mShowSyncSummary ) {
2735 KMessageBox::information(this, mes, i18n("KA/Pi Synchronization") ); 2750 KMessageBox::information(this, mes, i18n("KA/Pi Synchronization") );
2736 } 2751 }
2737 qDebug( mes ); 2752 qDebug( mes );
2738 return syncOK; 2753 return syncOK;
2739} 2754}
2740 2755
2741 2756
2742//this is a overwritten callbackmethods from the syncinterface 2757//this is a overwritten callbackmethods from the syncinterface
2743bool KABCore::sync(KSyncManager* manager, QString filename, int mode) 2758bool KABCore::sync(KSyncManager* manager, QString filename, int mode)
2744{ 2759{
2745 2760
2746 //pending prepare addresseeview for output 2761 //pending prepare addresseeview for output
2747 //pending detect, if remote file has REV field. if not switch to external sync 2762 //pending detect, if remote file has REV field. if not switch to external sync
2748 mGlobalSyncMode = SYNC_MODE_NORMAL; 2763 mGlobalSyncMode = SYNC_MODE_NORMAL;
2749 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 2764 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
2750 2765
2751 AddressBook abLocal(filename,"syncContact"); 2766 AddressBook abLocal(filename,"syncContact");
2752 bool syncOK = false; 2767 bool syncOK = false;
2753 if ( abLocal.load() ) { 2768 if ( abLocal.load() ) {
2754 qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode ); 2769 qDebug("AB loaded %s,sync mode %d",filename.latin1(), mode );
2755 bool external = false; 2770 bool external = false;
2756 bool isXML = false; 2771 bool isXML = false;
2757 if ( filename.right(4) == ".xml") { 2772 if ( filename.right(4) == ".xml") {
2758 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2773 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2759 isXML = true; 2774 isXML = true;
2760 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice ); 2775 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice );
2761 } else { 2776 } else {
2762 Addressee lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2777 Addressee lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2763 if ( ! lse.isEmpty() ) { 2778 if ( ! lse.isEmpty() ) {
2764 if ( lse.familyName().left(4) == "!E: " ) 2779 if ( lse.familyName().left(4) == "!E: " )
2765 external = true; 2780 external = true;
2766 } else { 2781 } else {
2767 bool found = false; 2782 bool found = false;
2768 AddressBook::Iterator it; 2783 AddressBook::Iterator it;
2769 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2784 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2770 if ( (*it).revision().date().year() > 2003 ) { 2785 if ( (*it).revision().date().year() > 2003 ) {
2771 found = true; 2786 found = true;
2772 break; 2787 break;
2773 } 2788 }
2774 } 2789 }
2775 external = ! found; 2790 external = ! found;
2776 } 2791 }
2777 2792
2778 if ( external ) { 2793 if ( external ) {
2779 qDebug("Setting vcf mode to external "); 2794 qDebug("Setting vcf mode to external ");
2780 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2795 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2781 AddressBook::Iterator it; 2796 AddressBook::Iterator it;
2782 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2797 for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2783 (*it).setID( mCurrentSyncDevice, (*it).uid() ); 2798 (*it).setID( mCurrentSyncDevice, (*it).uid() );
2784 (*it).computeCsum( mCurrentSyncDevice ); 2799 (*it).computeCsum( mCurrentSyncDevice );
2785 } 2800 }
2786 } 2801 }
2787 } 2802 }
2788 //AddressBook::Iterator it; 2803 //AddressBook::Iterator it;
2789 //QStringList vcards; 2804 //QStringList vcards;
2790 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) { 2805 //for ( it = abLocal.begin(); it != abLocal.end(); ++it ) {
2791 // qDebug("Name %s ", (*it).familyName().latin1()); 2806 // qDebug("Name %s ", (*it).familyName().latin1());
2792 //} 2807 //}
2793 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode ); 2808 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, mode );
2794 if ( syncOK ) { 2809 if ( syncOK ) {
2795 if ( syncManager->mWriteBackFile ) 2810 if ( syncManager->mWriteBackFile )
2796 { 2811 {
2797 if ( external ) 2812 if ( external )
2798 abLocal.removeSyncAddressees( !isXML); 2813 abLocal.removeSyncAddressees( !isXML);
2799 qDebug("Saving remote AB "); 2814 qDebug("Saving remote AB ");
2800 abLocal.saveAB(); 2815 abLocal.saveAB();
2801 if ( isXML ) { 2816 if ( isXML ) {
2802 // afterwrite processing 2817 // afterwrite processing
2803 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ); 2818 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice );
2804 } 2819 }
2805 } 2820 }
2806 } 2821 }
2807 setModified(); 2822 setModified();
2808 2823
2809 } 2824 }
2810 if ( syncOK ) 2825 if ( syncOK )
2811 mViewManager->refreshView(); 2826 mViewManager->refreshView();
2812 return syncOK; 2827 return syncOK;
2813#if 0 2828#if 0
2814 2829
2815 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 2830 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
2816 getEventViewerDialog()->setSyncMode( true ); 2831 getEventViewerDialog()->setSyncMode( true );
2817 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 2832 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
2818 getEventViewerDialog()->setSyncMode( false ); 2833 getEventViewerDialog()->setSyncMode( false );
2819 if ( syncOK ) { 2834 if ( syncOK ) {
2820 if ( KOPrefs::instance()->mWriteBackFile ) 2835 if ( KOPrefs::instance()->mWriteBackFile )
2821 { 2836 {
2822 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 2837 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
2823 storage->save(); 2838 storage->save();
2824 } 2839 }
2825 } 2840 }
2826 setModified(); 2841 setModified();
2827 } 2842 }
2828 2843
2829#endif 2844#endif
2830} 2845}
2831 2846
2832 2847
2833//this is a overwritten callbackmethods from the syncinterface 2848//this is a overwritten callbackmethods from the syncinterface
2834bool KABCore::syncExternal(KSyncManager* manager, QString resource) 2849bool KABCore::syncExternal(KSyncManager* manager, QString resource)
2835{ 2850{
2836 QString mCurrentSyncDevice = manager->getCurrentSyncDevice(); 2851 QString mCurrentSyncDevice = manager->getCurrentSyncDevice();
2837 2852
2838 AddressBook abLocal( resource,"syncContact"); 2853 AddressBook abLocal( resource,"syncContact");
2839 bool syncOK = false; 2854 bool syncOK = false;
2840 if ( abLocal.load() ) { 2855 if ( abLocal.load() ) {
2841 qDebug("AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1()); 2856 qDebug("AB sharp loaded ,sync device %s",mCurrentSyncDevice.latin1());
2842 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 2857 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
2843 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice ); 2858 abLocal.preExternSync( mAddressBook ,mCurrentSyncDevice );
2844 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs ); 2859 syncOK = synchronizeAddressbooks( mAddressBook, &abLocal, syncManager->mSyncAlgoPrefs );
2845 if ( syncOK ) { 2860 if ( syncOK ) {
2846 if ( syncManager->mWriteBackFile ) { 2861 if ( syncManager->mWriteBackFile ) {
2847 abLocal.saveAB(); 2862 abLocal.saveAB();
2848 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice ); 2863 abLocal.postExternSync( mAddressBook,mCurrentSyncDevice );
2849 } 2864 }
2850 } 2865 }
2851 setModified(); 2866 setModified();
2852 } 2867 }
2853 if ( syncOK ) 2868 if ( syncOK )
2854 mViewManager->refreshView(); 2869 mViewManager->refreshView();
2855 return syncOK; 2870 return syncOK;
2856 2871
2857} 2872}
2858 2873
2859void KABCore::getFile( bool success ) 2874void KABCore::getFile( bool success )
2860{ 2875{
2861 QTimer::singleShot( 15000, this , SLOT ( setCaptionBack())); 2876 QTimer::singleShot( 15000, this , SLOT ( setCaptionBack()));
2862 if ( ! success ) { 2877 if ( ! success ) {
2863 setCaption( i18n("Error receiving file. Nothing changed!") ); 2878 setCaption( i18n("Error receiving file. Nothing changed!") );
2864 return; 2879 return;
2865 } 2880 }
2866 mAddressBook->importFromFile( sentSyncFile() ); 2881 mAddressBook->importFromFile( sentSyncFile() );
2867 topLevelWidget()->setCaption( i18n("Pi-Sync successful!") ); 2882 topLevelWidget()->setCaption( i18n("Pi-Sync successful!") );
2868 mViewManager->refreshView(); 2883 mViewManager->refreshView();
2869} 2884}
2870void KABCore::syncFileRequest() 2885void KABCore::syncFileRequest()
2871{ 2886{
2872 mAddressBook->export2File( sentSyncFile() ); 2887 mAddressBook->export2File( sentSyncFile() );
2873} 2888}
2874QString KABCore::sentSyncFile() 2889QString KABCore::sentSyncFile()
2875{ 2890{
2876#ifdef _WIN32_ 2891#ifdef _WIN32_
2877 return locateLocal( "tmp", "copysyncab.vcf" ); 2892 return locateLocal( "tmp", "copysyncab.vcf" );
2878#else 2893#else
2879 return QString( "/tmp/copysyncab.vcf" ); 2894 return QString( "/tmp/copysyncab.vcf" );
2880#endif 2895#endif
2881} 2896}
2882 2897
2883void KABCore::setCaptionBack() 2898void KABCore::setCaptionBack()
2884{ 2899{
2885 topLevelWidget()->setCaption( i18n("KAddressbook/Pi") ); 2900 topLevelWidget()->setCaption( i18n("KAddressbook/Pi") );
2886} 2901}