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