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