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