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