summaryrefslogtreecommitdiffabout
path: root/kaddressbook
Unidiff
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp22
-rw-r--r--kaddressbook/kabcore.h1
-rw-r--r--kaddressbook/kaddressbookmain.cpp12
-rw-r--r--kaddressbook/kaddressbookmain.h2
-rw-r--r--kaddressbook/mainembedded.cpp8
5 files changed, 28 insertions, 17 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 9b059d3..3a542ba 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,711 +1,717 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> 3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/*s 24/*s
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include "kabcore.h" 31#include "kabcore.h"
32 32
33#include <stdaddressbook.h> 33#include <stdaddressbook.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kfiledialog.h> 35#include <kfiledialog.h>
36#include <qtimer.h> 36#include <qtimer.h>
37#include <qlabel.h> 37#include <qlabel.h>
38#include <qregexp.h> 38#include <qregexp.h>
39#include <qlineedit.h> 39#include <qlineedit.h>
40#include <qcheckbox.h> 40#include <qcheckbox.h>
41#include <qpushbutton.h> 41#include <qpushbutton.h>
42#include <qprogressbar.h> 42#include <qprogressbar.h>
43#include <libkdepim/phoneaccess.h> 43#include <libkdepim/phoneaccess.h>
44 44
45#ifndef KAB_EMBEDDED 45#ifndef KAB_EMBEDDED
46#include <qclipboard.h> 46#include <qclipboard.h>
47#include <qdir.h> 47#include <qdir.h>
48#include <qfile.h> 48#include <qfile.h>
49#include <qapplicaton.h> 49#include <qapplicaton.h>
50#include <qprogressbar.h> 50#include <qprogressbar.h>
51#include <qlayout.h> 51#include <qlayout.h>
52#include <qregexp.h> 52#include <qregexp.h>
53#include <qvbox.h> 53#include <qvbox.h>
54#include <kabc/addresseelist.h> 54#include <kabc/addresseelist.h>
55#include <kabc/errorhandler.h> 55#include <kabc/errorhandler.h>
56#include <kabc/resource.h> 56#include <kabc/resource.h>
57#include <kabc/vcardconverter.h> 57#include <kabc/vcardconverter.h>
58#include <kapplication.h> 58#include <kapplication.h>
59#include <kactionclasses.h> 59#include <kactionclasses.h>
60#include <kcmultidialog.h> 60#include <kcmultidialog.h>
61#include <kdebug.h> 61#include <kdebug.h>
62#include <kdeversion.h> 62#include <kdeversion.h>
63#include <kkeydialog.h> 63#include <kkeydialog.h>
64#include <kmessagebox.h> 64#include <kmessagebox.h>
65#include <kprinter.h> 65#include <kprinter.h>
66#include <kprotocolinfo.h> 66#include <kprotocolinfo.h>
67#include <kresources/selectdialog.h> 67#include <kresources/selectdialog.h>
68#include <kstandarddirs.h> 68#include <kstandarddirs.h>
69#include <ktempfile.h> 69#include <ktempfile.h>
70#include <kxmlguiclient.h> 70#include <kxmlguiclient.h>
71#include <kaboutdata.h> 71#include <kaboutdata.h>
72#include <libkdepim/categoryselectdialog.h> 72#include <libkdepim/categoryselectdialog.h>
73 73
74#include "addresseeutil.h" 74#include "addresseeutil.h"
75#include "addresseeeditordialog.h" 75#include "addresseeeditordialog.h"
76#include "extensionmanager.h" 76#include "extensionmanager.h"
77#include "kstdaction.h" 77#include "kstdaction.h"
78#include "kaddressbookservice.h" 78#include "kaddressbookservice.h"
79#include "ldapsearchdialog.h" 79#include "ldapsearchdialog.h"
80#include "printing/printingwizard.h" 80#include "printing/printingwizard.h"
81#else // KAB_EMBEDDED 81#else // KAB_EMBEDDED
82 82
83#include <kapplication.h> 83#include <kapplication.h>
84#include "KDGanttMinimizeSplitter.h" 84#include "KDGanttMinimizeSplitter.h"
85#include "kaddressbookmain.h" 85#include "kaddressbookmain.h"
86#include "kactioncollection.h" 86#include "kactioncollection.h"
87#include "addresseedialog.h" 87#include "addresseedialog.h"
88//US 88//US
89#include <addresseeview.h> 89#include <addresseeview.h>
90 90
91#include <qapp.h> 91#include <qapp.h>
92#include <qmenubar.h> 92#include <qmenubar.h>
93//#include <qtoolbar.h> 93//#include <qtoolbar.h>
94#include <qmessagebox.h> 94#include <qmessagebox.h>
95#include <kdebug.h> 95#include <kdebug.h>
96#include <kiconloader.h> // needed for SmallIcon 96#include <kiconloader.h> // needed for SmallIcon
97#include <kresources/kcmkresources.h> 97#include <kresources/kcmkresources.h>
98#include <ktoolbar.h> 98#include <ktoolbar.h>
99 99
100 100
101//#include <qlabel.h> 101//#include <qlabel.h>
102 102
103 103
104#ifndef DESKTOP_VERSION 104#ifndef DESKTOP_VERSION
105#include <qpe/ir.h> 105#include <qpe/ir.h>
106#include <qpe/qpemenubar.h> 106#include <qpe/qpemenubar.h>
107#include <qtopia/qcopenvelope_qws.h> 107#include <qtopia/qcopenvelope_qws.h>
108#else 108#else
109 109
110#include <qmenubar.h> 110#include <qmenubar.h>
111#endif 111#endif
112 112
113#endif // KAB_EMBEDDED 113#endif // KAB_EMBEDDED
114#include "kcmconfigs/kcmkabconfig.h" 114#include "kcmconfigs/kcmkabconfig.h"
115#include "kcmconfigs/kcmkdepimconfig.h" 115#include "kcmconfigs/kcmkdepimconfig.h"
116#include "kpimglobalprefs.h" 116#include "kpimglobalprefs.h"
117#include "externalapphandler.h" 117#include "externalapphandler.h"
118 118
119 119
120#include <kresources/selectdialog.h> 120#include <kresources/selectdialog.h>
121#include <kmessagebox.h> 121#include <kmessagebox.h>
122 122
123#include <picture.h> 123#include <picture.h>
124#include <resource.h> 124#include <resource.h>
125 125
126//US#include <qsplitter.h> 126//US#include <qsplitter.h>
127#include <qmap.h> 127#include <qmap.h>
128#include <qdir.h> 128#include <qdir.h>
129#include <qfile.h> 129#include <qfile.h>
130#include <qvbox.h> 130#include <qvbox.h>
131#include <qlayout.h> 131#include <qlayout.h>
132#include <qclipboard.h> 132#include <qclipboard.h>
133#include <qtextstream.h> 133#include <qtextstream.h>
134 134
135#include <libkdepim/categoryselectdialog.h> 135#include <libkdepim/categoryselectdialog.h>
136#include <kabc/vcardconverter.h> 136#include <kabc/vcardconverter.h>
137 137
138 138
139#include "addresseeutil.h" 139#include "addresseeutil.h"
140#include "undocmds.h" 140#include "undocmds.h"
141#include "addresseeeditordialog.h" 141#include "addresseeeditordialog.h"
142#include "viewmanager.h" 142#include "viewmanager.h"
143#include "details/detailsviewcontainer.h" 143#include "details/detailsviewcontainer.h"
144#include "kabprefs.h" 144#include "kabprefs.h"
145#include "xxportmanager.h" 145#include "xxportmanager.h"
146#include "incsearchwidget.h" 146#include "incsearchwidget.h"
147#include "jumpbuttonbar.h" 147#include "jumpbuttonbar.h"
148#include "extensionmanager.h" 148#include "extensionmanager.h"
149#include "addresseeconfig.h" 149#include "addresseeconfig.h"
150#include <kcmultidialog.h> 150#include <kcmultidialog.h>
151 151
152#ifdef _WIN32_ 152#ifdef _WIN32_
153 153
154#include "kaimportoldialog.h" 154#include "kaimportoldialog.h"
155#else 155#else
156#include <unistd.h> 156#include <unistd.h>
157#endif 157#endif
158// sync includes 158// sync includes
159#include <libkdepim/ksyncprofile.h> 159#include <libkdepim/ksyncprofile.h>
160#include <libkdepim/ksyncprefsdialog.h> 160#include <libkdepim/ksyncprefsdialog.h>
161 161
162class KAex2phonePrefs : public QDialog 162class KAex2phonePrefs : public QDialog
163{ 163{
164 public: 164 public:
165 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) : 165 KAex2phonePrefs( QWidget *parent=0, const char *name=0 ) :
166 QDialog( parent, name, true ) 166 QDialog( parent, name, true )
167 { 167 {
168 setCaption( i18n("Export to phone options") ); 168 setCaption( i18n("Export to phone options") );
169 QVBoxLayout* lay = new QVBoxLayout( this ); 169 QVBoxLayout* lay = new QVBoxLayout( this );
170 lay->setSpacing( 3 ); 170 lay->setSpacing( 3 );
171 lay->setMargin( 3 ); 171 lay->setMargin( 3 );
172 QLabel *lab; 172 QLabel *lab;
173 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) ); 173 lay->addWidget(lab = new QLabel( i18n("Please read Help-Sync Howto\nto know what settings to use."), this ) );
174 lab->setAlignment (AlignHCenter ); 174 lab->setAlignment (AlignHCenter );
175 QHBox* temphb; 175 QHBox* temphb;
176 temphb = new QHBox( this ); 176 temphb = new QHBox( this );
177 new QLabel( i18n("I/O device: "), temphb ); 177 new QLabel( i18n("I/O device: "), temphb );
178 mPhoneDevice = new QLineEdit( temphb); 178 mPhoneDevice = new QLineEdit( temphb);
179 lay->addWidget( temphb ); 179 lay->addWidget( temphb );
180 temphb = new QHBox( this ); 180 temphb = new QHBox( this );
181 new QLabel( i18n("Connection: "), temphb ); 181 new QLabel( i18n("Connection: "), temphb );
182 mPhoneConnection = new QLineEdit( temphb); 182 mPhoneConnection = new QLineEdit( temphb);
183 lay->addWidget( temphb ); 183 lay->addWidget( temphb );
184 temphb = new QHBox( this ); 184 temphb = new QHBox( this );
185 new QLabel( i18n("Model(opt.): "), temphb ); 185 new QLabel( i18n("Model(opt.): "), temphb );
186 mPhoneModel = new QLineEdit( temphb); 186 mPhoneModel = new QLineEdit( temphb);
187 lay->addWidget( temphb ); 187 lay->addWidget( temphb );
188 mWriteToSim= new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this ); 188 mWriteToSim= new QCheckBox( i18n("Write Contacts to SIM card\n(if not, write to phone memory)"), this );
189 lay->addWidget( mWriteToSim ); 189 lay->addWidget( mWriteToSim );
190 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) ); 190 lay->addWidget(lab = new QLabel( i18n("NOTE: This will remove all old\ncontact data on phone!"), this ) );
191 lab->setAlignment (AlignHCenter ); 191 lab->setAlignment (AlignHCenter );
192 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this ); 192 QPushButton * ok = new QPushButton( i18n("Export to mobile phone!"), this );
193 lay->addWidget( ok ); 193 lay->addWidget( ok );
194 QPushButton * cancel = new QPushButton( i18n("Cancel"), this ); 194 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
195 lay->addWidget( cancel ); 195 lay->addWidget( cancel );
196 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) ); 196 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
197 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) ); 197 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
198 resize( 220, 240 ); 198 resize( 220, 240 );
199 199
200 } 200 }
201 201
202public: 202public:
203 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel; 203 QLineEdit* mPhoneConnection, *mPhoneDevice, *mPhoneModel;
204 QCheckBox* mWriteToSim; 204 QCheckBox* mWriteToSim;
205}; 205};
206 206
207bool pasteWithNewUid = true; 207bool pasteWithNewUid = true;
208 208
209#ifdef KAB_EMBEDDED 209#ifdef KAB_EMBEDDED
210KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 210KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
211 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 211 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
212 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 212 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
213 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 213 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
214#else //KAB_EMBEDDED 214#else //KAB_EMBEDDED
215KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 215KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
216 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ), 216 : QWidget( parent, name ), KSyncInterface(), mGUIClient( client ), mViewManager( 0 ),
217 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 217 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
218 mReadWrite( readWrite ), mModified( false ) 218 mReadWrite( readWrite ), mModified( false )
219#endif //KAB_EMBEDDED 219#endif //KAB_EMBEDDED
220{ 220{
221 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu); 221 // syncManager = new KSyncManager((QWidget*)this, (KSyncInterface*)this, KSyncManager::KAPI, KABPrefs::instance(), syncMenu);
222 // syncManager->setBlockSave(false); 222 // syncManager->setBlockSave(false);
223 mExtensionBarSplitter = 0; 223 mExtensionBarSplitter = 0;
224 mIsPart = !parent->inherits( "KAddressBookMain" ); 224 mIsPart = !parent->inherits( "KAddressBookMain" );
225 225
226 mAddressBook = KABC::StdAddressBook::self(); 226 mAddressBook = KABC::StdAddressBook::self();
227 KABC::StdAddressBook::setAutomaticSave( false ); 227 KABC::StdAddressBook::setAutomaticSave( false );
228 228
229#ifndef KAB_EMBEDDED 229#ifndef KAB_EMBEDDED
230 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 230 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
231#endif //KAB_EMBEDDED 231#endif //KAB_EMBEDDED
232 232
233 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 233 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
234 SLOT( addressBookChanged() ) ); 234 SLOT( addressBookChanged() ) );
235 235
236#if 0 236#if 0
237 // LP moved to addressbook init method 237 // LP moved to addressbook init method
238 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 238 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
239 "X-Department", "KADDRESSBOOK" ); 239 "X-Department", "KADDRESSBOOK" );
240 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 240 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
241 "X-Profession", "KADDRESSBOOK" ); 241 "X-Profession", "KADDRESSBOOK" );
242 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 242 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
243 "X-AssistantsName", "KADDRESSBOOK" ); 243 "X-AssistantsName", "KADDRESSBOOK" );
244 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 244 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
245 "X-ManagersName", "KADDRESSBOOK" ); 245 "X-ManagersName", "KADDRESSBOOK" );
246 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 246 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
247 "X-SpousesName", "KADDRESSBOOK" ); 247 "X-SpousesName", "KADDRESSBOOK" );
248 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 248 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
249 "X-Office", "KADDRESSBOOK" ); 249 "X-Office", "KADDRESSBOOK" );
250 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 250 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
251 "X-IMAddress", "KADDRESSBOOK" ); 251 "X-IMAddress", "KADDRESSBOOK" );
252 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 252 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
253 "X-Anniversary", "KADDRESSBOOK" ); 253 "X-Anniversary", "KADDRESSBOOK" );
254 254
255 //US added this field to become compatible with Opie/qtopia addressbook 255 //US added this field to become compatible with Opie/qtopia addressbook
256 // values can be "female" or "male" or "". An empty field represents undefined. 256 // values can be "female" or "male" or "". An empty field represents undefined.
257 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 257 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
258 "X-Gender", "KADDRESSBOOK" ); 258 "X-Gender", "KADDRESSBOOK" );
259 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 259 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
260 "X-Children", "KADDRESSBOOK" ); 260 "X-Children", "KADDRESSBOOK" );
261 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 261 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
262 "X-FreeBusyUrl", "KADDRESSBOOK" ); 262 "X-FreeBusyUrl", "KADDRESSBOOK" );
263#endif 263#endif
264 initGUI(); 264 initGUI();
265 265
266 mIncSearchWidget->setFocus(); 266 mIncSearchWidget->setFocus();
267 267
268 268
269 connect( mViewManager, SIGNAL( selected( const QString& ) ), 269 connect( mViewManager, SIGNAL( selected( const QString& ) ),
270 SLOT( setContactSelected( const QString& ) ) ); 270 SLOT( setContactSelected( const QString& ) ) );
271 connect( mViewManager, SIGNAL( executed( const QString& ) ), 271 connect( mViewManager, SIGNAL( executed( const QString& ) ),
272 SLOT( executeContact( const QString& ) ) ); 272 SLOT( executeContact( const QString& ) ) );
273 273
274 connect( mViewManager, SIGNAL( deleteRequest( ) ), 274 connect( mViewManager, SIGNAL( deleteRequest( ) ),
275 SLOT( deleteContacts( ) ) ); 275 SLOT( deleteContacts( ) ) );
276 connect( mViewManager, SIGNAL( modified() ), 276 connect( mViewManager, SIGNAL( modified() ),
277 SLOT( setModified() ) ); 277 SLOT( setModified() ) );
278 278
279 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 279 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
280 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) ); 280 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
281 281
282 connect( mXXPortManager, SIGNAL( modified() ), 282 connect( mXXPortManager, SIGNAL( modified() ),
283 SLOT( setModified() ) ); 283 SLOT( setModified() ) );
284 284
285 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 285 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
286 SLOT( incrementalSearch( const QString& ) ) ); 286 SLOT( incrementalSearch( const QString& ) ) );
287 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 287 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
288 mJumpButtonBar, SLOT( recreateButtons() ) ); 288 mJumpButtonBar, SLOT( recreateButtons() ) );
289 289
290 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 290 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
291 SLOT( sendMail( const QString& ) ) ); 291 SLOT( sendMail( const QString& ) ) );
292 292
293 293
294 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&))); 294 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&)));
295 connect( ExternalAppHandler::instance(), SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)),this, SLOT(requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&))); 295 connect( ExternalAppHandler::instance(), SIGNAL (requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)),this, SLOT(requestForDetails(const QString&, const QString&, const QString&, const QString&, const QString&)));
296 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&))); 296 connect( ExternalAppHandler::instance(), SIGNAL (requestForBirthdayList(const QString&, const QString&)),this, SLOT(requestForBirthdayList(const QString&, const QString&)));
297 297
298 298
299#ifndef KAB_EMBEDDED 299#ifndef KAB_EMBEDDED
300 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 300 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
301 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 301 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
302 302
303 connect( mDetails, SIGNAL( browse( const QString& ) ), 303 connect( mDetails, SIGNAL( browse( const QString& ) ),
304 SLOT( browse( const QString& ) ) ); 304 SLOT( browse( const QString& ) ) );
305 305
306 306
307 mAddressBookService = new KAddressBookService( this ); 307 mAddressBookService = new KAddressBookService( this );
308 308
309#endif //KAB_EMBEDDED 309#endif //KAB_EMBEDDED
310 mEditorDialog = 0; 310 mEditorDialog = 0;
311 createAddresseeEditorDialog( this ); 311 createAddresseeEditorDialog( this );
312 setModified( false ); 312 setModified( false );
313} 313}
314 314
315KABCore::~KABCore() 315KABCore::~KABCore()
316{ 316{
317 // save(); 317 // save();
318 //saveSettings(); 318 //saveSettings();
319 //KABPrefs::instance()->writeConfig(); 319 //KABPrefs::instance()->writeConfig();
320 delete AddresseeConfig::instance(); 320 delete AddresseeConfig::instance();
321 mAddressBook = 0; 321 mAddressBook = 0;
322 KABC::StdAddressBook::close(); 322 KABC::StdAddressBook::close();
323 323
324 delete syncManager; 324 delete syncManager;
325 325
326} 326}
327 327
328void KABCore::recieve( QString fn )
329{
330 qDebug("KABCore::recieve ");
331 mAddressBook->importFromFile( fn, true );
332 topLevelWidget()->raise();
333}
328void KABCore::restoreSettings() 334void KABCore::restoreSettings()
329{ 335{
330 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce; 336 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce;
331 337
332 bool state; 338 bool state;
333 339
334 if (mMultipleViewsAtOnce) 340 if (mMultipleViewsAtOnce)
335 state = KABPrefs::instance()->mDetailsPageVisible; 341 state = KABPrefs::instance()->mDetailsPageVisible;
336 else 342 else
337 state = false; 343 state = false;
338 344
339 mActionDetails->setChecked( state ); 345 mActionDetails->setChecked( state );
340 setDetailsVisible( state ); 346 setDetailsVisible( state );
341 347
342 state = KABPrefs::instance()->mJumpButtonBarVisible; 348 state = KABPrefs::instance()->mJumpButtonBarVisible;
343 349
344 mActionJumpBar->setChecked( state ); 350 mActionJumpBar->setChecked( state );
345 setJumpButtonBarVisible( state ); 351 setJumpButtonBarVisible( state );
346/*US 352/*US
347 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 353 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
348 if ( splitterSize.count() == 0 ) { 354 if ( splitterSize.count() == 0 ) {
349 splitterSize.append( width() / 2 ); 355 splitterSize.append( width() / 2 );
350 splitterSize.append( width() / 2 ); 356 splitterSize.append( width() / 2 );
351 } 357 }
352 mMiniSplitter->setSizes( splitterSize ); 358 mMiniSplitter->setSizes( splitterSize );
353 if ( mExtensionBarSplitter ) { 359 if ( mExtensionBarSplitter ) {
354 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 360 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
355 if ( splitterSize.count() == 0 ) { 361 if ( splitterSize.count() == 0 ) {
356 splitterSize.append( width() / 2 ); 362 splitterSize.append( width() / 2 );
357 splitterSize.append( width() / 2 ); 363 splitterSize.append( width() / 2 );
358 } 364 }
359 mExtensionBarSplitter->setSizes( splitterSize ); 365 mExtensionBarSplitter->setSizes( splitterSize );
360 366
361 } 367 }
362*/ 368*/
363 mViewManager->restoreSettings(); 369 mViewManager->restoreSettings();
364 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 370 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
365 mExtensionManager->restoreSettings(); 371 mExtensionManager->restoreSettings();
366#ifdef DESKTOP_VERSION 372#ifdef DESKTOP_VERSION
367 int wid = width(); 373 int wid = width();
368 if ( wid < 10 ) 374 if ( wid < 10 )
369 wid = 400; 375 wid = 400;
370#else 376#else
371 int wid = QApplication::desktop()->width(); 377 int wid = QApplication::desktop()->width();
372 if ( wid < 640 ) 378 if ( wid < 640 )
373 wid = QApplication::desktop()->height(); 379 wid = QApplication::desktop()->height();
374#endif 380#endif
375 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter; 381 QValueList<int> splitterSize;// = KABPrefs::instance()->mDetailsSplitter;
376 if ( true /*splitterSize.count() == 0*/ ) { 382 if ( true /*splitterSize.count() == 0*/ ) {
377 splitterSize.append( wid / 2 ); 383 splitterSize.append( wid / 2 );
378 splitterSize.append( wid / 2 ); 384 splitterSize.append( wid / 2 );
379 } 385 }
380 mMiniSplitter->setSizes( splitterSize ); 386 mMiniSplitter->setSizes( splitterSize );
381 if ( mExtensionBarSplitter ) { 387 if ( mExtensionBarSplitter ) {
382 //splitterSize = KABPrefs::instance()->mExtensionsSplitter; 388 //splitterSize = KABPrefs::instance()->mExtensionsSplitter;
383 if ( true /*splitterSize.count() == 0*/ ) { 389 if ( true /*splitterSize.count() == 0*/ ) {
384 splitterSize.append( wid / 2 ); 390 splitterSize.append( wid / 2 );
385 splitterSize.append( wid / 2 ); 391 splitterSize.append( wid / 2 );
386 } 392 }
387 mExtensionBarSplitter->setSizes( splitterSize ); 393 mExtensionBarSplitter->setSizes( splitterSize );
388 394
389 } 395 }
390 396
391 397
392} 398}
393 399
394void KABCore::saveSettings() 400void KABCore::saveSettings()
395{ 401{
396 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 402 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
397 if ( mExtensionBarSplitter ) 403 if ( mExtensionBarSplitter )
398 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 404 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
399 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 405 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
400 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 406 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
401#ifndef KAB_EMBEDDED 407#ifndef KAB_EMBEDDED
402 408
403 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 409 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
404 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 410 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
405#endif //KAB_EMBEDDED 411#endif //KAB_EMBEDDED
406 mExtensionManager->saveSettings(); 412 mExtensionManager->saveSettings();
407 mViewManager->saveSettings(); 413 mViewManager->saveSettings();
408 414
409 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 415 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
410} 416}
411 417
412KABC::AddressBook *KABCore::addressBook() const 418KABC::AddressBook *KABCore::addressBook() const
413{ 419{
414 return mAddressBook; 420 return mAddressBook;
415} 421}
416 422
417KConfig *KABCore::config() 423KConfig *KABCore::config()
418{ 424{
419#ifndef KAB_EMBEDDED 425#ifndef KAB_EMBEDDED
420 return KABPrefs::instance()->config(); 426 return KABPrefs::instance()->config();
421#else //KAB_EMBEDDED 427#else //KAB_EMBEDDED
422 return KABPrefs::instance()->getConfig(); 428 return KABPrefs::instance()->getConfig();
423#endif //KAB_EMBEDDED 429#endif //KAB_EMBEDDED
424} 430}
425 431
426KActionCollection *KABCore::actionCollection() const 432KActionCollection *KABCore::actionCollection() const
427{ 433{
428 return mGUIClient->actionCollection(); 434 return mGUIClient->actionCollection();
429} 435}
430 436
431KABC::Field *KABCore::currentSearchField() const 437KABC::Field *KABCore::currentSearchField() const
432{ 438{
433 if (mIncSearchWidget) 439 if (mIncSearchWidget)
434 return mIncSearchWidget->currentField(); 440 return mIncSearchWidget->currentField();
435 else 441 else
436 return 0; 442 return 0;
437} 443}
438 444
439QStringList KABCore::selectedUIDs() const 445QStringList KABCore::selectedUIDs() const
440{ 446{
441 return mViewManager->selectedUids(); 447 return mViewManager->selectedUids();
442} 448}
443 449
444KABC::Resource *KABCore::requestResource( QWidget *parent ) 450KABC::Resource *KABCore::requestResource( QWidget *parent )
445{ 451{
446 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 452 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
447 453
448 QPtrList<KRES::Resource> kresResources; 454 QPtrList<KRES::Resource> kresResources;
449 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 455 QPtrListIterator<KABC::Resource> resIt( kabcResources );
450 KABC::Resource *resource; 456 KABC::Resource *resource;
451 while ( ( resource = resIt.current() ) != 0 ) { 457 while ( ( resource = resIt.current() ) != 0 ) {
452 ++resIt; 458 ++resIt;
453 if ( !resource->readOnly() ) { 459 if ( !resource->readOnly() ) {
454 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 460 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
455 if ( res ) 461 if ( res )
456 kresResources.append( res ); 462 kresResources.append( res );
457 } 463 }
458 } 464 }
459 465
460 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 466 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
461 return static_cast<KABC::Resource*>( res ); 467 return static_cast<KABC::Resource*>( res );
462} 468}
463 469
464#ifndef KAB_EMBEDDED 470#ifndef KAB_EMBEDDED
465KAboutData *KABCore::createAboutData() 471KAboutData *KABCore::createAboutData()
466#else //KAB_EMBEDDED 472#else //KAB_EMBEDDED
467void KABCore::createAboutData() 473void KABCore::createAboutData()
468#endif //KAB_EMBEDDED 474#endif //KAB_EMBEDDED
469{ 475{
470#ifndef KAB_EMBEDDED 476#ifndef KAB_EMBEDDED
471 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 477 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
472 "3.1", I18N_NOOP( "The KDE Address Book" ), 478 "3.1", I18N_NOOP( "The KDE Address Book" ),
473 KAboutData::License_GPL_V2, 479 KAboutData::License_GPL_V2,
474 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 480 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
475 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 481 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
476 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 482 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
477 about->addAuthor( "Cornelius Schumacher", 483 about->addAuthor( "Cornelius Schumacher",
478 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 484 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
479 "schumacher@kde.org" ); 485 "schumacher@kde.org" );
480 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 486 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
481 "mpilone@slac.com" ); 487 "mpilone@slac.com" );
482 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 488 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
483 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 489 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
484 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 490 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
485 "michel@klaralvdalens-datakonsult.se" ); 491 "michel@klaralvdalens-datakonsult.se" );
486 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 492 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
487 "hansen@kde.org" ); 493 "hansen@kde.org" );
488 494
489 return about; 495 return about;
490#endif //KAB_EMBEDDED 496#endif //KAB_EMBEDDED
491 497
492 QString version; 498 QString version;
493#include <../version> 499#include <../version>
494 QMessageBox::about( this, "About KAddressbook/Pi", 500 QMessageBox::about( this, "About KAddressbook/Pi",
495 "KAddressbook/Platform-independent\n" 501 "KAddressbook/Platform-independent\n"
496 "(KA/Pi) " +version + " - " + 502 "(KA/Pi) " +version + " - " +
497#ifdef DESKTOP_VERSION 503#ifdef DESKTOP_VERSION
498 "Desktop Edition\n" 504 "Desktop Edition\n"
499#else 505#else
500 "PDA-Edition\n" 506 "PDA-Edition\n"
501 "for: Zaurus 5500 / 7x0 / 8x0\n" 507 "for: Zaurus 5500 / 7x0 / 8x0\n"
502#endif 508#endif
503 509
504 "(c) 2004 Ulf Schenk\n" 510 "(c) 2004 Ulf Schenk\n"
505 "(c) 2004 Lutz Rogowski\n" 511 "(c) 2004 Lutz Rogowski\n"
506 "(c) 1997-2003, The KDE PIM Team\n" 512 "(c) 1997-2003, The KDE PIM Team\n"
507 "Tobias Koenig Current maintainer\ntokoe@kde.org\n" 513 "Tobias Koenig Current maintainer\ntokoe@kde.org\n"
508 "Don Sanders Original author\n" 514 "Don Sanders Original author\n"
509 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n" 515 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n"
510 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n" 516 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n"
511 "Greg Stern DCOP interface\n" 517 "Greg Stern DCOP interface\n"
512 "Mark Westcot Contact pinning\n" 518 "Mark Westcot Contact pinning\n"
513 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 519 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
514 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n" 520 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n"
515#ifdef _WIN32_ 521#ifdef _WIN32_
516 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" 522 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n"
517#endif 523#endif
518 ); 524 );
519} 525}
520 526
521void KABCore::setContactSelected( const QString &uid ) 527void KABCore::setContactSelected( const QString &uid )
522{ 528{
523 KABC::Addressee addr = mAddressBook->findByUid( uid ); 529 KABC::Addressee addr = mAddressBook->findByUid( uid );
524 if ( !mDetails->isHidden() ) 530 if ( !mDetails->isHidden() )
525 mDetails->setAddressee( addr ); 531 mDetails->setAddressee( addr );
526 532
527 if ( !addr.isEmpty() ) { 533 if ( !addr.isEmpty() ) {
528 emit contactSelected( addr.formattedName() ); 534 emit contactSelected( addr.formattedName() );
529 KABC::Picture pic = addr.photo(); 535 KABC::Picture pic = addr.photo();
530 if ( pic.isIntern() ) { 536 if ( pic.isIntern() ) {
531//US emit contactSelected( pic.data() ); 537//US emit contactSelected( pic.data() );
532//US instead use: 538//US instead use:
533 QPixmap px; 539 QPixmap px;
534 if (pic.data().isNull() != true) 540 if (pic.data().isNull() != true)
535 { 541 {
536 px.convertFromImage(pic.data()); 542 px.convertFromImage(pic.data());
537 } 543 }
538 544
539 emit contactSelected( px ); 545 emit contactSelected( px );
540 } 546 }
541 } 547 }
542 548
543 549
544 mExtensionManager->setSelectionChanged(); 550 mExtensionManager->setSelectionChanged();
545 551
546 // update the actions 552 // update the actions
547 bool selected = !uid.isEmpty(); 553 bool selected = !uid.isEmpty();
548 554
549 if ( mReadWrite ) { 555 if ( mReadWrite ) {
550 mActionCut->setEnabled( selected ); 556 mActionCut->setEnabled( selected );
551 mActionPaste->setEnabled( selected ); 557 mActionPaste->setEnabled( selected );
552 } 558 }
553 559
554 mActionCopy->setEnabled( selected ); 560 mActionCopy->setEnabled( selected );
555 mActionDelete->setEnabled( selected ); 561 mActionDelete->setEnabled( selected );
556 mActionEditAddressee->setEnabled( selected ); 562 mActionEditAddressee->setEnabled( selected );
557 mActionMail->setEnabled( selected ); 563 mActionMail->setEnabled( selected );
558 mActionMailVCard->setEnabled( selected ); 564 mActionMailVCard->setEnabled( selected );
559 //if (mActionBeam) 565 //if (mActionBeam)
560 //mActionBeam->setEnabled( selected ); 566 //mActionBeam->setEnabled( selected );
561 567
562 if (mActionBeamVCard) 568 if (mActionBeamVCard)
563 mActionBeamVCard->setEnabled( selected ); 569 mActionBeamVCard->setEnabled( selected );
564 570
565 mActionExport2phone->setEnabled( selected ); 571 mActionExport2phone->setEnabled( selected );
566 mActionWhoAmI->setEnabled( selected ); 572 mActionWhoAmI->setEnabled( selected );
567 mActionCategories->setEnabled( selected ); 573 mActionCategories->setEnabled( selected );
568} 574}
569 575
570void KABCore::sendMail() 576void KABCore::sendMail()
571{ 577{
572 sendMail( mViewManager->selectedEmails().join( ", " ) ); 578 sendMail( mViewManager->selectedEmails().join( ", " ) );
573} 579}
574 580
575void KABCore::sendMail( const QString& emaillist ) 581void KABCore::sendMail( const QString& emaillist )
576{ 582{
577 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " 583 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
578 if (emaillist.contains(",") > 0) 584 if (emaillist.contains(",") > 0)
579 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); 585 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
580 else 586 else
581 ExternalAppHandler::instance()->mailToOneContact( emaillist ); 587 ExternalAppHandler::instance()->mailToOneContact( emaillist );
582} 588}
583 589
584 590
585 591
586void KABCore::mailVCard() 592void KABCore::mailVCard()
587{ 593{
588 QStringList uids = mViewManager->selectedUids(); 594 QStringList uids = mViewManager->selectedUids();
589 if ( !uids.isEmpty() ) 595 if ( !uids.isEmpty() )
590 mailVCard( uids ); 596 mailVCard( uids );
591} 597}
592 598
593void KABCore::mailVCard( const QStringList& uids ) 599void KABCore::mailVCard( const QStringList& uids )
594{ 600{
595 QStringList urls; 601 QStringList urls;
596 602
597// QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 603// QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
598 604
599 QString dirName = "/tmp/" + KApplication::randomString( 8 ); 605 QString dirName = "/tmp/" + KApplication::randomString( 8 );
600 606
601 607
602 608
603 QDir().mkdir( dirName, true ); 609 QDir().mkdir( dirName, true );
604 610
605 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 611 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
606 KABC::Addressee a = mAddressBook->findByUid( *it ); 612 KABC::Addressee a = mAddressBook->findByUid( *it );
607 613
608 if ( a.isEmpty() ) 614 if ( a.isEmpty() )
609 continue; 615 continue;
610 616
611 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 617 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
612 618
613 QString fileName = dirName + "/" + name; 619 QString fileName = dirName + "/" + name;
614 620
615 QFile outFile(fileName); 621 QFile outFile(fileName);
616 622
617 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 623 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
618 KABC::VCardConverter converter; 624 KABC::VCardConverter converter;
619 QString vcard; 625 QString vcard;
620 626
621 converter.addresseeToVCard( a, vcard ); 627 converter.addresseeToVCard( a, vcard );
622 628
623 QTextStream t( &outFile ); // use a text stream 629 QTextStream t( &outFile ); // use a text stream
624 t.setEncoding( QTextStream::UnicodeUTF8 ); 630 t.setEncoding( QTextStream::UnicodeUTF8 );
625 t << vcard; 631 t << vcard;
626 632
627 outFile.close(); 633 outFile.close();
628 634
629 urls.append( fileName ); 635 urls.append( fileName );
630 } 636 }
631 } 637 }
632 638
633 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); 639 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") );
634 640
635 641
636/*US 642/*US
637 kapp->invokeMailer( QString::null, QString::null, QString::null, 643 kapp->invokeMailer( QString::null, QString::null, QString::null,
638 QString::null, // subject 644 QString::null, // subject
639 QString::null, // body 645 QString::null, // body
640 QString::null, 646 QString::null,
641 urls ); // attachments 647 urls ); // attachments
642*/ 648*/
643 649
644} 650}
645 651
646/** 652/**
647 Beams the "WhoAmI contact. 653 Beams the "WhoAmI contact.
648*/ 654*/
649void KABCore::beamMySelf() 655void KABCore::beamMySelf()
650{ 656{
651 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 657 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
652 if (!a.isEmpty()) 658 if (!a.isEmpty())
653 { 659 {
654 QStringList uids; 660 QStringList uids;
655 uids << a.uid(); 661 uids << a.uid();
656 662
657 beamVCard(uids); 663 beamVCard(uids);
658 } else { 664 } else {
659 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 665 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
660 666
661 667
662 } 668 }
663} 669}
664 670
665void KABCore::export2phone() 671void KABCore::export2phone()
666{ 672{
667 673
668 KAex2phonePrefs ex2phone; 674 KAex2phonePrefs ex2phone;
669 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 675 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
670 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 676 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
671 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 677 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
672 678
673 if ( !ex2phone.exec() ) { 679 if ( !ex2phone.exec() ) {
674 return; 680 return;
675 } 681 }
676 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 682 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
677 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 683 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
678 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 684 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
679 685
680 686
681 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 687 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
682 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 688 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
683 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 689 KPimGlobalPrefs::instance()->mEx2PhoneModel );
684 690
685 QStringList uids = mViewManager->selectedUids(); 691 QStringList uids = mViewManager->selectedUids();
686 if ( uids.isEmpty() ) 692 if ( uids.isEmpty() )
687 return; 693 return;
688 694
689#ifdef _WIN32_ 695#ifdef _WIN32_
690 QString fileName = locateLocal("tmp", "tempfile.vcf"); 696 QString fileName = locateLocal("tmp", "tempfile.vcf");
691#else 697#else
692 QString fileName = "/tmp/kdepimtemp.vcf"; 698 QString fileName = "/tmp/kdepimtemp.vcf";
693#endif 699#endif
694 700
695 KABC::VCardConverter converter; 701 KABC::VCardConverter converter;
696 QString description; 702 QString description;
697 QString datastream; 703 QString datastream;
698 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 704 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
699 KABC::Addressee a = mAddressBook->findByUid( *it ); 705 KABC::Addressee a = mAddressBook->findByUid( *it );
700 706
701 if ( a.isEmpty() ) 707 if ( a.isEmpty() )
702 continue; 708 continue;
703 a.simplifyEmails(); 709 a.simplifyEmails();
704 a.simplifyPhoneNumbers(); 710 a.simplifyPhoneNumbers();
705 a.simplifyPhoneNumberTypes(); 711 a.simplifyPhoneNumberTypes();
706 a.simplifyAddresses(); 712 a.simplifyAddresses();
707 713
708 if (description.isEmpty()) 714 if (description.isEmpty())
709 description = a.formattedName(); 715 description = a.formattedName();
710 QString vcard; 716 QString vcard;
711 QString vcardnew; 717 QString vcardnew;
@@ -1705,782 +1711,770 @@ void KABCore::initGUI()
1705 syncManager->setDefaultFileName( sentSyncFile()); 1711 syncManager->setDefaultFileName( sentSyncFile());
1706 //connect(syncManager , SIGNAL( ), this, SLOT( ) ); 1712 //connect(syncManager , SIGNAL( ), this, SLOT( ) );
1707 1713
1708#endif //KAB_EMBEDDED 1714#endif //KAB_EMBEDDED
1709 initActions(); 1715 initActions();
1710 1716
1711#ifdef KAB_EMBEDDED 1717#ifdef KAB_EMBEDDED
1712 addActionsManually(); 1718 addActionsManually();
1713 //US make sure the export and import menues are initialized before creating the xxPortManager. 1719 //US make sure the export and import menues are initialized before creating the xxPortManager.
1714 mXXPortManager = new XXPortManager( this, this ); 1720 mXXPortManager = new XXPortManager( this, this );
1715 1721
1716 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1722 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1717 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1723 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1718 // mActionQuit->plug ( mMainWindow->toolBar()); 1724 // mActionQuit->plug ( mMainWindow->toolBar());
1719 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1725 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1720 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1726 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1721 // mIncSearchWidget->hide(); 1727 // mIncSearchWidget->hide();
1722 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1728 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1723 SLOT( incrementalSearch( const QString& ) ) ); 1729 SLOT( incrementalSearch( const QString& ) ) );
1724 1730
1725 1731
1726 mJumpButtonBar = new JumpButtonBar( this, this ); 1732 mJumpButtonBar = new JumpButtonBar( this, this );
1727 1733
1728 topLayout->addWidget( mJumpButtonBar ); 1734 topLayout->addWidget( mJumpButtonBar );
1729//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1735//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1730 1736
1731// mMainWindow->getIconToolBar()->raise(); 1737// mMainWindow->getIconToolBar()->raise();
1732 1738
1733#endif //KAB_EMBEDDED 1739#endif //KAB_EMBEDDED
1734 1740
1735} 1741}
1736void KABCore::initActions() 1742void KABCore::initActions()
1737{ 1743{
1738//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1744//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1739 1745
1740#ifndef KAB_EMBEDDED 1746#ifndef KAB_EMBEDDED
1741 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1747 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1742 SLOT( clipboardDataChanged() ) ); 1748 SLOT( clipboardDataChanged() ) );
1743#endif //KAB_EMBEDDED 1749#endif //KAB_EMBEDDED
1744 1750
1745 // file menu 1751 // file menu
1746 if ( mIsPart ) { 1752 if ( mIsPart ) {
1747 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this, 1753 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this,
1748 SLOT( sendMail() ), actionCollection(), 1754 SLOT( sendMail() ), actionCollection(),
1749 "kaddressbook_mail" ); 1755 "kaddressbook_mail" );
1750 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this, 1756 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this,
1751 SLOT( print() ), actionCollection(), "kaddressbook_print" ); 1757 SLOT( print() ), actionCollection(), "kaddressbook_print" );
1752 1758
1753 } else { 1759 } else {
1754 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1760 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1755 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1761 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1756 } 1762 }
1757 1763
1758 1764
1759 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1765 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1760 SLOT( save() ), actionCollection(), "file_sync" ); 1766 SLOT( save() ), actionCollection(), "file_sync" );
1761 1767
1762 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1768 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1763 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1769 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1764 1770
1765 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1771 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1766 this, SLOT( mailVCard() ), 1772 this, SLOT( mailVCard() ),
1767 actionCollection(), "file_mail_vcard"); 1773 actionCollection(), "file_mail_vcard");
1768 1774
1769 mActionExport2phone = new KAction( i18n( "Selected to phone" ), "ex2phone", 0, this, 1775 mActionExport2phone = new KAction( i18n( "Selected to phone" ), "ex2phone", 0, this,
1770 SLOT( export2phone() ), actionCollection(), 1776 SLOT( export2phone() ), actionCollection(),
1771 "kaddressbook_ex2phone" ); 1777 "kaddressbook_ex2phone" );
1772 1778
1773 mActionBeamVCard = 0; 1779 mActionBeamVCard = 0;
1774 mActionBeam = 0; 1780 mActionBeam = 0;
1775 1781
1776#ifndef DESKTOP_VERSION 1782#ifndef DESKTOP_VERSION
1777 if ( Ir::supported() ) { 1783 if ( Ir::supported() ) {
1778 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this, 1784 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this,
1779 SLOT( beamVCard() ), actionCollection(), 1785 SLOT( beamVCard() ), actionCollection(),
1780 "kaddressbook_beam_vcard" ); 1786 "kaddressbook_beam_vcard" );
1781 1787
1782 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1788 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1783 SLOT( beamMySelf() ), actionCollection(), 1789 SLOT( beamMySelf() ), actionCollection(),
1784 "kaddressbook_beam_myself" ); 1790 "kaddressbook_beam_myself" );
1785 } 1791 }
1786#endif 1792#endif
1787 1793
1788 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1794 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1789 this, SLOT( editContact2() ), 1795 this, SLOT( editContact2() ),
1790 actionCollection(), "file_properties" ); 1796 actionCollection(), "file_properties" );
1791 1797
1792#ifdef KAB_EMBEDDED 1798#ifdef KAB_EMBEDDED
1793 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1799 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1794 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1800 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1795 mMainWindow, SLOT( exit() ), 1801 mMainWindow, SLOT( exit() ),
1796 actionCollection(), "quit" ); 1802 actionCollection(), "quit" );
1797#endif //KAB_EMBEDDED 1803#endif //KAB_EMBEDDED
1798 1804
1799 // edit menu 1805 // edit menu
1800 if ( mIsPart ) { 1806 if ( mIsPart ) {
1801 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1807 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1802 SLOT( copyContacts() ), actionCollection(), 1808 SLOT( copyContacts() ), actionCollection(),
1803 "kaddressbook_copy" ); 1809 "kaddressbook_copy" );
1804 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1810 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1805 SLOT( cutContacts() ), actionCollection(), 1811 SLOT( cutContacts() ), actionCollection(),
1806 "kaddressbook_cut" ); 1812 "kaddressbook_cut" );
1807 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1813 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1808 SLOT( pasteContacts() ), actionCollection(), 1814 SLOT( pasteContacts() ), actionCollection(),
1809 "kaddressbook_paste" ); 1815 "kaddressbook_paste" );
1810 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1816 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1811 SLOT( selectAllContacts() ), actionCollection(), 1817 SLOT( selectAllContacts() ), actionCollection(),
1812 "kaddressbook_select_all" ); 1818 "kaddressbook_select_all" );
1813 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1819 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1814 SLOT( undo() ), actionCollection(), 1820 SLOT( undo() ), actionCollection(),
1815 "kaddressbook_undo" ); 1821 "kaddressbook_undo" );
1816 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1822 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1817 this, SLOT( redo() ), actionCollection(), 1823 this, SLOT( redo() ), actionCollection(),
1818 "kaddressbook_redo" ); 1824 "kaddressbook_redo" );
1819 } else { 1825 } else {
1820 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1826 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1821 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1827 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1822 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1828 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1823 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1829 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1824 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1830 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1825 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1831 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1826 } 1832 }
1827 1833
1828 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1834 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1829 Key_Delete, this, SLOT( deleteContacts() ), 1835 Key_Delete, this, SLOT( deleteContacts() ),
1830 actionCollection(), "edit_delete" ); 1836 actionCollection(), "edit_delete" );
1831 1837
1832 mActionUndo->setEnabled( false ); 1838 mActionUndo->setEnabled( false );
1833 mActionRedo->setEnabled( false ); 1839 mActionRedo->setEnabled( false );
1834 1840
1835 // settings menu 1841 // settings menu
1836#ifdef KAB_EMBEDDED 1842#ifdef KAB_EMBEDDED
1837//US special menuentry to configure the addressbook resources. On KDE 1843//US special menuentry to configure the addressbook resources. On KDE
1838// you do that through the control center !!! 1844// you do that through the control center !!!
1839 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1845 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1840 SLOT( configureResources() ), actionCollection(), 1846 SLOT( configureResources() ), actionCollection(),
1841 "kaddressbook_configure_resources" ); 1847 "kaddressbook_configure_resources" );
1842#endif //KAB_EMBEDDED 1848#endif //KAB_EMBEDDED
1843 1849
1844 if ( mIsPart ) { 1850 if ( mIsPart ) {
1845 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1851 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1846 SLOT( openConfigDialog() ), actionCollection(), 1852 SLOT( openConfigDialog() ), actionCollection(),
1847 "kaddressbook_configure" ); 1853 "kaddressbook_configure" );
1848 1854
1849 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1855 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1850 this, SLOT( configureKeyBindings() ), actionCollection(), 1856 this, SLOT( configureKeyBindings() ), actionCollection(),
1851 "kaddressbook_configure_shortcuts" ); 1857 "kaddressbook_configure_shortcuts" );
1852#ifdef KAB_EMBEDDED 1858#ifdef KAB_EMBEDDED
1853 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1859 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1854 mActionConfigureToolbars->setEnabled( false ); 1860 mActionConfigureToolbars->setEnabled( false );
1855#endif //KAB_EMBEDDED 1861#endif //KAB_EMBEDDED
1856 1862
1857 } else { 1863 } else {
1858 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1864 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1859 1865
1860 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1866 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1861 } 1867 }
1862 1868
1863 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1869 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1864 actionCollection(), "options_show_jump_bar" ); 1870 actionCollection(), "options_show_jump_bar" );
1865 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1871 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1866 1872
1867 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 1873 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
1868 actionCollection(), "options_show_details" ); 1874 actionCollection(), "options_show_details" );
1869 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1875 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1870 1876
1871 // misc 1877 // misc
1872 // only enable LDAP lookup if we can handle the protocol 1878 // only enable LDAP lookup if we can handle the protocol
1873#ifndef KAB_EMBEDDED 1879#ifndef KAB_EMBEDDED
1874 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1880 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1875 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1881 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
1876 this, SLOT( openLDAPDialog() ), actionCollection(), 1882 this, SLOT( openLDAPDialog() ), actionCollection(),
1877 "ldap_lookup" ); 1883 "ldap_lookup" );
1878 } 1884 }
1879#else //KAB_EMBEDDED 1885#else //KAB_EMBEDDED
1880 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1886 //qDebug("KABCore::initActions() LDAP has to be implemented");
1881#endif //KAB_EMBEDDED 1887#endif //KAB_EMBEDDED
1882 1888
1883 1889
1884 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1890 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1885 SLOT( setWhoAmI() ), actionCollection(), 1891 SLOT( setWhoAmI() ), actionCollection(),
1886 "set_personal" ); 1892 "set_personal" );
1887 1893
1888 1894
1889 1895
1890 1896
1891 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1897 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
1892 SLOT( setCategories() ), actionCollection(), 1898 SLOT( setCategories() ), actionCollection(),
1893 "edit_set_categories" ); 1899 "edit_set_categories" );
1894 1900
1895 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 1901 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
1896 SLOT( removeVoice() ), actionCollection(), 1902 SLOT( removeVoice() ), actionCollection(),
1897 "remove_voice" ); 1903 "remove_voice" );
1898 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this, 1904 mActionImportOL = new KAction( i18n( "Import from Outlook..." ), 0, this,
1899 SLOT( importFromOL() ), actionCollection(), 1905 SLOT( importFromOL() ), actionCollection(),
1900 "import_OL" ); 1906 "import_OL" );
1901#ifdef KAB_EMBEDDED 1907#ifdef KAB_EMBEDDED
1902 mActionLicence = new KAction( i18n( "Licence" ), 0, 1908 mActionLicence = new KAction( i18n( "Licence" ), 0,
1903 this, SLOT( showLicence() ), actionCollection(), 1909 this, SLOT( showLicence() ), actionCollection(),
1904 "licence_about_data" ); 1910 "licence_about_data" );
1905 mActionFaq = new KAction( i18n( "Faq" ), 0, 1911 mActionFaq = new KAction( i18n( "Faq" ), 0,
1906 this, SLOT( faq() ), actionCollection(), 1912 this, SLOT( faq() ), actionCollection(),
1907 "faq_about_data" ); 1913 "faq_about_data" );
1908 1914
1909 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1915 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1910 this, SLOT( createAboutData() ), actionCollection(), 1916 this, SLOT( createAboutData() ), actionCollection(),
1911 "kaddressbook_about_data" ); 1917 "kaddressbook_about_data" );
1912#endif //KAB_EMBEDDED 1918#endif //KAB_EMBEDDED
1913 1919
1914 clipboardDataChanged(); 1920 clipboardDataChanged();
1915 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1921 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1916 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1922 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1917} 1923}
1918 1924
1919//US we need this function, to plug all actions into the correct menues. 1925//US we need this function, to plug all actions into the correct menues.
1920// KDE uses a XML format to plug the actions, but we work her without this overhead. 1926// KDE uses a XML format to plug the actions, but we work her without this overhead.
1921void KABCore::addActionsManually() 1927void KABCore::addActionsManually()
1922{ 1928{
1923//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1929//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1924 1930
1925#ifdef KAB_EMBEDDED 1931#ifdef KAB_EMBEDDED
1926 QPopupMenu *fileMenu = new QPopupMenu( this ); 1932 QPopupMenu *fileMenu = new QPopupMenu( this );
1927 QPopupMenu *editMenu = new QPopupMenu( this ); 1933 QPopupMenu *editMenu = new QPopupMenu( this );
1928 QPopupMenu *helpMenu = new QPopupMenu( this ); 1934 QPopupMenu *helpMenu = new QPopupMenu( this );
1929 1935
1930 KToolBar* tb = mMainWindow->toolBar(); 1936 KToolBar* tb = mMainWindow->toolBar();
1931 1937
1932#ifdef DESKTOP_VERSION 1938#ifdef DESKTOP_VERSION
1933 QMenuBar* mb = mMainWindow->menuBar(); 1939 QMenuBar* mb = mMainWindow->menuBar();
1934 1940
1935 //US setup menubar. 1941 //US setup menubar.
1936 //Disable the following block if you do not want to have a menubar. 1942 //Disable the following block if you do not want to have a menubar.
1937 mb->insertItem( "&File", fileMenu ); 1943 mb->insertItem( "&File", fileMenu );
1938 mb->insertItem( "&Edit", editMenu ); 1944 mb->insertItem( "&Edit", editMenu );
1939 mb->insertItem( "&View", viewMenu ); 1945 mb->insertItem( "&View", viewMenu );
1940 mb->insertItem( "&Settings", settingsMenu ); 1946 mb->insertItem( "&Settings", settingsMenu );
1941 mb->insertItem( i18n("Synchronize"), syncMenu ); 1947 mb->insertItem( i18n("Synchronize"), syncMenu );
1942 mb->insertItem( "&Change selected", changeMenu ); 1948 mb->insertItem( "&Change selected", changeMenu );
1943 mb->insertItem( "&Help", helpMenu ); 1949 mb->insertItem( "&Help", helpMenu );
1944 mIncSearchWidget = new IncSearchWidget( tb ); 1950 mIncSearchWidget = new IncSearchWidget( tb );
1945 // tb->insertWidget(-1, 0, mIncSearchWidget); 1951 // tb->insertWidget(-1, 0, mIncSearchWidget);
1946 1952
1947#else 1953#else
1948 //US setup toolbar 1954 //US setup toolbar
1949 QPEMenuBar *menuBarTB = new QPEMenuBar( tb ); 1955 QPEMenuBar *menuBarTB = new QPEMenuBar( tb );
1950 QPopupMenu *popupBarTB = new QPopupMenu( this ); 1956 QPopupMenu *popupBarTB = new QPopupMenu( this );
1951 menuBarTB->insertItem( "ME", popupBarTB); 1957 menuBarTB->insertItem( "ME", popupBarTB);
1952 tb->insertWidget(-1, 0, menuBarTB); 1958 tb->insertWidget(-1, 0, menuBarTB);
1953 mIncSearchWidget = new IncSearchWidget( tb ); 1959 mIncSearchWidget = new IncSearchWidget( tb );
1954 1960
1955 tb->enableMoving(false); 1961 tb->enableMoving(false);
1956 popupBarTB->insertItem( "&File", fileMenu ); 1962 popupBarTB->insertItem( "&File", fileMenu );
1957 popupBarTB->insertItem( "&Edit", editMenu ); 1963 popupBarTB->insertItem( "&Edit", editMenu );
1958 popupBarTB->insertItem( "&View", viewMenu ); 1964 popupBarTB->insertItem( "&View", viewMenu );
1959 popupBarTB->insertItem( "&Settings", settingsMenu ); 1965 popupBarTB->insertItem( "&Settings", settingsMenu );
1960 popupBarTB->insertItem( i18n("Synchronize"), syncMenu ); 1966 popupBarTB->insertItem( i18n("Synchronize"), syncMenu );
1961 mViewManager->getFilterAction()->plug ( popupBarTB); 1967 mViewManager->getFilterAction()->plug ( popupBarTB);
1962 popupBarTB->insertItem( "&Change selected", changeMenu ); 1968 popupBarTB->insertItem( "&Change selected", changeMenu );
1963 popupBarTB->insertItem( "&Help", helpMenu ); 1969 popupBarTB->insertItem( "&Help", helpMenu );
1964 if (QApplication::desktop()->width() > 320 ) { 1970 if (QApplication::desktop()->width() > 320 ) {
1965 // mViewManager->getFilterAction()->plug ( tb); 1971 // mViewManager->getFilterAction()->plug ( tb);
1966 } 1972 }
1967#endif 1973#endif
1968 // mActionQuit->plug ( mMainWindow->toolBar()); 1974 // mActionQuit->plug ( mMainWindow->toolBar());
1969 1975
1970 1976
1971 1977
1972 //US Now connect the actions with the menue entries. 1978 //US Now connect the actions with the menue entries.
1973 mActionPrint->plug( fileMenu ); 1979 mActionPrint->plug( fileMenu );
1974 mActionMail->plug( fileMenu ); 1980 mActionMail->plug( fileMenu );
1975 fileMenu->insertSeparator(); 1981 fileMenu->insertSeparator();
1976 1982
1977 mActionNewContact->plug( fileMenu ); 1983 mActionNewContact->plug( fileMenu );
1978 mActionNewContact->plug( tb ); 1984 mActionNewContact->plug( tb );
1979 1985
1980 mActionEditAddressee->plug( fileMenu ); 1986 mActionEditAddressee->plug( fileMenu );
1981 if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 1987 if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
1982 (!KABPrefs::instance()->mMultipleViewsAtOnce )) 1988 (!KABPrefs::instance()->mMultipleViewsAtOnce ))
1983 mActionEditAddressee->plug( tb ); 1989 mActionEditAddressee->plug( tb );
1984 1990
1985 fileMenu->insertSeparator(); 1991 fileMenu->insertSeparator();
1986 mActionSave->plug( fileMenu ); 1992 mActionSave->plug( fileMenu );
1987 fileMenu->insertItem( "&Import", ImportMenu ); 1993 fileMenu->insertItem( "&Import", ImportMenu );
1988 fileMenu->insertItem( "&Export", ExportMenu ); 1994 fileMenu->insertItem( "&Export", ExportMenu );
1989 fileMenu->insertSeparator(); 1995 fileMenu->insertSeparator();
1990 mActionMailVCard->plug( fileMenu ); 1996 mActionMailVCard->plug( fileMenu );
1991#ifndef DESKTOP_VERSION 1997#ifndef DESKTOP_VERSION
1992 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu ); 1998 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu );
1993 if ( Ir::supported() ) mActionBeam->plug(fileMenu ); 1999 if ( Ir::supported() ) mActionBeam->plug(fileMenu );
1994#endif 2000#endif
1995 fileMenu->insertSeparator(); 2001 fileMenu->insertSeparator();
1996 mActionQuit->plug( fileMenu ); 2002 mActionQuit->plug( fileMenu );
1997#ifdef _WIN32_ 2003#ifdef _WIN32_
1998 mActionImportOL->plug( ImportMenu ); 2004 mActionImportOL->plug( ImportMenu );
1999#endif 2005#endif
2000 // edit menu 2006 // edit menu
2001 mActionUndo->plug( editMenu ); 2007 mActionUndo->plug( editMenu );
2002 mActionRedo->plug( editMenu ); 2008 mActionRedo->plug( editMenu );
2003 editMenu->insertSeparator(); 2009 editMenu->insertSeparator();
2004 mActionCut->plug( editMenu ); 2010 mActionCut->plug( editMenu );
2005 mActionCopy->plug( editMenu ); 2011 mActionCopy->plug( editMenu );
2006 mActionPaste->plug( editMenu ); 2012 mActionPaste->plug( editMenu );
2007 mActionDelete->plug( editMenu ); 2013 mActionDelete->plug( editMenu );
2008 editMenu->insertSeparator(); 2014 editMenu->insertSeparator();
2009 mActionSelectAll->plug( editMenu ); 2015 mActionSelectAll->plug( editMenu );
2010 2016
2011 mActionRemoveVoice->plug( changeMenu ); 2017 mActionRemoveVoice->plug( changeMenu );
2012 // settings menu 2018 // settings menu
2013//US special menuentry to configure the addressbook resources. On KDE 2019//US special menuentry to configure the addressbook resources. On KDE
2014// you do that through the control center !!! 2020// you do that through the control center !!!
2015 mActionConfigResources->plug( settingsMenu ); 2021 mActionConfigResources->plug( settingsMenu );
2016 settingsMenu->insertSeparator(); 2022 settingsMenu->insertSeparator();
2017 2023
2018 mActionConfigKAddressbook->plug( settingsMenu ); 2024 mActionConfigKAddressbook->plug( settingsMenu );
2019 2025
2020 if ( mIsPart ) { 2026 if ( mIsPart ) {
2021 mActionConfigShortcuts->plug( settingsMenu ); 2027 mActionConfigShortcuts->plug( settingsMenu );
2022 mActionConfigureToolbars->plug( settingsMenu ); 2028 mActionConfigureToolbars->plug( settingsMenu );
2023 2029
2024 } else { 2030 } else {
2025 mActionKeyBindings->plug( settingsMenu ); 2031 mActionKeyBindings->plug( settingsMenu );
2026 } 2032 }
2027 2033
2028 settingsMenu->insertSeparator(); 2034 settingsMenu->insertSeparator();
2029 2035
2030 mActionJumpBar->plug( settingsMenu ); 2036 mActionJumpBar->plug( settingsMenu );
2031 mActionDetails->plug( settingsMenu ); 2037 mActionDetails->plug( settingsMenu );
2032 if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 2038 if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
2033 mActionDetails->plug( tb ); 2039 mActionDetails->plug( tb );
2034 settingsMenu->insertSeparator(); 2040 settingsMenu->insertSeparator();
2035 2041
2036 mActionWhoAmI->plug( settingsMenu ); 2042 mActionWhoAmI->plug( settingsMenu );
2037 mActionCategories->plug( settingsMenu ); 2043 mActionCategories->plug( settingsMenu );
2038 2044
2039 mActionLicence->plug( helpMenu ); 2045 mActionLicence->plug( helpMenu );
2040 mActionFaq->plug( helpMenu ); 2046 mActionFaq->plug( helpMenu );
2041 mActionAboutKAddressbook->plug( helpMenu ); 2047 mActionAboutKAddressbook->plug( helpMenu );
2042 2048
2043 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 2049 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
2044 2050
2045 mActionSave->plug( tb ); 2051 mActionSave->plug( tb );
2046 mViewManager->getFilterAction()->plug ( tb); 2052 mViewManager->getFilterAction()->plug ( tb);
2047 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) { 2053 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) {
2048 mActionUndo->plug( tb ); 2054 mActionUndo->plug( tb );
2049 mActionDelete->plug( tb ); 2055 mActionDelete->plug( tb );
2050 mActionRedo->plug( tb ); 2056 mActionRedo->plug( tb );
2051 } 2057 }
2052 } 2058 }
2053 //mActionQuit->plug ( tb ); 2059 //mActionQuit->plug ( tb );
2054 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 2060 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
2055 2061
2056 //US link the searchwidget first to this. 2062 //US link the searchwidget first to this.
2057 // The real linkage to the toolbar happens later. 2063 // The real linkage to the toolbar happens later.
2058//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 2064//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
2059//US tb->insertItem( mIncSearchWidget ); 2065//US tb->insertItem( mIncSearchWidget );
2060/*US 2066/*US
2061 mIncSearchWidget = new IncSearchWidget( tb ); 2067 mIncSearchWidget = new IncSearchWidget( tb );
2062 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 2068 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
2063 SLOT( incrementalSearch( const QString& ) ) ); 2069 SLOT( incrementalSearch( const QString& ) ) );
2064 2070
2065 mJumpButtonBar = new JumpButtonBar( this, this ); 2071 mJumpButtonBar = new JumpButtonBar( this, this );
2066 2072
2067//US topLayout->addWidget( mJumpButtonBar ); 2073//US topLayout->addWidget( mJumpButtonBar );
2068 this->layout()->add( mJumpButtonBar ); 2074 this->layout()->add( mJumpButtonBar );
2069*/ 2075*/
2070 2076
2071#endif //KAB_EMBEDDED 2077#endif //KAB_EMBEDDED
2072 2078
2073 mActionExport2phone->plug( ExportMenu ); 2079 mActionExport2phone->plug( ExportMenu );
2074 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) ); 2080 connect ( syncMenu, SIGNAL( activated ( int ) ), syncManager, SLOT (slotSyncMenu( int ) ) );
2075 syncManager->fillSyncMenu(); 2081 syncManager->fillSyncMenu();
2076 2082
2077} 2083}
2078void KABCore::showLicence() 2084void KABCore::showLicence()
2079{ 2085{
2080 KApplication::showLicence(); 2086 KApplication::showLicence();
2081} 2087}
2082void KABCore::removeVoice() 2088void KABCore::removeVoice()
2083{ 2089{
2084 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 ) 2090 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 )
2085 return; 2091 return;
2086 KABC::Addressee::List list = mViewManager->selectedAddressees(); 2092 KABC::Addressee::List list = mViewManager->selectedAddressees();
2087 KABC::Addressee::List::Iterator it; 2093 KABC::Addressee::List::Iterator it;
2088 for ( it = list.begin(); it != list.end(); ++it ) { 2094 for ( it = list.begin(); it != list.end(); ++it ) {
2089 PhoneNumber::List phoneNumbers = (*it).phoneNumbers(); 2095
2090 PhoneNumber::List::Iterator phoneIt; 2096 if ( (*it).removeVoice() )
2091 bool found = false;
2092 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) {
2093 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found
2094 if ((*phoneIt).type() - PhoneNumber::Voice ) {
2095 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice );
2096 (*it).insertPhoneNumber( (*phoneIt) );
2097 found = true;
2098 }
2099 }
2100
2101 }
2102 if ( found )
2103 contactModified((*it) ); 2097 contactModified((*it) );
2104 } 2098 }
2105} 2099}
2106 2100
2107 2101
2108 2102
2109void KABCore::clipboardDataChanged() 2103void KABCore::clipboardDataChanged()
2110{ 2104{
2111 2105
2112 if ( mReadWrite ) 2106 if ( mReadWrite )
2113 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 2107 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
2114 2108
2115} 2109}
2116 2110
2117void KABCore::updateActionMenu() 2111void KABCore::updateActionMenu()
2118{ 2112{
2119 UndoStack *undo = UndoStack::instance(); 2113 UndoStack *undo = UndoStack::instance();
2120 RedoStack *redo = RedoStack::instance(); 2114 RedoStack *redo = RedoStack::instance();
2121 2115
2122 if ( undo->isEmpty() ) 2116 if ( undo->isEmpty() )
2123 mActionUndo->setText( i18n( "Undo" ) ); 2117 mActionUndo->setText( i18n( "Undo" ) );
2124 else 2118 else
2125 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 2119 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
2126 2120
2127 mActionUndo->setEnabled( !undo->isEmpty() ); 2121 mActionUndo->setEnabled( !undo->isEmpty() );
2128 2122
2129 if ( !redo->top() ) 2123 if ( !redo->top() )
2130 mActionRedo->setText( i18n( "Redo" ) ); 2124 mActionRedo->setText( i18n( "Redo" ) );
2131 else 2125 else
2132 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 2126 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
2133 2127
2134 mActionRedo->setEnabled( !redo->isEmpty() ); 2128 mActionRedo->setEnabled( !redo->isEmpty() );
2135} 2129}
2136 2130
2137void KABCore::configureKeyBindings() 2131void KABCore::configureKeyBindings()
2138{ 2132{
2139#ifndef KAB_EMBEDDED 2133#ifndef KAB_EMBEDDED
2140 KKeyDialog::configure( actionCollection(), true ); 2134 KKeyDialog::configure( actionCollection(), true );
2141#else //KAB_EMBEDDED 2135#else //KAB_EMBEDDED
2142 qDebug("KABCore::configureKeyBindings() not implemented"); 2136 qDebug("KABCore::configureKeyBindings() not implemented");
2143#endif //KAB_EMBEDDED 2137#endif //KAB_EMBEDDED
2144} 2138}
2145 2139
2146#ifdef KAB_EMBEDDED 2140#ifdef KAB_EMBEDDED
2147void KABCore::configureResources() 2141void KABCore::configureResources()
2148{ 2142{
2149 KRES::KCMKResources dlg( this, "" , 0 ); 2143 KRES::KCMKResources dlg( this, "" , 0 );
2150 2144
2151 if ( !dlg.exec() ) 2145 if ( !dlg.exec() )
2152 return; 2146 return;
2153 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 2147 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
2154} 2148}
2155#endif //KAB_EMBEDDED 2149#endif //KAB_EMBEDDED
2156 2150
2157 2151
2158/* this method will be called through the QCop interface from Ko/Pi to select addresses 2152/* this method will be called through the QCop interface from Ko/Pi to select addresses
2159 * for the attendees list of an event. 2153 * for the attendees list of an event.
2160 */ 2154 */
2161void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid) 2155void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
2162{ 2156{
2163 QStringList nameList; 2157 QStringList nameList;
2164 QStringList emailList; 2158 QStringList emailList;
2165 QStringList uidList; 2159 QStringList uidList;
2166 2160
2167 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 2161 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
2168 uint i=0; 2162 uint i=0;
2169 for (i=0; i < list.count(); i++) 2163 for (i=0; i < list.count(); i++)
2170 { 2164 {
2171 nameList.append(list[i].realName()); 2165 nameList.append(list[i].realName());
2172 emailList.append(list[i].preferredEmail()); 2166 emailList.append(list[i].preferredEmail());
2173 uidList.append(list[i].uid()); 2167 uidList.append(list[i].uid());
2174 } 2168 }
2175 2169
2176 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 2170 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
2177 2171
2178} 2172}
2179 2173
2180/* this method will be called through the QCop interface from Ko/Pi to select birthdays 2174/* this method will be called through the QCop interface from Ko/Pi to select birthdays
2181 * to put them into the calendar. 2175 * to put them into the calendar.
2182 */ 2176 */
2183void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid) 2177void KABCore::requestForBirthdayList(const QString& sourceChannel, const QString& uid)
2184{ 2178{
2185 // qDebug("KABCore::requestForBirthdayList"); 2179 // qDebug("KABCore::requestForBirthdayList");
2186 QStringList birthdayList; 2180 QStringList birthdayList;
2187 QStringList anniversaryList; 2181 QStringList anniversaryList;
2188 QStringList realNameList; 2182 QStringList realNameList;
2189 QStringList preferredEmailList; 2183 QStringList preferredEmailList;
2190 QStringList assembledNameList; 2184 QStringList assembledNameList;
2191 QStringList uidList; 2185 QStringList uidList;
2192 2186
2193 KABC::AddressBook::Iterator it; 2187 KABC::AddressBook::Iterator it;
2194 2188
2195 int count = 0; 2189 int count = 0;
2196 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 2190 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
2197 ++count; 2191 ++count;
2198 } 2192 }
2199 QProgressBar bar(count,0 ); 2193 QProgressBar bar(count,0 );
2200 int w = 300; 2194 int w = 300;
2201 if ( QApplication::desktop()->width() < 320 ) 2195 if ( QApplication::desktop()->width() < 320 )
2202 w = 220; 2196 w = 220;
2203 int h = bar.sizeHint().height() ; 2197 int h = bar.sizeHint().height() ;
2204 int dw = QApplication::desktop()->width(); 2198 int dw = QApplication::desktop()->width();
2205 int dh = QApplication::desktop()->height(); 2199 int dh = QApplication::desktop()->height();
2206 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2200 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2207 bar.show(); 2201 bar.show();
2208 bar.setCaption (i18n("collecting birthdays - close to abort!") ); 2202 bar.setCaption (i18n("collecting birthdays - close to abort!") );
2209 qApp->processEvents(); 2203 qApp->processEvents();
2210 2204
2211 QDate bday; 2205 QDate bday;
2212 QString anni; 2206 QString anni;
2213 QString formattedbday; 2207 QString formattedbday;
2214 2208
2215 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) 2209 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it )
2216 { 2210 {
2217 if ( ! bar.isVisible() ) 2211 if ( ! bar.isVisible() )
2218 return; 2212 return;
2219 bar.setProgress( count++ ); 2213 bar.setProgress( count++ );
2220 qApp->processEvents(); 2214 qApp->processEvents();
2221 bday = (*it).birthday().date(); 2215 bday = (*it).birthday().date();
2222 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" ); 2216 anni = (*it).custom("KADDRESSBOOK", "X-Anniversary" );
2223 2217
2224 if ( bday.isValid() || !anni.isEmpty()) 2218 if ( bday.isValid() || !anni.isEmpty())
2225 { 2219 {
2226 if (bday.isValid()) 2220 if (bday.isValid())
2227 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate); 2221 formattedbday = KGlobal::locale()->formatDate(bday, true, KLocale::ISODate);
2228 else 2222 else
2229 formattedbday = "NOTVALID"; 2223 formattedbday = "NOTVALID";
2230 if (anni.isEmpty()) 2224 if (anni.isEmpty())
2231 anni = "INVALID"; 2225 anni = "INVALID";
2232 2226
2233 birthdayList.append(formattedbday); 2227 birthdayList.append(formattedbday);
2234 anniversaryList.append(anni); //should be ISODate 2228 anniversaryList.append(anni); //should be ISODate
2235 realNameList.append((*it).realName()); 2229 realNameList.append((*it).realName());
2236 preferredEmailList.append((*it).preferredEmail()); 2230 preferredEmailList.append((*it).preferredEmail());
2237 assembledNameList.append((*it).assembledName()); 2231 assembledNameList.append((*it).assembledName());
2238 uidList.append((*it).uid()); 2232 uidList.append((*it).uid());
2239 2233
2240 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() ); 2234 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() );
2241 } 2235 }
2242 } 2236 }
2243 2237
2244 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList); 2238 bool res = ExternalAppHandler::instance()->returnBirthdayListFromKAPI(sourceChannel, uid, birthdayList, anniversaryList, realNameList, preferredEmailList, assembledNameList, uidList);
2245 2239
2246} 2240}
2247 2241
2248/* this method will be called through the QCop interface from other apps to show details of a contact. 2242/* this method will be called through the QCop interface from other apps to show details of a contact.
2249 */ 2243 */
2250void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 2244void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2251{ 2245{
2252 qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1()); 2246 qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2253 2247
2254 QString foundUid = QString::null; 2248 QString foundUid = QString::null;
2255 if ( ! uid.isEmpty() ) { 2249 if ( ! uid.isEmpty() ) {
2256 Addressee adrr = mAddressBook->findByUid( uid ); 2250 Addressee adrr = mAddressBook->findByUid( uid );
2257 if ( !adrr.isEmpty() ) { 2251 if ( !adrr.isEmpty() ) {
2258 foundUid = uid; 2252 foundUid = uid;
2259 } 2253 }
2260 if ( email == "sendbacklist" ) { 2254 if ( email == "sendbacklist" ) {
2261 //qDebug("ssssssssssssssssssssssend "); 2255 //qDebug("ssssssssssssssssssssssend ");
2262 QStringList nameList; 2256 QStringList nameList;
2263 QStringList emailList; 2257 QStringList emailList;
2264 QStringList uidList; 2258 QStringList uidList;
2265 nameList.append(adrr.realName()); 2259 nameList.append(adrr.realName());
2266 emailList = adrr.emails(); 2260 emailList = adrr.emails();
2267 uidList.append( adrr.preferredEmail()); 2261 uidList.append( adrr.preferredEmail());
2268 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 2262 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
2269 return; 2263 return;
2270 } 2264 }
2271 2265
2272 } 2266 }
2273 2267
2274 if ( email == "sendbacklist" ) 2268 if ( email == "sendbacklist" )
2275 return; 2269 return;
2276 if (foundUid.isEmpty()) 2270 if (foundUid.isEmpty())
2277 { 2271 {
2278 //find the uid of the person first 2272 //find the uid of the person first
2279 Addressee::List namelist; 2273 Addressee::List namelist;
2280 Addressee::List emaillist; 2274 Addressee::List emaillist;
2281 2275
2282 if (!name.isEmpty()) 2276 if (!name.isEmpty())
2283 namelist = mAddressBook->findByName( name ); 2277 namelist = mAddressBook->findByName( name );
2284 2278
2285 if (!email.isEmpty()) 2279 if (!email.isEmpty())
2286 emaillist = mAddressBook->findByEmail( email ); 2280 emaillist = mAddressBook->findByEmail( email );
2287 qDebug("count %d %d ", namelist.count(),emaillist.count() ); 2281 qDebug("count %d %d ", namelist.count(),emaillist.count() );
2288 //check if we have a match in Namelist and Emaillist 2282 //check if we have a match in Namelist and Emaillist
2289 if ((namelist.count() == 0) && (emaillist.count() > 0)) { 2283 if ((namelist.count() == 0) && (emaillist.count() > 0)) {
2290 foundUid = emaillist[0].uid(); 2284 foundUid = emaillist[0].uid();
2291 } 2285 }
2292 else if ((namelist.count() > 0) && (emaillist.count() == 0)) 2286 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2293 foundUid = namelist[0].uid(); 2287 foundUid = namelist[0].uid();
2294 else 2288 else
2295 { 2289 {
2296 for (int i = 0; i < namelist.count(); i++) 2290 for (int i = 0; i < namelist.count(); i++)
2297 { 2291 {
2298 for (int j = 0; j < emaillist.count(); j++) 2292 for (int j = 0; j < emaillist.count(); j++)
2299 { 2293 {
2300 if (namelist[i] == emaillist[j]) 2294 if (namelist[i] == emaillist[j])
2301 { 2295 {
2302 foundUid = namelist[i].uid(); 2296 foundUid = namelist[i].uid();
2303 } 2297 }
2304 } 2298 }
2305 } 2299 }
2306 } 2300 }
2307 } 2301 }
2308 else 2302 else
2309 { 2303 {
2310 foundUid = uid; 2304 foundUid = uid;
2311 } 2305 }
2312 2306
2313 if (!foundUid.isEmpty()) 2307 if (!foundUid.isEmpty())
2314 { 2308 {
2315 2309
2316 // raise Ka/Pi if it is in the background 2310 // raise Ka/Pi if it is in the background
2317#ifndef DESKTOP_VERSION 2311#ifndef DESKTOP_VERSION
2318#ifndef KORG_NODCOP 2312#ifndef KORG_NODCOP
2319 //QCopEnvelope e("QPE/Application/kapi", "raise()"); 2313 //QCopEnvelope e("QPE/Application/kapi", "raise()");
2320#endif 2314#endif
2321#endif 2315#endif
2322 2316
2323 mMainWindow->showMaximized(); 2317 mMainWindow->showMaximized();
2324 mMainWindow-> raise(); 2318 mMainWindow-> raise();
2325 2319
2326 mViewManager->setSelected( "", false); 2320 mViewManager->setSelected( "", false);
2327 mViewManager->refreshView( "" ); 2321 mViewManager->refreshView( "" );
2328 mViewManager->setSelected( foundUid, true ); 2322 mViewManager->setSelected( foundUid, true );
2329 mViewManager->refreshView( foundUid ); 2323 mViewManager->refreshView( foundUid );
2330 2324
2331 if ( !mMultipleViewsAtOnce ) 2325 if ( !mMultipleViewsAtOnce )
2332 { 2326 {
2333 setDetailsVisible( true ); 2327 setDetailsVisible( true );
2334 mActionDetails->setChecked(true); 2328 mActionDetails->setChecked(true);
2335 } 2329 }
2336 } 2330 }
2337} 2331}
2338 2332
2339 2333
2340void KABCore::faq() 2334void KABCore::faq()
2341{ 2335{
2342 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" ); 2336 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" );
2343} 2337}
2344 2338
2345#include <libkcal/syncdefines.h> 2339#include <libkcal/syncdefines.h>
2346 2340
2347KABC::Addressee KABCore::getLastSyncAddressee() 2341KABC::Addressee KABCore::getLastSyncAddressee()
2348{ 2342{
2349 Addressee lse; 2343 Addressee lse;
2350 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2344 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2351 2345
2352 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 2346 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
2353 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2347 lse = mAddressBook->findByUid( "last-syncAddressee-"+mCurrentSyncDevice );
2354 if (lse.isEmpty()) { 2348 if (lse.isEmpty()) {
2355 qDebug("Creating new last-syncAddressee "); 2349 qDebug("Creating new last-syncAddressee ");
2356 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice ); 2350 lse.setUid( "last-syncAddressee-"+mCurrentSyncDevice );
2357 QString sum = ""; 2351 QString sum = "";
2358 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 2352 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
2359 sum = "E: "; 2353 sum = "E: ";
2360 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event")); 2354 lse.setFamilyName("!"+sum+mCurrentSyncDevice + i18n(" - sync event"));
2361 lse.setRevision( mLastAddressbookSync ); 2355 lse.setRevision( mLastAddressbookSync );
2362 lse.setCategories( i18n("SyncEvent") ); 2356 lse.setCategories( i18n("SyncEvent") );
2363 mAddressBook->insertAddressee( lse ); 2357 mAddressBook->insertAddressee( lse );
2364 } 2358 }
2365 return lse; 2359 return lse;
2366} 2360}
2367int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ) 2361int KABCore::takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full )
2368{ 2362{
2369 2363
2370 //void setZaurusId(int id); 2364 //void setZaurusId(int id);
2371 // int zaurusId() const; 2365 // int zaurusId() const;
2372 // void setZaurusUid(int id); 2366 // void setZaurusUid(int id);
2373 // int zaurusUid() const; 2367 // int zaurusUid() const;
2374 // void setZaurusStat(int id); 2368 // void setZaurusStat(int id);
2375 // int zaurusStat() const; 2369 // int zaurusStat() const;
2376 // 0 equal 2370 // 0 equal
2377 // 1 take local 2371 // 1 take local
2378 // 2 take remote 2372 // 2 take remote
2379 // 3 cancel 2373 // 3 cancel
2380 QDateTime lastSync = mLastAddressbookSync; 2374 QDateTime lastSync = mLastAddressbookSync;
2381 QDateTime localMod = local->revision(); 2375 QDateTime localMod = local->revision();
2382 QDateTime remoteMod = remote->revision(); 2376 QDateTime remoteMod = remote->revision();
2383 2377
2384 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice(); 2378 QString mCurrentSyncDevice = syncManager->getCurrentSyncDevice();
2385 2379
2386 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2380 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2387 bool remCh, locCh; 2381 bool remCh, locCh;
2388 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 2382 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
2389 2383
2390 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 2384 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
2391 locCh = ( localMod > mLastAddressbookSync ); 2385 locCh = ( localMod > mLastAddressbookSync );
2392 if ( !remCh && ! locCh ) { 2386 if ( !remCh && ! locCh ) {
2393 //qDebug("both not changed "); 2387 //qDebug("both not changed ");
2394 lastSync = localMod.addDays(1); 2388 lastSync = localMod.addDays(1);
2395 if ( mode <= SYNC_PREF_ASK ) 2389 if ( mode <= SYNC_PREF_ASK )
2396 return 0; 2390 return 0;
2397 } else { 2391 } else {
2398 if ( locCh ) { 2392 if ( locCh ) {
2399 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1()); 2393 //qDebug("loc changed %s %s", localMod.toString().latin1(), mLastAddressbookSync.toString().latin1());
2400 lastSync = localMod.addDays( -1 ); 2394 lastSync = localMod.addDays( -1 );
2401 if ( !remCh ) 2395 if ( !remCh )
2402 remoteMod =( lastSync.addDays( -1 ) ); 2396 remoteMod =( lastSync.addDays( -1 ) );
2403 } else { 2397 } else {
2404 //qDebug(" not loc changed "); 2398 //qDebug(" not loc changed ");
2405 lastSync = localMod.addDays( 1 ); 2399 lastSync = localMod.addDays( 1 );
2406 if ( remCh ) 2400 if ( remCh )
2407 remoteMod =( lastSync.addDays( 1 ) ); 2401 remoteMod =( lastSync.addDays( 1 ) );
2408 2402
2409 } 2403 }
2410 } 2404 }
2411 full = true; 2405 full = true;
2412 if ( mode < SYNC_PREF_ASK ) 2406 if ( mode < SYNC_PREF_ASK )
2413 mode = SYNC_PREF_ASK; 2407 mode = SYNC_PREF_ASK;
2414 } else { 2408 } else {
2415 if ( localMod == remoteMod ) 2409 if ( localMod == remoteMod )
2416 return 0; 2410 return 0;
2417 2411
2418 } 2412 }
2419 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 2413 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
2420 2414
2421 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , localMod, remote->lastModified().toString().latin1(), remoteMod); 2415 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , localMod, remote->lastModified().toString().latin1(), remoteMod);
2422 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() ); 2416 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
2423 //full = true; //debug only 2417 //full = true; //debug only
2424 if ( full ) { 2418 if ( full ) {
2425 bool equ = ( (*local) == (*remote) ); 2419 bool equ = ( (*local) == (*remote) );
2426 if ( equ ) { 2420 if ( equ ) {
2427 //qDebug("equal "); 2421 //qDebug("equal ");
2428 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 2422 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
2429 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 2423 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
2430 } 2424 }
2431 if ( mode < SYNC_PREF_FORCE_LOCAL ) 2425 if ( mode < SYNC_PREF_FORCE_LOCAL )
2432 return 0; 2426 return 0;
2433 2427
2434 }//else //debug only 2428 }//else //debug only
2435 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 2429 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
2436 } 2430 }
2437 int result; 2431 int result;
2438 bool localIsNew; 2432 bool localIsNew;
2439 //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() ); 2433 //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() );
2440 2434
2441 if ( full && mode < SYNC_PREF_NEWEST ) 2435 if ( full && mode < SYNC_PREF_NEWEST )
2442 mode = SYNC_PREF_ASK; 2436 mode = SYNC_PREF_ASK;
2443 2437
2444 switch( mode ) { 2438 switch( mode ) {
2445 case SYNC_PREF_LOCAL: 2439 case SYNC_PREF_LOCAL:
2446 if ( lastSync > remoteMod ) 2440 if ( lastSync > remoteMod )
2447 return 1; 2441 return 1;
2448 if ( lastSync > localMod ) 2442 if ( lastSync > localMod )
2449 return 2; 2443 return 2;
2450 return 1; 2444 return 1;
2451 break; 2445 break;
2452 case SYNC_PREF_REMOTE: 2446 case SYNC_PREF_REMOTE:
2453 if ( lastSync > remoteMod ) 2447 if ( lastSync > remoteMod )
2454 return 1; 2448 return 1;
2455 if ( lastSync > localMod ) 2449 if ( lastSync > localMod )
2456 return 2; 2450 return 2;
2457 return 2; 2451 return 2;
2458 break; 2452 break;
2459 case SYNC_PREF_NEWEST: 2453 case SYNC_PREF_NEWEST:
2460 if ( localMod > remoteMod ) 2454 if ( localMod > remoteMod )
2461 return 1; 2455 return 1;
2462 else 2456 else
2463 return 2; 2457 return 2;
2464 break; 2458 break;
2465 case SYNC_PREF_ASK: 2459 case SYNC_PREF_ASK:
2466 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 2460 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
2467 if ( lastSync > remoteMod ) 2461 if ( lastSync > remoteMod )
2468 return 1; 2462 return 1;
2469 if ( lastSync > localMod ) 2463 if ( lastSync > localMod )
2470 return 2; 2464 return 2;
2471 localIsNew = localMod >= remoteMod; 2465 localIsNew = localMod >= remoteMod;
2472 //qDebug("conflict! ************************************** "); 2466 //qDebug("conflict! ************************************** ");
2473 { 2467 {
2474 KPIM::AddresseeChooser acd ( *local,*remote, localIsNew , this ); 2468 KPIM::AddresseeChooser acd ( *local,*remote, localIsNew , this );
2475 result = acd.executeD(localIsNew); 2469 result = acd.executeD(localIsNew);
2476 return result; 2470 return result;
2477 } 2471 }
2478 break; 2472 break;
2479 case SYNC_PREF_FORCE_LOCAL: 2473 case SYNC_PREF_FORCE_LOCAL:
2480 return 1; 2474 return 1;
2481 break; 2475 break;
2482 case SYNC_PREF_FORCE_REMOTE: 2476 case SYNC_PREF_FORCE_REMOTE:
2483 return 2; 2477 return 2;
2484 break; 2478 break;
2485 2479
2486 default: 2480 default:
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index c628399..43c5f99 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -1,482 +1,483 @@
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 32
33#include <qwidget.h> 33#include <qwidget.h>
34#include <qpopupmenu.h> 34#include <qpopupmenu.h>
35#include <ksyncmanager.h> 35#include <ksyncmanager.h>
36 36
37namespace KABC { 37namespace KABC {
38class AddressBook; 38class AddressBook;
39} 39}
40 40
41#ifndef KAB_EMBEDDED 41#ifndef KAB_EMBEDDED
42class KAboutData; 42class KAboutData;
43class KConfig; 43class KConfig;
44 44
45class KAddressBookService; 45class KAddressBookService;
46class LDAPSearchDialog; 46class LDAPSearchDialog;
47#else //KAB_EMBEDDED 47#else //KAB_EMBEDDED
48class KAddressBookMain; 48class KAddressBookMain;
49//US class QAction; 49//US class QAction;
50#endif //KAB_EMBEDDED 50#endif //KAB_EMBEDDED
51class KCMultiDialog; 51class KCMultiDialog;
52class KXMLGUIClient; 52class KXMLGUIClient;
53class ExtensionManager; 53class ExtensionManager;
54class XXPortManager; 54class XXPortManager;
55class JumpButtonBar; 55class JumpButtonBar;
56class IncSearchWidget; 56class IncSearchWidget;
57class KDGanttMinimizeSplitter; 57class KDGanttMinimizeSplitter;
58class KAction; 58class KAction;
59class KActionCollection; 59class KActionCollection;
60class KToggleAction; 60class KToggleAction;
61class KSyncProfile; 61class KSyncProfile;
62 62
63class QAction; 63class QAction;
64class QMenuBar; 64class QMenuBar;
65class QSplitter; 65class QSplitter;
66class ViewContainer; 66class ViewContainer;
67class ViewManager; 67class ViewManager;
68class AddresseeEditorDialog; 68class AddresseeEditorDialog;
69class Ir; 69class Ir;
70 70
71class KABCore : public QWidget, public KSyncInterface 71class KABCore : public QWidget, public KSyncInterface
72{ 72{
73 Q_OBJECT 73 Q_OBJECT
74 74
75 public: 75 public:
76 KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name = 0 ); 76 KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name = 0 );
77 77
78 78
79 ~KABCore(); 79 ~KABCore();
80 80
81 81
82#ifdef KAB_EMBEDDED 82#ifdef KAB_EMBEDDED
83 //US added functionality 83 //US added functionality
84 QPopupMenu* getViewMenu() {return viewMenu;} 84 QPopupMenu* getViewMenu() {return viewMenu;}
85 QPopupMenu* getFilterMenu() {return filterMenu;} 85 QPopupMenu* getFilterMenu() {return filterMenu;}
86 QPopupMenu* getSettingsMenu() {return settingsMenu;} 86 QPopupMenu* getSettingsMenu() {return settingsMenu;}
87 void addActionsManually(); 87 void addActionsManually();
88#endif //KAB_EMBEDDED 88#endif //KAB_EMBEDDED
89 /** 89 /**
90 Restores the global settings. 90 Restores the global settings.
91 */ 91 */
92 void restoreSettings(); 92 void restoreSettings();
93 93
94 /** 94 /**
95 Saves the global settings. 95 Saves the global settings.
96 */ 96 */
97 void saveSettings(); 97 void saveSettings();
98 98
99 /** 99 /**
100 Returns a pointer to the StdAddressBook of the application. 100 Returns a pointer to the StdAddressBook of the application.
101 */ 101 */
102 KABC::AddressBook *addressBook() const; 102 KABC::AddressBook *addressBook() const;
103 103
104 /** 104 /**
105 Returns a pointer to the KConfig object of the application. 105 Returns a pointer to the KConfig object of the application.
106 */ 106 */
107 static KConfig *config(); 107 static KConfig *config();
108 108
109 /** 109 /**
110 Returns a pointer to the global KActionCollection object. So 110 Returns a pointer to the global KActionCollection object. So
111 other classes can register their actions easily. 111 other classes can register their actions easily.
112 */ 112 */
113 KActionCollection *actionCollection() const; 113 KActionCollection *actionCollection() const;
114 114
115 /** 115 /**
116 Returns the current search field of the Incremental Search Widget. 116 Returns the current search field of the Incremental Search Widget.
117 */ 117 */
118 KABC::Field *currentSearchField() const; 118 KABC::Field *currentSearchField() const;
119 119
120 /** 120 /**
121 Returns the uid list of the currently selected contacts. 121 Returns the uid list of the currently selected contacts.
122 */ 122 */
123 QStringList selectedUIDs() const; 123 QStringList selectedUIDs() const;
124 124
125 /** 125 /**
126 Displays the ResourceSelectDialog and returns the selected 126 Displays the ResourceSelectDialog and returns the selected
127 resource or a null pointer if no resource was selected by 127 resource or a null pointer if no resource was selected by
128 the user. 128 the user.
129 */ 129 */
130 KABC::Resource *requestResource( QWidget *parent ); 130 KABC::Resource *requestResource( QWidget *parent );
131 131
132#ifndef KAB_EMBEDDED 132#ifndef KAB_EMBEDDED
133 static KAboutData *createAboutData(); 133 static KAboutData *createAboutData();
134#endif //KAB_EMBEDDED 134#endif //KAB_EMBEDDED
135 135
136#ifdef KAB_EMBEDDED 136#ifdef KAB_EMBEDDED
137 inline QPopupMenu* getImportMenu() { return ImportMenu;} 137 inline QPopupMenu* getImportMenu() { return ImportMenu;}
138 inline QPopupMenu* getExportMenu() { return ExportMenu;} 138 inline QPopupMenu* getExportMenu() { return ExportMenu;}
139#endif //KAB_EMBEDDED 139#endif //KAB_EMBEDDED
140 140
141 public slots: 141 public slots:
142#ifdef KAB_EMBEDDED 142#ifdef KAB_EMBEDDED
143 void createAboutData(); 143 void createAboutData();
144#endif //KAB_EMBEDDED 144#endif //KAB_EMBEDDED
145 145
146 void statusMessage(QString, int time = 0 ); 146 void statusMessage(QString, int time = 0 );
147 void showLicence(); 147 void showLicence();
148 void faq(); 148 void faq();
149 149
150 /** 150 /**
151 Is called whenever a contact is selected in the view. 151 Is called whenever a contact is selected in the view.
152 */ 152 */
153 void setContactSelected( const QString &uid ); 153 void setContactSelected( const QString &uid );
154 154
155 /** 155 /**
156 Opens the preferred mail composer with all selected contacts as 156 Opens the preferred mail composer with all selected contacts as
157 arguments. 157 arguments.
158 */ 158 */
159 void sendMail(); 159 void sendMail();
160 160
161 /** 161 /**
162 Opens the preferred mail composer with the given contacts as 162 Opens the preferred mail composer with the given contacts as
163 arguments. 163 arguments.
164 */ 164 */
165 void sendMail( const QString& email ); 165 void sendMail( const QString& email );
166 166
167 167
168 void mailVCard(); 168 void mailVCard();
169 void mailVCard(const QStringList& uids); 169 void mailVCard(const QStringList& uids);
170 170
171 /** 171 /**
172 Beams the "WhoAmI contact. 172 Beams the "WhoAmI contact.
173 */ 173 */
174 void beamMySelf(); 174 void beamMySelf();
175 175
176 void beamVCard(); 176 void beamVCard();
177 void export2phone(); 177 void export2phone();
178 void beamVCard(const QStringList& uids); 178 void beamVCard(const QStringList& uids);
179 void beamDone( Ir *ir ); 179 void beamDone( Ir *ir );
180 180
181 181
182 /** 182 /**
183 Starts the preferred web browser with the given URL as argument. 183 Starts the preferred web browser with the given URL as argument.
184 */ 184 */
185 void browse( const QString& url ); 185 void browse( const QString& url );
186 186
187 /** 187 /**
188 Select all contacts in the view. 188 Select all contacts in the view.
189 */ 189 */
190 void selectAllContacts(); 190 void selectAllContacts();
191 191
192 /** 192 /**
193 Deletes all selected contacts from the address book. 193 Deletes all selected contacts from the address book.
194 */ 194 */
195 void deleteContacts(); 195 void deleteContacts();
196 196
197 /** 197 /**
198 Deletes given contacts from the address book. 198 Deletes given contacts from the address book.
199 199
200 @param uids The uids of the contacts, which shall be deleted. 200 @param uids The uids of the contacts, which shall be deleted.
201 */ 201 */
202 void deleteContacts( const QStringList &uids ); 202 void deleteContacts( const QStringList &uids );
203 203
204 /** 204 /**
205 Copys the selected contacts into clipboard for later pasting. 205 Copys the selected contacts into clipboard for later pasting.
206 */ 206 */
207 void copyContacts(); 207 void copyContacts();
208 208
209 /** 209 /**
210 Cuts the selected contacts and stores them for later pasting. 210 Cuts the selected contacts and stores them for later pasting.
211 */ 211 */
212 void cutContacts(); 212 void cutContacts();
213 213
214 /** 214 /**
215 Paste contacts from clipboard into the address book. 215 Paste contacts from clipboard into the address book.
216 */ 216 */
217 void pasteContacts(); 217 void pasteContacts();
218 218
219 /** 219 /**
220 Paste given contacts into the address book. 220 Paste given contacts into the address book.
221 221
222 @param list The list of addressee, which shall be pasted. 222 @param list The list of addressee, which shall be pasted.
223 */ 223 */
224 void pasteContacts( KABC::Addressee::List &list ); 224 void pasteContacts( KABC::Addressee::List &list );
225 225
226 /** 226 /**
227 Sets the whoAmI contact, that is used by many other programs to 227 Sets the whoAmI contact, that is used by many other programs to
228 get personal information about the current user. 228 get personal information about the current user.
229 */ 229 */
230 void setWhoAmI(); 230 void setWhoAmI();
231 231
232 /** 232 /**
233 Displays the category dialog and applies the result to all 233 Displays the category dialog and applies the result to all
234 selected contacts. 234 selected contacts.
235 */ 235 */
236 void setCategories(); 236 void setCategories();
237 237
238 /** 238 /**
239 Sets the field list of the Incremental Search Widget. 239 Sets the field list of the Incremental Search Widget.
240 */ 240 */
241 void setSearchFields( const KABC::Field::List &fields ); 241 void setSearchFields( const KABC::Field::List &fields );
242 242
243 /** 243 /**
244 Search with the current search field for a contact, that matches 244 Search with the current search field for a contact, that matches
245 the given text, and selects it in the view. 245 the given text, and selects it in the view.
246 */ 246 */
247 void incrementalSearch( const QString& text ); 247 void incrementalSearch( const QString& text );
248 248
249 /** 249 /**
250 Marks the address book as modified. 250 Marks the address book as modified.
251 */ 251 */
252 void setModified(); 252 void setModified();
253 /** 253 /**
254 Marks the address book as modified without refreshing the view. 254 Marks the address book as modified without refreshing the view.
255 */ 255 */
256 void setModifiedWOrefresh(); 256 void setModifiedWOrefresh();
257 257
258 /** 258 /**
259 Marks the address book as modified concerning the argument. 259 Marks the address book as modified concerning the argument.
260 */ 260 */
261 void setModified( bool modified ); 261 void setModified( bool modified );
262 262
263 /** 263 /**
264 Returns whether the address book is modified. 264 Returns whether the address book is modified.
265 */ 265 */
266 bool modified() const; 266 bool modified() const;
267 267
268 /** 268 /**
269 Called whenever an contact is modified in the contact editor 269 Called whenever an contact is modified in the contact editor
270 dialog or the quick edit. 270 dialog or the quick edit.
271 */ 271 */
272 void contactModified( const KABC::Addressee &addr ); 272 void contactModified( const KABC::Addressee &addr );
273 273
274 /** 274 /**
275 DCOP METHODS. 275 DCOP METHODS.
276 */ 276 */
277 void addEmail( QString addr ); 277 void addEmail( QString addr );
278 void importVCard( const KURL& url, bool showPreview ); 278 void importVCard( const KURL& url, bool showPreview );
279 void importVCard( const QString& vCard, bool showPreview ); 279 void importVCard( const QString& vCard, bool showPreview );
280 void newContact(); 280 void newContact();
281 QString getNameByPhone( const QString& phone ); 281 QString getNameByPhone( const QString& phone );
282 /** 282 /**
283 END DCOP METHODS 283 END DCOP METHODS
284 */ 284 */
285 285
286 /** 286 /**
287 Saves the contents of the AddressBook back to disk. 287 Saves the contents of the AddressBook back to disk.
288 */ 288 */
289 void save(); 289 void save();
290 290
291 /** 291 /**
292 Undos the last command using the undo stack. 292 Undos the last command using the undo stack.
293 */ 293 */
294 void undo(); 294 void undo();
295 295
296 /** 296 /**
297 Redos the last command that was undone, using the redo stack. 297 Redos the last command that was undone, using the redo stack.
298 */ 298 */
299 void redo(); 299 void redo();
300 300
301 /** 301 /**
302 Shows the edit dialog for the given uid. If the uid is QString::null, 302 Shows the edit dialog for the given uid. If the uid is QString::null,
303 the method will try to find a selected addressee in the view. 303 the method will try to find a selected addressee in the view.
304 */ 304 */
305 void editContact( const QString &uid /*US = QString::null*/ ); 305 void editContact( const QString &uid /*US = QString::null*/ );
306//US added a second method without defaultparameter 306//US added a second method without defaultparameter
307 void editContact2(); 307 void editContact2();
308 308
309 /** 309 /**
310 Shows or edits the detail view for the given uid. If the uid is QString::null, 310 Shows or edits the detail view for the given uid. If the uid is QString::null,
311 the method will try to find a selected addressee in the view. 311 the method will try to find a selected addressee in the view.
312 */ 312 */
313 void executeContact( const QString &uid /*US = QString::null*/ ); 313 void executeContact( const QString &uid /*US = QString::null*/ );
314 314
315 /** 315 /**
316 Launches the configuration dialog. 316 Launches the configuration dialog.
317 */ 317 */
318 void openConfigDialog(); 318 void openConfigDialog();
319 319
320 /** 320 /**
321 Launches the ldap search dialog. 321 Launches the ldap search dialog.
322 */ 322 */
323 void openLDAPDialog(); 323 void openLDAPDialog();
324 324
325 /** 325 /**
326 Creates a KAddressBookPrinter, which will display the print 326 Creates a KAddressBookPrinter, which will display the print
327 dialog and do the printing. 327 dialog and do the printing.
328 */ 328 */
329 void print(); 329 void print();
330 330
331 /** 331 /**
332 Registers a new GUI client, so plugins can register its actions. 332 Registers a new GUI client, so plugins can register its actions.
333 */ 333 */
334 void addGUIClient( KXMLGUIClient *client ); 334 void addGUIClient( KXMLGUIClient *client );
335 335
336 void requestForNameEmailUidList(const QString& sourceChannel, const QString& sessionuid); 336 void requestForNameEmailUidList(const QString& sourceChannel, const QString& sessionuid);
337 void requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid); 337 void requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid);
338 void requestForBirthdayList(const QString& sourceChannel, const QString& sessionuid); 338 void requestForBirthdayList(const QString& sourceChannel, const QString& sessionuid);
339 339
340 340
341 signals: 341 signals:
342 void contactSelected( const QString &name ); 342 void contactSelected( const QString &name );
343 void contactSelected( const QPixmap &pixmap ); 343 void contactSelected( const QPixmap &pixmap );
344 public slots: 344 public slots:
345 void recieve(QString cmsg );
345 void getFile( bool success ); 346 void getFile( bool success );
346 void syncFileRequest(); 347 void syncFileRequest();
347 void setDetailsVisible( bool visible ); 348 void setDetailsVisible( bool visible );
348 void setDetailsToState(); 349 void setDetailsToState();
349 // void slotSyncMenu( int ); 350 // void slotSyncMenu( int );
350 private slots: 351 private slots:
351 void setJumpButtonBarVisible( bool visible ); 352 void setJumpButtonBarVisible( bool visible );
352 void setCaptionBack(); 353 void setCaptionBack();
353 void importFromOL(); 354 void importFromOL();
354 void extensionModified( const KABC::Addressee::List &list ); 355 void extensionModified( const KABC::Addressee::List &list );
355 void extensionChanged( int id ); 356 void extensionChanged( int id );
356 void clipboardDataChanged(); 357 void clipboardDataChanged();
357 void updateActionMenu(); 358 void updateActionMenu();
358 void configureKeyBindings(); 359 void configureKeyBindings();
359 void removeVoice(); 360 void removeVoice();
360#ifdef KAB_EMBEDDED 361#ifdef KAB_EMBEDDED
361 void configureResources(); 362 void configureResources();
362#endif //KAB_EMBEDDED 363#endif //KAB_EMBEDDED
363 364
364 void slotEditorDestroyed( const QString &uid ); 365 void slotEditorDestroyed( const QString &uid );
365 void configurationChanged(); 366 void configurationChanged();
366 void addressBookChanged(); 367 void addressBookChanged();
367 368
368 private: 369 private:
369 void initGUI(); 370 void initGUI();
370 void initActions(); 371 void initActions();
371 372
372 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent, 373 AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent,
373 const char *name = 0 ); 374 const char *name = 0 );
374 375
375 KXMLGUIClient *mGUIClient; 376 KXMLGUIClient *mGUIClient;
376 377
377 KABC::AddressBook *mAddressBook; 378 KABC::AddressBook *mAddressBook;
378 379
379 ViewManager *mViewManager; 380 ViewManager *mViewManager;
380 // QSplitter *mDetailsSplitter; 381 // QSplitter *mDetailsSplitter;
381 KDGanttMinimizeSplitter *mExtensionBarSplitter; 382 KDGanttMinimizeSplitter *mExtensionBarSplitter;
382 ViewContainer *mDetails; 383 ViewContainer *mDetails;
383 KDGanttMinimizeSplitter* mMiniSplitter; 384 KDGanttMinimizeSplitter* mMiniSplitter;
384 XXPortManager *mXXPortManager; 385 XXPortManager *mXXPortManager;
385 JumpButtonBar *mJumpButtonBar; 386 JumpButtonBar *mJumpButtonBar;
386 IncSearchWidget *mIncSearchWidget; 387 IncSearchWidget *mIncSearchWidget;
387 ExtensionManager *mExtensionManager; 388 ExtensionManager *mExtensionManager;
388 389
389 KCMultiDialog *mConfigureDialog; 390 KCMultiDialog *mConfigureDialog;
390 391
391#ifndef KAB_EMBEDDED 392#ifndef KAB_EMBEDDED
392 LDAPSearchDialog *mLdapSearchDialog; 393 LDAPSearchDialog *mLdapSearchDialog;
393#endif //KAB_EMBEDDED 394#endif //KAB_EMBEDDED
394 // QDict<AddresseeEditorDialog> mEditorDict; 395 // QDict<AddresseeEditorDialog> mEditorDict;
395 AddresseeEditorDialog *mEditorDialog; 396 AddresseeEditorDialog *mEditorDialog;
396 bool mReadWrite; 397 bool mReadWrite;
397 bool mModified; 398 bool mModified;
398 bool mIsPart; 399 bool mIsPart;
399 bool mMultipleViewsAtOnce; 400 bool mMultipleViewsAtOnce;
400 401
401 402
402 //US file menu 403 //US file menu
403 KAction *mActionMail; 404 KAction *mActionMail;
404 KAction *mActionBeam; 405 KAction *mActionBeam;
405 KAction *mActionExport2phone; 406 KAction *mActionExport2phone;
406 KAction* mActionPrint; 407 KAction* mActionPrint;
407 KAction* mActionNewContact; 408 KAction* mActionNewContact;
408 KAction *mActionSave; 409 KAction *mActionSave;
409 KAction *mActionEditAddressee; 410 KAction *mActionEditAddressee;
410 KAction *mActionMailVCard; 411 KAction *mActionMailVCard;
411 KAction *mActionBeamVCard; 412 KAction *mActionBeamVCard;
412 413
413 KAction *mActionQuit; 414 KAction *mActionQuit;
414 415
415 //US edit menu 416 //US edit menu
416 KAction *mActionCopy; 417 KAction *mActionCopy;
417 KAction *mActionCut; 418 KAction *mActionCut;
418 KAction *mActionPaste; 419 KAction *mActionPaste;
419 KAction *mActionSelectAll; 420 KAction *mActionSelectAll;
420 KAction *mActionUndo; 421 KAction *mActionUndo;
421 KAction *mActionRedo; 422 KAction *mActionRedo;
422 KAction *mActionDelete; 423 KAction *mActionDelete;
423 424
424 //US settings menu 425 //US settings menu
425 KAction *mActionConfigResources; 426 KAction *mActionConfigResources;
426 KAction *mActionConfigKAddressbook; 427 KAction *mActionConfigKAddressbook;
427 KAction *mActionConfigShortcuts; 428 KAction *mActionConfigShortcuts;
428 KAction *mActionConfigureToolbars; 429 KAction *mActionConfigureToolbars;
429 KAction *mActionKeyBindings; 430 KAction *mActionKeyBindings;
430 KToggleAction *mActionJumpBar; 431 KToggleAction *mActionJumpBar;
431 KToggleAction *mActionDetails; 432 KToggleAction *mActionDetails;
432 KAction *mActionWhoAmI; 433 KAction *mActionWhoAmI;
433 KAction *mActionCategories; 434 KAction *mActionCategories;
434 KAction *mActionAboutKAddressbook; 435 KAction *mActionAboutKAddressbook;
435 KAction *mActionLicence; 436 KAction *mActionLicence;
436 KAction *mActionFaq; 437 KAction *mActionFaq;
437 438
438 KAction *mActionDeleteView; 439 KAction *mActionDeleteView;
439 440
440 QPopupMenu *viewMenu; 441 QPopupMenu *viewMenu;
441 QPopupMenu *filterMenu; 442 QPopupMenu *filterMenu;
442 QPopupMenu *settingsMenu; 443 QPopupMenu *settingsMenu;
443 QPopupMenu *changeMenu; 444 QPopupMenu *changeMenu;
444//US QAction *mActionSave; 445//US QAction *mActionSave;
445 QPopupMenu *ImportMenu; 446 QPopupMenu *ImportMenu;
446 QPopupMenu *ExportMenu; 447 QPopupMenu *ExportMenu;
447 //LR additional methods 448 //LR additional methods
448 KAction *mActionRemoveVoice; 449 KAction *mActionRemoveVoice;
449 KAction * mActionImportOL; 450 KAction * mActionImportOL;
450 451
451#ifndef KAB_EMBEDDED 452#ifndef KAB_EMBEDDED
452 KAddressBookService *mAddressBookService; 453 KAddressBookService *mAddressBookService;
453#endif //KAB_EMBEDDED 454#endif //KAB_EMBEDDED
454 455
455 class KABCorePrivate; 456 class KABCorePrivate;
456 KABCorePrivate *d; 457 KABCorePrivate *d;
457 //US bool mBlockSaveFlag; 458 //US bool mBlockSaveFlag;
458 459
459#ifdef KAB_EMBEDDED 460#ifdef KAB_EMBEDDED
460 KAddressBookMain *mMainWindow; // should be the same like mGUIClient 461 KAddressBookMain *mMainWindow; // should be the same like mGUIClient
461#endif //KAB_EMBEDDED 462#endif //KAB_EMBEDDED
462 463
463 //this are the overwritten callbackmethods from the syncinterface 464 //this are the overwritten callbackmethods from the syncinterface
464 virtual bool sync(KSyncManager* manager, QString filename, int mode); 465 virtual bool sync(KSyncManager* manager, QString filename, int mode);
465 virtual bool syncExternal(KSyncManager* manager, QString resource); 466 virtual bool syncExternal(KSyncManager* manager, QString resource);
466 467
467 468
468 // LR ******************************* 469 // LR *******************************
469 // sync stuff! 470 // sync stuff!
470 QString sentSyncFile(); 471 QString sentSyncFile();
471 QPopupMenu *syncMenu; 472 QPopupMenu *syncMenu;
472 KSyncManager* syncManager; 473 KSyncManager* syncManager;
473 int mGlobalSyncMode; 474 int mGlobalSyncMode;
474 bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode); 475 bool synchronizeAddressbooks( KABC::AddressBook* local, KABC::AddressBook* remote,int mode);
475 KABC::Addressee getLastSyncAddressee(); 476 KABC::Addressee getLastSyncAddressee();
476 QDateTime mLastAddressbookSync; 477 QDateTime mLastAddressbookSync;
477 int takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full ); 478 int takeAddressee( KABC::Addressee* local, KABC::Addressee* remote, int mode , bool full );
478 // ********************* 479 // *********************
479 480
480}; 481};
481 482
482#endif 483#endif
diff --git a/kaddressbook/kaddressbookmain.cpp b/kaddressbook/kaddressbookmain.cpp
index f48f214..8c4ca09 100644
--- a/kaddressbook/kaddressbookmain.cpp
+++ b/kaddressbook/kaddressbookmain.cpp
@@ -1,240 +1,250 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 1999 Don Sanders <dsanders@kde.org> 3 Copyright (c) 1999 Don Sanders <dsanders@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#ifdef KAB_EMBEDDED 24#ifdef KAB_EMBEDDED
25#include "kabprefs.h" 25#include "kabprefs.h"
26#include <kglobal.h> 26#include <kglobal.h>
27#include <qmessagebox.h> 27#include <qmessagebox.h>
28#include <qtoolbar.h> 28#include <qtoolbar.h>
29#include <qapplication.h> 29#include <qapplication.h>
30#else //KAB_EMBEDDED 30#else //KAB_EMBEDDED
31#include <kedittoolbar.h> 31#include <kedittoolbar.h>
32#include <kkeydialog.h> 32#include <kkeydialog.h>
33#include <kmessagebox.h> 33#include <kmessagebox.h>
34#include <kstatusbar.h> 34#include <kstatusbar.h>
35#endif //KAB_EMBEDDED 35#endif //KAB_EMBEDDED
36#include <klocale.h> 36#include <klocale.h>
37 37
38#include "kabcore.h" 38#include "kabcore.h"
39#include "kaddressbookmain.h" 39#include "kaddressbookmain.h"
40#include "kactioncollection.h" 40#include "kactioncollection.h"
41 41
42#ifdef KAB_EMBEDDED 42#ifdef KAB_EMBEDDED
43KAddressBookMain::KAddressBookMain() : KMainWindow( 0, "adrressbook" ) 43KAddressBookMain::KAddressBookMain() : KMainWindow( 0, "adrressbook" )
44#else //KAB_EMBEDDED 44#else //KAB_EMBEDDED
45//MOC_SKIP_BEGIN 45//MOC_SKIP_BEGIN
46KAddressBookMain::KAddressBookMain() : DCOPObject( "KAddressBookIface" ), KMainWindow( 0 ) 46KAddressBookMain::KAddressBookMain() : DCOPObject( "KAddressBookIface" ), KMainWindow( 0 )
47//MOC_SKIP_END 47//MOC_SKIP_END
48#endif //KAB_EMBEDDED 48#endif //KAB_EMBEDDED
49{ 49{
50 50
51 setIcon(SmallIcon( "ka24" ) ); 51 setIcon(SmallIcon( "ka24" ) );
52#if 0 52#if 0
53 //US for embedded systems, create the toolbar before we initiate KABCore. 53 //US for embedded systems, create the toolbar before we initiate KABCore.
54 // KABCore will fill the toolbar with menues and icons 54 // KABCore will fill the toolbar with menues and icons
55 QMainWindow::ToolBarDock tbd; 55 QMainWindow::ToolBarDock tbd;
56 tbd = Top; 56 tbd = Top;
57 iconToolBar = new QToolBar( this ); 57 iconToolBar = new QToolBar( this );
58 addToolBar (iconToolBar , tbd ); 58 addToolBar (iconToolBar , tbd );
59 iconToolBar->setHorizontalStretchable(true); 59 iconToolBar->setHorizontalStretchable(true);
60//US iconToolBar->setWidth(300); 60//US iconToolBar->setWidth(300);
61#endif // 0 61#endif // 0
62 62
63 mCore = new KABCore( this, true, this ); 63 mCore = new KABCore( this, true, this );
64 64
65#ifdef KAB_EMBEDDED 65#ifdef KAB_EMBEDDED
66 setCaption( i18n( "KAddressbook/Pi" ) ); 66 setCaption( i18n( "KAddressbook/Pi" ) );
67#else //KAB_EMBEDDED 67#else //KAB_EMBEDDED
68 setCaption( i18n( "Address Book Browser" ) ); 68 setCaption( i18n( "Address Book Browser" ) );
69#endif //KAB_EMBEDDED 69#endif //KAB_EMBEDDED
70 70
71 //mCore->restoreSettings(); 71 //mCore->restoreSettings();
72 72
73 initActions(); 73 initActions();
74 74
75 setCentralWidget( mCore ); 75 setCentralWidget( mCore );
76 76
77//US statusBar()->show(); 77//US statusBar()->show();
78 78
79#ifndef KAB_EMBEDDED 79#ifndef KAB_EMBEDDED
80 setStandardToolBarMenuEnabled(true); 80 setStandardToolBarMenuEnabled(true);
81 81
82 createGUI( "kaddressbookui.rc", false ); 82 createGUI( "kaddressbookui.rc", false );
83 83
84 84
85#endif //KAB_EMBEDDED 85#endif //KAB_EMBEDDED
86 setAutoSaveSettings(); 86 setAutoSaveSettings();
87 qApp->processEvents(); 87 qApp->processEvents();
88 mCore->restoreSettings(); 88 mCore->restoreSettings();
89} 89}
90 90
91KAddressBookMain::~KAddressBookMain() 91KAddressBookMain::~KAddressBookMain()
92{ 92{
93 // mCore->saveSettings(); 93 // mCore->saveSettings();
94} 94}
95 95void KAddressBookMain::recieve( const QCString& cmsg, const QByteArray& data )
96{
97 qDebug("KA: QCOP message received: %s ", cmsg.data() );
98 if ( cmsg == "setDocument(QString)" ) {
99 QDataStream stream( data, IO_ReadOnly );
100 QString fileName;
101 stream >> fileName;
102 mCore->recieve( fileName );
103 return;
104 }
105}
96void KAddressBookMain::showMinimized () 106void KAddressBookMain::showMinimized ()
97{ 107{
98 QWidget::showMinimized () ; 108 QWidget::showMinimized () ;
99} 109}
100void KAddressBookMain::addEmail( QString addr ) 110void KAddressBookMain::addEmail( QString addr )
101{ 111{
102 mCore->addEmail( addr ); 112 mCore->addEmail( addr );
103} 113}
104 114
105#ifndef KAB_EMBEDDED 115#ifndef KAB_EMBEDDED
106ASYNC KAddressBookMain::showContactEditor( QString uid ) 116ASYNC KAddressBookMain::showContactEditor( QString uid )
107{ 117{
108 mCore->editContact( uid ); 118 mCore->editContact( uid );
109} 119}
110#endif //KAB_EMBEDDED 120#endif //KAB_EMBEDDED
111void KAddressBookMain::newContact() 121void KAddressBookMain::newContact()
112{ 122{
113 mCore->newContact(); 123 mCore->newContact();
114} 124}
115 125
116QString KAddressBookMain::getNameByPhone( QString phone ) 126QString KAddressBookMain::getNameByPhone( QString phone )
117{ 127{
118 return mCore->getNameByPhone( phone ); 128 return mCore->getNameByPhone( phone );
119} 129}
120 130
121void KAddressBookMain::save() 131void KAddressBookMain::save()
122{ 132{
123 mCore->save(); 133 mCore->save();
124} 134}
125 135
126void KAddressBookMain::exit() 136void KAddressBookMain::exit()
127{ 137{
128 close( ); 138 close( );
129} 139}
130 140
131void KAddressBookMain::saveProperties( KConfig* ) 141void KAddressBookMain::saveProperties( KConfig* )
132{ 142{
133} 143}
134 144
135void KAddressBookMain::readProperties( KConfig* ) 145void KAddressBookMain::readProperties( KConfig* )
136{ 146{
137} 147}
138 148
139void KAddressBookMain::initActions() 149void KAddressBookMain::initActions()
140{ 150{
141#ifndef KAB_EMBEDDED 151#ifndef KAB_EMBEDDED
142 KStdAction::quit( this, SLOT( close() ), actionCollection() ); 152 KStdAction::quit( this, SLOT( close() ), actionCollection() );
143 KStdAction::configureToolbars( this, SLOT( configureToolbars() ), actionCollection() ); 153 KStdAction::configureToolbars( this, SLOT( configureToolbars() ), actionCollection() );
144#else //KAB_EMBEDDED 154#else //KAB_EMBEDDED
145 //US: transfered the setup of the actions into KABCore 155 //US: transfered the setup of the actions into KABCore
146#endif //KAB_EMBEDDED 156#endif //KAB_EMBEDDED
147 157
148 158
149} 159}
150 160
151//US new method to setup menues and toolbars on embedded systems 161//US new method to setup menues and toolbars on embedded systems
152#ifdef KAB_EMBEDDED 162#ifdef KAB_EMBEDDED
153/* 163/*
154QToolBar * KAddressBookMain::getIconToolBar() 164QToolBar * KAddressBookMain::getIconToolBar()
155{ 165{
156 return iconToolBar; 166 return iconToolBar;
157} 167}
158*/ 168*/
159 169
160void KAddressBookMain::createGUI() 170void KAddressBookMain::createGUI()
161{ 171{
162 172
163 173
164 174
165} 175}
166#endif //KAB_EMBEDDED 176#endif //KAB_EMBEDDED
167 177
168void KAddressBookMain::configureToolbars() 178void KAddressBookMain::configureToolbars()
169{ 179{
170#ifndef KAB_EMBEDDED 180#ifndef KAB_EMBEDDED
171 saveMainWindowSettings( KGlobal::config(), "MainWindow" ); 181 saveMainWindowSettings( KGlobal::config(), "MainWindow" );
172 182
173 KEditToolbar dlg( factory() ); 183 KEditToolbar dlg( factory() );
174 connect( &dlg, SIGNAL( newToolbarConfig() ), SLOT( slotNewToolbarConfig() ) ); 184 connect( &dlg, SIGNAL( newToolbarConfig() ), SLOT( slotNewToolbarConfig() ) );
175 185
176 dlg.exec(); 186 dlg.exec();
177#else //KAB_EMBEDDED 187#else //KAB_EMBEDDED
178 qDebug("KAddressBookMain::configureToolbars() not implemented by ulf" ); 188 qDebug("KAddressBookMain::configureToolbars() not implemented by ulf" );
179#endif //KAB_EMBEDDED 189#endif //KAB_EMBEDDED
180} 190}
181 191
182void KAddressBookMain::slotNewToolbarConfig() 192void KAddressBookMain::slotNewToolbarConfig()
183{ 193{
184#ifndef KAB_EMBEDDED 194#ifndef KAB_EMBEDDED
185 applyMainWindowSettings( KGlobal::config(), "MainWindow" ); 195 applyMainWindowSettings( KGlobal::config(), "MainWindow" );
186#else //KAB_EMBEDDED 196#else //KAB_EMBEDDED
187 qDebug("KAddressBookMain::slotNewToolbarConfig() not implemented by ulf" ); 197 qDebug("KAddressBookMain::slotNewToolbarConfig() not implemented by ulf" );
188#endif //KAB_EMBEDDED 198#endif //KAB_EMBEDDED
189} 199}
190 200
191void KAddressBookMain::configureKeys() 201void KAddressBookMain::configureKeys()
192{ 202{
193#ifndef KAB_EMBEDDED 203#ifndef KAB_EMBEDDED
194 KKeyDialog::configureKeys( actionCollection(), xmlFile(), true, this ); 204 KKeyDialog::configureKeys( actionCollection(), xmlFile(), true, this );
195#else //KAB_EMBEDDED 205#else //KAB_EMBEDDED
196 qDebug("KAddressBookMain::configureKeys() not implemented by ulf" ); 206 qDebug("KAddressBookMain::configureKeys() not implemented by ulf" );
197#endif //KAB_EMBEDDED 207#endif //KAB_EMBEDDED
198} 208}
199 209
200void KAddressBookMain::closeEvent( QCloseEvent* ce ) 210void KAddressBookMain::closeEvent( QCloseEvent* ce )
201{ 211{
202 bool mModified = mCore->modified(); 212 bool mModified = mCore->modified();
203 bool mAskForQuit = KABPrefs::instance()->mAskForQuit; 213 bool mAskForQuit = KABPrefs::instance()->mAskForQuit;
204 214
205 QString mess = i18n( "Close KA/Pi?"); 215 QString mess = i18n( "Close KA/Pi?");
206 if ( mModified == true ) 216 if ( mModified == true )
207 mess += i18n( "\nChanges will be saved!"); 217 mess += i18n( "\nChanges will be saved!");
208 else 218 else
209 mess += i18n( "\nNo unsaved changes detected!\nNothing will be saved!"); 219 mess += i18n( "\nNo unsaved changes detected!\nNothing will be saved!");
210 220
211 bool mQuit = true; 221 bool mQuit = true;
212 222
213 223
214 if (mAskForQuit) 224 if (mAskForQuit)
215 { 225 {
216 226
217 int res = QMessageBox::information( this, "KA/Pi", mess , i18n("Yes!"), i18n("No"), 0, 0 ); 227 int res = QMessageBox::information( this, "KA/Pi", mess , i18n("Yes!"), i18n("No"), 0, 0 );
218 if (res == 0) 228 if (res == 0)
219 mQuit = true; 229 mQuit = true;
220 else 230 else
221 mQuit = false; 231 mQuit = false;
222 } 232 }
223 233
224 if (mQuit == false) 234 if (mQuit == false)
225 return; 235 return;
226 236
227 if (mModified == true) 237 if (mModified == true)
228 { 238 {
229 save(); 239 save();
230 mCore->saveSettings(); 240 mCore->saveSettings();
231 KABPrefs::instance()->writeConfig(); 241 KABPrefs::instance()->writeConfig();
232 } 242 }
233 243
234 ce->accept(); 244 ce->accept();
235} 245}
236 246
237#ifndef KAB_EMBEDDED 247#ifndef KAB_EMBEDDED
238#include "kaddressbookmain.moc" 248#include "kaddressbookmain.moc"
239#endif //KAB_EMBEDDED 249#endif //KAB_EMBEDDED
240 250
diff --git a/kaddressbook/kaddressbookmain.h b/kaddressbook/kaddressbookmain.h
index cf6f899..40d2bdd 100644
--- a/kaddressbook/kaddressbookmain.h
+++ b/kaddressbook/kaddressbookmain.h
@@ -1,122 +1,122 @@
1/* 1/*
2 This file is part of KAddressbook. 2 This file is part of KAddressbook.
3 Copyright (c) 1999 Don Sanders <dsanders@kde.org> 3 Copyright (c) 1999 Don Sanders <dsanders@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 KADDRESSBOOKMAIN_H 24#ifndef KADDRESSBOOKMAIN_H
25#define KADDRESSBOOKMAIN_H 25#define KADDRESSBOOKMAIN_H
26 26
27#include <qptrlist.h> 27#include <qptrlist.h>
28 28
29#ifdef KAB_EMBEDDED 29#ifdef KAB_EMBEDDED
30class QToolBar; 30class QToolBar;
31#include <qaction.h> 31#include <qaction.h>
32//#include <qmainwindow.h> 32//#include <qmainwindow.h>
33#include <kmainwindow.h> 33#include <kmainwindow.h>
34#else //KAB_EMBEDDED 34#else //KAB_EMBEDDED
35#include <kaction.h> 35#include <kaction.h>
36#include <kapplication.h> 36#include <kapplication.h>
37#include <kmainwindow.h> 37#include <kmainwindow.h>
38#include "kaddressbookiface.h" 38#include "kaddressbookiface.h"
39#endif //KAB_EMBEDDED 39#endif //KAB_EMBEDDED
40 40
41class KABCore; 41class KABCore;
42class KConfig; 42class KConfig;
43 43
44/** 44/**
45 This class serves as the main window for KAddressBook. It handles the 45 This class serves as the main window for KAddressBook. It handles the
46 menus, toolbars, and status bars. 46 menus, toolbars, and status bars.
47 47
48 @short Main window class 48 @short Main window class
49 @author Don Sanders <dsanders@kde.org> 49 @author Don Sanders <dsanders@kde.org>
50 @version 0.1 50 @version 0.1
51 */ 51 */
52#ifdef KAB_EMBEDDED 52#ifdef KAB_EMBEDDED
53class KAddressBookMain : public KMainWindow 53class KAddressBookMain : public KMainWindow
54#else //KAB_EMBEDDED 54#else //KAB_EMBEDDED
55//MOC_SKIP_BEGIN 55//MOC_SKIP_BEGIN
56class KAddressBookMain : public KMainWindow, virtual public KAddressBookIface 56class KAddressBookMain : public KMainWindow, virtual public KAddressBookIface
57//MOC_SKIP_END 57//MOC_SKIP_END
58#endif //KAB_EMBEDDED 58#endif //KAB_EMBEDDED
59{ 59{
60 Q_OBJECT 60 Q_OBJECT
61 61
62 public: 62 public:
63 KAddressBookMain(); 63 KAddressBookMain();
64 virtual ~KAddressBookMain(); 64 virtual ~KAddressBookMain();
65 65
66#ifdef KAB_EMBEDDED 66#ifdef KAB_EMBEDDED
67// QPEToolBar * getIconToolBar(); 67// QPEToolBar * getIconToolBar();
68 // QToolBar * getIconToolBar(); 68 // QToolBar * getIconToolBar();
69#endif //KAB_EMBEDDED 69#endif //KAB_EMBEDDED
70 70
71 71
72 public slots: 72 public slots:
73 void showMinimized () ; 73 void showMinimized () ;
74 virtual void addEmail( QString addr ); 74 virtual void addEmail( QString addr );
75#ifndef KAB_EMBEDDED 75#ifndef KAB_EMBEDDED
76//MOC_SKIP_BEGIN 76//MOC_SKIP_BEGIN
77 virtual ASYNC showContactEditor( QString uid ); 77 virtual ASYNC showContactEditor( QString uid );
78//MOC_SKIP_END 78//MOC_SKIP_END
79#endif //KAB_EMBEDDED 79#endif //KAB_EMBEDDED
80 virtual void newContact(); 80 virtual void newContact();
81 virtual QString getNameByPhone( QString phone ); 81 virtual QString getNameByPhone( QString phone );
82 virtual void save(); 82 virtual void save();
83 virtual void exit(); 83 virtual void exit();
84 84 void recieve( const QCString& cmsg, const QByteArray& data );
85 protected: 85 protected:
86 void initActions(); 86 void initActions();
87#ifdef KAB_EMBEDDED 87#ifdef KAB_EMBEDDED
88 //US new method to setup menues and toolbars on embedded systems 88 //US new method to setup menues and toolbars on embedded systems
89 void createGUI(); 89 void createGUI();
90#endif //KAB_EMBEDDED 90#endif //KAB_EMBEDDED
91 91
92 /** 92 /**
93 This function is called when it is time for the app to save its 93 This function is called when it is time for the app to save its
94 properties for session management purposes. 94 properties for session management purposes.
95 */ 95 */
96 void saveProperties( KConfig* ); 96 void saveProperties( KConfig* );
97 97
98 /** 98 /**
99 This function is called when this app is restored. The KConfig 99 This function is called when this app is restored. The KConfig
100 object points to the session management config file that was saved 100 object points to the session management config file that was saved
101 with @ref saveProperties 101 with @ref saveProperties
102 */ 102 */
103 void readProperties( KConfig* ); 103 void readProperties( KConfig* );
104 104
105 void closeEvent( QCloseEvent* ce ); 105 void closeEvent( QCloseEvent* ce );
106 106
107 protected slots: 107 protected slots:
108 void configureToolbars(); 108 void configureToolbars();
109 void configureKeys(); 109 void configureKeys();
110 110
111 void slotNewToolbarConfig(); 111 void slotNewToolbarConfig();
112 112
113 private: 113 private:
114 KABCore *mCore; 114 KABCore *mCore;
115 115
116#ifdef KAB_EMBEDDED 116#ifdef KAB_EMBEDDED
117 // QToolBar *iconToolBar; 117 // QToolBar *iconToolBar;
118#endif //KAB_EMBEDDED 118#endif //KAB_EMBEDDED
119 119
120}; 120};
121 121
122#endif 122#endif
diff --git a/kaddressbook/mainembedded.cpp b/kaddressbook/mainembedded.cpp
index 965fb06..6dd97b8 100644
--- a/kaddressbook/mainembedded.cpp
+++ b/kaddressbook/mainembedded.cpp
@@ -1,212 +1,218 @@
1#ifndef DESKTOP_VERSION 1#ifndef DESKTOP_VERSION
2#include <qpe/qpeapplication.h> 2#include <qpe/qpeapplication.h>
3#include <qcopchannel_qws.h>
3#include <stdlib.h> 4#include <stdlib.h>
4#else 5#else
5#include <qapplication.h> 6#include <qapplication.h>
6#include <qwindowsstyle.h> 7#include <qwindowsstyle.h>
7#include <qplatinumstyle.h> 8#include <qplatinumstyle.h>
8#include <qmainwindow.h> 9#include <qmainwindow.h>
9#endif 10#endif
10 11
11#include <kstandarddirs.h> 12#include <kstandarddirs.h>
12#include <qregexp.h> 13#include <qregexp.h>
13#include <kglobal.h> 14#include <kglobal.h>
14#include <stdio.h> 15#include <stdio.h>
15#include <qdir.h> 16#include <qdir.h>
16#include "kaddressbookmain.h" 17#include "kaddressbookmain.h"
17#include "externalapphandler.h" 18#include "externalapphandler.h"
18#include <libkdepim/kpimglobalprefs.h> 19#include <libkdepim/kpimglobalprefs.h>
19 20
20int main( int argc, char **argv ) 21int main( int argc, char **argv )
21{ 22{
22#ifndef DESKTOP_VERSION 23#ifndef DESKTOP_VERSION
23 QPEApplication a( argc, argv ); 24 QPEApplication a( argc, argv );
24 a.setKeepRunning (); 25 a.setKeepRunning ();
25#else 26#else
26 QApplication a( argc, argv ); 27 QApplication a( argc, argv );
27 QApplication::setStyle( new QPlatinumStyle ()); 28 QApplication::setStyle( new QPlatinumStyle ());
28 QString hdir = QDir::homeDirPath(); 29 QString hdir = QDir::homeDirPath();
29 // there is a bug when creating dirs for WIN 98 30 // there is a bug when creating dirs for WIN 98
30 // it is difficult to fix, because we have no WIN 98 runnung 31 // it is difficult to fix, because we have no WIN 98 runnung
31 // such that we try it to create the dirs at startup here 32 // such that we try it to create the dirs at startup here
32 if ( hdir == "C:\\" ) { // win 98 or ME 33 if ( hdir == "C:\\" ) { // win 98 or ME
33 QDir app_dir; 34 QDir app_dir;
34 if ( !app_dir.exists("C:\\kdepim") ) 35 if ( !app_dir.exists("C:\\kdepim") )
35 app_dir.mkdir ("C:\\kdepim"); 36 app_dir.mkdir ("C:\\kdepim");
36 if ( !app_dir.exists("C:\\kdepim\\apps") ) 37 if ( !app_dir.exists("C:\\kdepim\\apps") )
37 app_dir.mkdir ("C:\\kdepim\\apps"); 38 app_dir.mkdir ("C:\\kdepim\\apps");
38 if ( !app_dir.exists("C:\\kdepim\\config") ) 39 if ( !app_dir.exists("C:\\kdepim\\config") )
39 app_dir.mkdir ("C:\\kdepim\\config"); 40 app_dir.mkdir ("C:\\kdepim\\config");
40 if ( !app_dir.exists("C:\\kdepim\\apps\\kaddressbook") ) 41 if ( !app_dir.exists("C:\\kdepim\\apps\\kaddressbook") )
41 app_dir.mkdir ("C:\\kdepim\\apps\\kaddressbook"); 42 app_dir.mkdir ("C:\\kdepim\\apps\\kaddressbook");
42 } 43 }
43#endif 44#endif
44 45
45 bool exitHelp = false; 46 bool exitHelp = false;
46 if ( argc > 1 ) { 47 if ( argc > 1 ) {
47 QString command = argv[1]; 48 QString command = argv[1];
48 if ( command == "-help" ){ 49 if ( command == "-help" ){
49 printf("KA/E command line commands:\n"); 50 printf("KA/E command line commands:\n");
50 printf(" no command: Start KA/E in usual way\n"); 51 printf(" no command: Start KA/E in usual way\n");
51 printf(" -help: This output\n"); 52 printf(" -help: This output\n");
52 printf(" KA/E is exiting now. Bye!\n"); 53 printf(" KA/E is exiting now. Bye!\n");
53 exitHelp = true; 54 exitHelp = true;
54 } 55 }
55 } 56 }
56 if ( ! exitHelp ) { 57 if ( ! exitHelp ) {
57 58
58 KGlobal::setAppName( "kaddressbook" ); 59 KGlobal::setAppName( "kaddressbook" );
59#ifndef DESKTOP_VERSION 60#ifndef DESKTOP_VERSION
60 if ( QApplication::desktop()->width() > 320 ) 61 if ( QApplication::desktop()->width() > 320 )
61 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons22/"); 62 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons22/");
62 else 63 else
63 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/"); 64 KGlobal::iconLoader()->setIconPath(QString(getenv("QPEDIR"))+"/pics/kdepim/kaddressbook/icons16/");
64#else 65#else
65 QString fileName ; 66 QString fileName ;
66 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/icons22/"; 67 fileName = qApp->applicationDirPath () + "/kdepim/kaddressbook/icons22/";
67 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName)); 68 KGlobal::iconLoader()->setIconPath(QDir::convertSeparators(fileName));
68 QApplication::addLibraryPath ( qApp->applicationDirPath () ); 69 QApplication::addLibraryPath ( qApp->applicationDirPath () );
69 70
70#endif 71#endif
71 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook"))); 72 KStandardDirs::setAppDir( QDir::convertSeparators(locateLocal("data", "kaddressbook")));
72 KAddressBookMain m ; 73 KAddressBookMain m ;
73//US MainWindow m; 74//US MainWindow m;
74 QObject::connect(&a, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & ))); 75 QObject::connect(&a, SIGNAL (appMessage ( const QCString &, const QByteArray & )), ExternalAppHandler::instance(), SLOT (appMessage ( const QCString &, const QByteArray & )));
75 76
76 { 77 {
77 KPimGlobalPrefs::instance()->setGlobalConfig(); 78 KPimGlobalPrefs::instance()->setGlobalConfig();
78 } 79 }
79#ifndef DESKTOP_VERSION 80#ifndef DESKTOP_VERSION
80 a.showMainWidget( &m ); 81 a.showMainWidget( &m );
82 QCopChannel* c1 = new QCopChannel("QPE/Application/addressbook",&m, "channelAB" ) ;
83 QObject::connect( c1, SIGNAL (received ( const QCString &, const QByteArray & )),&m, SLOT(recieve( const QCString&, const QByteArray& )));
81#else 84#else
82 a.setMainWidget( &m ); 85 a.setMainWidget( &m );
83 m.resize (640, 480 ); 86 m.resize (640, 480 );
84 m.show(); 87 m.show();
85#endif 88#endif
86 a.exec(); 89 a.exec();
90#ifndef DESKTOP_VERSION
91 delete c1;
92#endif
87 93
88 } 94 }
89 qDebug("KA: Bye! "); 95 qDebug("KA: Bye! ");
90} 96}
91 97
92/* 98/*
93#include <stdlib.h> 99#include <stdlib.h>
94 100
95#include <qstring.h> 101#include <qstring.h>
96 102
97#include <kabc/stdaddressbook.h> 103#include <kabc/stdaddressbook.h>
98#include <kaboutdata.h> 104#include <kaboutdata.h>
99#include <kcmdlineargs.h> 105#include <kcmdlineargs.h>
100#include <kcrash.h> 106#include <kcrash.h>
101#include <kdebug.h> 107#include <kdebug.h>
102#include <klocale.h> 108#include <klocale.h>
103#include <kstartupinfo.h> 109#include <kstartupinfo.h>
104#include <kuniqueapplication.h> 110#include <kuniqueapplication.h>
105#include <kwin.h> 111#include <kwin.h>
106 112
107#include "kaddressbookmain.h" 113#include "kaddressbookmain.h"
108#include "kabcore.h" 114#include "kabcore.h"
109 115
110extern "C" { 116extern "C" {
111 117
112void crashHandler( int ) 118void crashHandler( int )
113{ 119{
114 KABC::StdAddressBook::handleCrash(); 120 KABC::StdAddressBook::handleCrash();
115 ::exit( 0 ); 121 ::exit( 0 );
116} 122}
117 123
118} 124}
119 125
120class KAddressBookApp : public KUniqueApplication { 126class KAddressBookApp : public KUniqueApplication {
121 public: 127 public:
122 KAddressBookApp() : mMainWin( 0 ) {} 128 KAddressBookApp() : mMainWin( 0 ) {}
123 ~KAddressBookApp() {} 129 ~KAddressBookApp() {}
124 130
125 int newInstance(); 131 int newInstance();
126 132
127 private: 133 private:
128 KAddressBookMain *mMainWin; 134 KAddressBookMain *mMainWin;
129}; 135};
130 136
131int KAddressBookApp::newInstance() 137int KAddressBookApp::newInstance()
132{ 138{
133 if ( isRestored() ) { 139 if ( isRestored() ) {
134 // There can only be one main window 140 // There can only be one main window
135 if ( KMainWindow::canBeRestored( 1 ) ) { 141 if ( KMainWindow::canBeRestored( 1 ) ) {
136 mMainWin = new KAddressBookMain; 142 mMainWin = new KAddressBookMain;
137 mMainWin->show(); 143 mMainWin->show();
138 mMainWin->restore( 1 ); 144 mMainWin->restore( 1 );
139 } 145 }
140 } else { 146 } else {
141 KCmdLineArgs *args = KCmdLineArgs::parsedArgs(); 147 KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
142 148
143 QCString addrStr = args->getOption( "addr" ); 149 QCString addrStr = args->getOption( "addr" );
144 QCString uidStr = args->getOption( "uid" ); 150 QCString uidStr = args->getOption( "uid" );
145 QString addr; 151 QString addr;
146 QString uid; 152 QString uid;
147 if ( !addrStr.isEmpty() ) 153 if ( !addrStr.isEmpty() )
148 addr = QString::fromLocal8Bit( addrStr ); 154 addr = QString::fromLocal8Bit( addrStr );
149 if ( !uidStr.isEmpty() ) 155 if ( !uidStr.isEmpty() )
150 uid = QString::fromLocal8Bit( uidStr ); 156 uid = QString::fromLocal8Bit( uidStr );
151 157
152 158
153 if ( args->isSet( "editor-only" ) ) { 159 if ( args->isSet( "editor-only" ) ) {
154 if ( !mMainWin ) 160 if ( !mMainWin )
155 mMainWin = new KAddressBookMain; 161 mMainWin = new KAddressBookMain;
156 KStartupInfo::appStarted(); 162 KStartupInfo::appStarted();
157 mMainWin->hide(); 163 mMainWin->hide();
158 } else { 164 } else {
159 if ( mMainWin ) { 165 if ( mMainWin ) {
160 mMainWin->show(); 166 mMainWin->show();
161 KWin::setActiveWindow( mMainWin->winId() ); 167 KWin::setActiveWindow( mMainWin->winId() );
162 } else { 168 } else {
163 mMainWin = new KAddressBookMain; 169 mMainWin = new KAddressBookMain;
164 mMainWin->show(); 170 mMainWin->show();
165 } 171 }
166 } 172 }
167 // Can not see why anyone would pass both a uid and an email address, so I'll leave it that two contact editors will show if they do 173 // Can not see why anyone would pass both a uid and an email address, so I'll leave it that two contact editors will show if they do
168 if ( !addr.isEmpty() ) 174 if ( !addr.isEmpty() )
169 mMainWin->addEmail( addr ); 175 mMainWin->addEmail( addr );
170 176
171 if ( !uid.isEmpty() ) 177 if ( !uid.isEmpty() )
172 mMainWin->showContactEditor( uid ); 178 mMainWin->showContactEditor( uid );
173 if ( args->isSet( "new-contact" ) ) { 179 if ( args->isSet( "new-contact" ) ) {
174 mMainWin->newContact(); 180 mMainWin->newContact();
175 } 181 }
176 } 182 }
177 183
178 KCrash::setEmergencySaveFunction( crashHandler ); 184 KCrash::setEmergencySaveFunction( crashHandler );
179 185
180 return 0; 186 return 0;
181} 187}
182 188
183// the dummy argument is required, because KMail apparently sends an empty 189// the dummy argument is required, because KMail apparently sends an empty
184// argument. 190// argument.
185static KCmdLineOptions kmoptions[] = 191static KCmdLineOptions kmoptions[] =
186{ 192{
187 { "a", 0 , 0 }, 193 { "a", 0 , 0 },
188 { "addr <email>", I18N_NOOP( "Shows contact editor with given email address" ), 0 }, 194 { "addr <email>", I18N_NOOP( "Shows contact editor with given email address" ), 0 },
189 { "uid <uid>", I18N_NOOP( "Shows contact editor with given uid" ), 0 }, 195 { "uid <uid>", I18N_NOOP( "Shows contact editor with given uid" ), 0 },
190 { "editor-only", I18N_NOOP( "Launches in editor only mode" ), 0 }, 196 { "editor-only", I18N_NOOP( "Launches in editor only mode" ), 0 },
191 { "new-contact", I18N_NOOP( "Launches editor for the new contact" ), 0 }, 197 { "new-contact", I18N_NOOP( "Launches editor for the new contact" ), 0 },
192 { "+[argument]", I18N_NOOP( "dummy argument" ), 0}, 198 { "+[argument]", I18N_NOOP( "dummy argument" ), 0},
193 { 0, 0, 0} 199 { 0, 0, 0}
194}; 200};
195 201
196int main( int argc, char *argv[] ) 202int main( int argc, char *argv[] )
197{ 203{
198 KLocale::setMainCatalogue( "kaddressbook" ); 204 KLocale::setMainCatalogue( "kaddressbook" );
199 205
200 KCmdLineArgs::init( argc, argv, KABCore::createAboutData() ); 206 KCmdLineArgs::init( argc, argv, KABCore::createAboutData() );
201 KCmdLineArgs::addCmdLineOptions( kmoptions ); 207 KCmdLineArgs::addCmdLineOptions( kmoptions );
202 KUniqueApplication::addCmdLineOptions(); 208 KUniqueApplication::addCmdLineOptions();
203 209
204 if ( !KAddressBookApp::start() ) 210 if ( !KAddressBookApp::start() )
205 exit( 0 ); 211 exit( 0 );
206 212
207 KAddressBookApp app; 213 KAddressBookApp app;
208 KGlobal::locale()->insertCatalogue( "libkdepim" ); 214 KGlobal::locale()->insertCatalogue( "libkdepim" );
209 215
210 return app.exec(); 216 return app.exec();
211} 217}
212*/ 218*/