summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-09-08 09:57:16 (UTC)
committer zautrix <zautrix>2004-09-08 09:57:16 (UTC)
commit848c77f86b7105095b27a6034a0fefac8a7a0891 (patch) (unidiff)
tree2816ee9a05000ccabc43d3c9be4558053bfc8c0b
parent6650dd66dd13498a6d28844770d9d8c291335ad4 (diff)
downloadkdepimpi-848c77f86b7105095b27a6034a0fefac8a7a0891.zip
kdepimpi-848c77f86b7105095b27a6034a0fefac8a7a0891.tar.gz
kdepimpi-848c77f86b7105095b27a6034a0fefac8a7a0891.tar.bz2
Beam vcard fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp52
1 files changed, 32 insertions, 20 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index 6538295..d1d385c 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,2142 +1,2154 @@
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/* 24/*
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 35
36#ifndef KAB_EMBEDDED 36#ifndef KAB_EMBEDDED
37#include <qclipboard.h> 37#include <qclipboard.h>
38#include <qdir.h> 38#include <qdir.h>
39#include <qfile.h> 39#include <qfile.h>
40#include <qapplicaton.h> 40#include <qapplicaton.h>
41#include <qlayout.h> 41#include <qlayout.h>
42#include <qregexp.h> 42#include <qregexp.h>
43#include <qvbox.h> 43#include <qvbox.h>
44#include <kabc/addresseelist.h> 44#include <kabc/addresseelist.h>
45#include <kabc/errorhandler.h> 45#include <kabc/errorhandler.h>
46#include <kabc/resource.h> 46#include <kabc/resource.h>
47#include <kabc/vcardconverter.h> 47#include <kabc/vcardconverter.h>
48#include <kapplication.h> 48#include <kapplication.h>
49#include <kactionclasses.h> 49#include <kactionclasses.h>
50#include <kcmultidialog.h> 50#include <kcmultidialog.h>
51#include <kdebug.h> 51#include <kdebug.h>
52#include <kdeversion.h> 52#include <kdeversion.h>
53#include <kkeydialog.h> 53#include <kkeydialog.h>
54#include <kmessagebox.h> 54#include <kmessagebox.h>
55#include <kprinter.h> 55#include <kprinter.h>
56#include <kprotocolinfo.h> 56#include <kprotocolinfo.h>
57#include <kresources/selectdialog.h> 57#include <kresources/selectdialog.h>
58#include <kstandarddirs.h> 58#include <kstandarddirs.h>
59#include <ktempfile.h> 59#include <ktempfile.h>
60#include <kxmlguiclient.h> 60#include <kxmlguiclient.h>
61#include <kaboutdata.h> 61#include <kaboutdata.h>
62#include <libkdepim/categoryselectdialog.h> 62#include <libkdepim/categoryselectdialog.h>
63 63
64#include "addresseeutil.h" 64#include "addresseeutil.h"
65#include "addresseeeditordialog.h" 65#include "addresseeeditordialog.h"
66#include "extensionmanager.h" 66#include "extensionmanager.h"
67#include "kstdaction.h" 67#include "kstdaction.h"
68#include "kaddressbookservice.h" 68#include "kaddressbookservice.h"
69#include "ldapsearchdialog.h" 69#include "ldapsearchdialog.h"
70#include "printing/printingwizard.h" 70#include "printing/printingwizard.h"
71#else // KAB_EMBEDDED 71#else // KAB_EMBEDDED
72 72
73#include <kapplication.h> 73#include <kapplication.h>
74#include "KDGanttMinimizeSplitter.h" 74#include "KDGanttMinimizeSplitter.h"
75#include "kaddressbookmain.h" 75#include "kaddressbookmain.h"
76#include "kactioncollection.h" 76#include "kactioncollection.h"
77#include "addresseedialog.h" 77#include "addresseedialog.h"
78//US 78//US
79#include <libkdepim/addresseeview.h> 79#include <libkdepim/addresseeview.h>
80 80
81#include <qapp.h> 81#include <qapp.h>
82#include <qmenubar.h> 82#include <qmenubar.h>
83//#include <qtoolbar.h> 83//#include <qtoolbar.h>
84#include <qmessagebox.h> 84#include <qmessagebox.h>
85#include <kdebug.h> 85#include <kdebug.h>
86#include <kiconloader.h> // needed for SmallIcon 86#include <kiconloader.h> // needed for SmallIcon
87#include <kresources/kcmkresources.h> 87#include <kresources/kcmkresources.h>
88#include <ktoolbar.h> 88#include <ktoolbar.h>
89 89
90 90
91//#include <qlabel.h> 91//#include <qlabel.h>
92 92
93 93
94#ifndef DESKTOP_VERSION 94#ifndef DESKTOP_VERSION
95#include <qpe/ir.h> 95#include <qpe/ir.h>
96#include <qtopia/qcopenvelope_qws.h> 96#include <qtopia/qcopenvelope_qws.h>
97#else 97#else
98 98
99#endif 99#endif
100 100
101#endif // KAB_EMBEDDED 101#endif // KAB_EMBEDDED
102#include "kcmconfigs/kcmkabconfig.h" 102#include "kcmconfigs/kcmkabconfig.h"
103#include "kcmconfigs/kcmkdepimconfig.h" 103#include "kcmconfigs/kcmkdepimconfig.h"
104#include "kpimglobalprefs.h" 104#include "kpimglobalprefs.h"
105#include "externalapphandler.h" 105#include "externalapphandler.h"
106 106
107 107
108#include <kresources/selectdialog.h> 108#include <kresources/selectdialog.h>
109#include <kmessagebox.h> 109#include <kmessagebox.h>
110 110
111#include <picture.h> 111#include <picture.h>
112#include <resource.h> 112#include <resource.h>
113 113
114//US#include <qsplitter.h> 114//US#include <qsplitter.h>
115#include <qmap.h> 115#include <qmap.h>
116#include <qdir.h> 116#include <qdir.h>
117#include <qfile.h> 117#include <qfile.h>
118#include <qvbox.h> 118#include <qvbox.h>
119#include <qlayout.h> 119#include <qlayout.h>
120#include <qclipboard.h> 120#include <qclipboard.h>
121#include <qtextstream.h> 121#include <qtextstream.h>
122 122
123#include <libkdepim/categoryselectdialog.h> 123#include <libkdepim/categoryselectdialog.h>
124#include <kabc/vcardconverter.h> 124#include <kabc/vcardconverter.h>
125 125
126 126
127#include "addresseeutil.h" 127#include "addresseeutil.h"
128#include "undocmds.h" 128#include "undocmds.h"
129#include "addresseeeditordialog.h" 129#include "addresseeeditordialog.h"
130#include "viewmanager.h" 130#include "viewmanager.h"
131#include "details/detailsviewcontainer.h" 131#include "details/detailsviewcontainer.h"
132#include "kabprefs.h" 132#include "kabprefs.h"
133#include "xxportmanager.h" 133#include "xxportmanager.h"
134#include "incsearchwidget.h" 134#include "incsearchwidget.h"
135#include "jumpbuttonbar.h" 135#include "jumpbuttonbar.h"
136#include "extensionmanager.h" 136#include "extensionmanager.h"
137#include "addresseeconfig.h" 137#include "addresseeconfig.h"
138#include <kcmultidialog.h> 138#include <kcmultidialog.h>
139 139
140#ifdef _WIN32_ 140#ifdef _WIN32_
141 141
142#include "kaimportoldialog.h" 142#include "kaimportoldialog.h"
143#endif 143#endif
144 144
145bool pasteWithNewUid = true; 145bool pasteWithNewUid = true;
146 146
147#ifdef KAB_EMBEDDED 147#ifdef KAB_EMBEDDED
148KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 148KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
149 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 149 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
150 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 150 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
151 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 151 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
152#else //KAB_EMBEDDED 152#else //KAB_EMBEDDED
153KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 153KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
154 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 154 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
155 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 155 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
156 mReadWrite( readWrite ), mModified( false ) 156 mReadWrite( readWrite ), mModified( false )
157#endif //KAB_EMBEDDED 157#endif //KAB_EMBEDDED
158{ 158{
159 159
160 mExtensionBarSplitter = 0; 160 mExtensionBarSplitter = 0;
161 mIsPart = !parent->inherits( "KAddressBookMain" ); 161 mIsPart = !parent->inherits( "KAddressBookMain" );
162 162
163 mAddressBook = KABC::StdAddressBook::self(); 163 mAddressBook = KABC::StdAddressBook::self();
164 KABC::StdAddressBook::setAutomaticSave( false ); 164 KABC::StdAddressBook::setAutomaticSave( false );
165 165
166#ifndef KAB_EMBEDDED 166#ifndef KAB_EMBEDDED
167 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 167 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
168#endif //KAB_EMBEDDED 168#endif //KAB_EMBEDDED
169 169
170 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 170 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
171 SLOT( addressBookChanged() ) ); 171 SLOT( addressBookChanged() ) );
172 172
173 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 173 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
174 "X-Department", "KADDRESSBOOK" ); 174 "X-Department", "KADDRESSBOOK" );
175 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 175 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
176 "X-Profession", "KADDRESSBOOK" ); 176 "X-Profession", "KADDRESSBOOK" );
177 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 177 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
178 "X-AssistantsName", "KADDRESSBOOK" ); 178 "X-AssistantsName", "KADDRESSBOOK" );
179 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 179 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
180 "X-ManagersName", "KADDRESSBOOK" ); 180 "X-ManagersName", "KADDRESSBOOK" );
181 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 181 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
182 "X-SpousesName", "KADDRESSBOOK" ); 182 "X-SpousesName", "KADDRESSBOOK" );
183 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 183 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
184 "X-Office", "KADDRESSBOOK" ); 184 "X-Office", "KADDRESSBOOK" );
185 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 185 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
186 "X-IMAddress", "KADDRESSBOOK" ); 186 "X-IMAddress", "KADDRESSBOOK" );
187 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 187 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
188 "X-Anniversary", "KADDRESSBOOK" ); 188 "X-Anniversary", "KADDRESSBOOK" );
189 189
190 //US added this field to become compatible with Opie/qtopia addressbook 190 //US added this field to become compatible with Opie/qtopia addressbook
191 // values can be "female" or "male" or "". An empty field represents undefined. 191 // values can be "female" or "male" or "". An empty field represents undefined.
192 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 192 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
193 "X-Gender", "KADDRESSBOOK" ); 193 "X-Gender", "KADDRESSBOOK" );
194 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 194 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
195 "X-Children", "KADDRESSBOOK" ); 195 "X-Children", "KADDRESSBOOK" );
196 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 196 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
197 "X-FreeBusyUrl", "KADDRESSBOOK" ); 197 "X-FreeBusyUrl", "KADDRESSBOOK" );
198 198
199 initGUI(); 199 initGUI();
200 200
201 mIncSearchWidget->setFocus(); 201 mIncSearchWidget->setFocus();
202 202
203 203
204 connect( mViewManager, SIGNAL( selected( const QString& ) ), 204 connect( mViewManager, SIGNAL( selected( const QString& ) ),
205 SLOT( setContactSelected( const QString& ) ) ); 205 SLOT( setContactSelected( const QString& ) ) );
206 connect( mViewManager, SIGNAL( executed( const QString& ) ), 206 connect( mViewManager, SIGNAL( executed( const QString& ) ),
207 SLOT( executeContact( const QString& ) ) ); 207 SLOT( executeContact( const QString& ) ) );
208 208
209 connect( mViewManager, SIGNAL( deleteRequest( ) ), 209 connect( mViewManager, SIGNAL( deleteRequest( ) ),
210 SLOT( deleteContacts( ) ) ); 210 SLOT( deleteContacts( ) ) );
211 connect( mViewManager, SIGNAL( modified() ), 211 connect( mViewManager, SIGNAL( modified() ),
212 SLOT( setModified() ) ); 212 SLOT( setModified() ) );
213 213
214 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 214 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
215 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) ); 215 connect( mExtensionManager, SIGNAL( changedActiveExtension( int ) ), this, SLOT( extensionChanged( int ) ) );
216 216
217 connect( mXXPortManager, SIGNAL( modified() ), 217 connect( mXXPortManager, SIGNAL( modified() ),
218 SLOT( setModified() ) ); 218 SLOT( setModified() ) );
219 219
220 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 220 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
221 SLOT( incrementalSearch( const QString& ) ) ); 221 SLOT( incrementalSearch( const QString& ) ) );
222 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 222 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
223 mJumpButtonBar, SLOT( recreateButtons() ) ); 223 mJumpButtonBar, SLOT( recreateButtons() ) );
224 224
225 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 225 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
226 SLOT( sendMail( const QString& ) ) ); 226 SLOT( sendMail( const QString& ) ) );
227 227
228 228
229 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&))); 229 connect( ExternalAppHandler::instance(), SIGNAL (requestForNameEmailUidList(const QString&, const QString&)),this, SLOT(requestForNameEmailUidList(const QString&, const QString&)));
230 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&))); 230 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&)));
231 231
232 232
233#ifndef KAB_EMBEDDED 233#ifndef KAB_EMBEDDED
234 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 234 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
235 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 235 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
236 236
237 connect( mDetails, SIGNAL( browse( const QString& ) ), 237 connect( mDetails, SIGNAL( browse( const QString& ) ),
238 SLOT( browse( const QString& ) ) ); 238 SLOT( browse( const QString& ) ) );
239 239
240 240
241 mAddressBookService = new KAddressBookService( this ); 241 mAddressBookService = new KAddressBookService( this );
242 242
243#endif //KAB_EMBEDDED 243#endif //KAB_EMBEDDED
244 mEditorDialog = 0; 244 mEditorDialog = 0;
245 createAddresseeEditorDialog( this ); 245 createAddresseeEditorDialog( this );
246 setModified( false ); 246 setModified( false );
247} 247}
248 248
249KABCore::~KABCore() 249KABCore::~KABCore()
250{ 250{
251 // save(); 251 // save();
252 //saveSettings(); 252 //saveSettings();
253 //KABPrefs::instance()->writeConfig(); 253 //KABPrefs::instance()->writeConfig();
254 delete AddresseeConfig::instance(); 254 delete AddresseeConfig::instance();
255 mAddressBook = 0; 255 mAddressBook = 0;
256 KABC::StdAddressBook::close(); 256 KABC::StdAddressBook::close();
257} 257}
258 258
259void KABCore::restoreSettings() 259void KABCore::restoreSettings()
260{ 260{
261 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce; 261 mMultipleViewsAtOnce = KABPrefs::instance()->mMultipleViewsAtOnce;
262 262
263 bool state; 263 bool state;
264 264
265 if (mMultipleViewsAtOnce) 265 if (mMultipleViewsAtOnce)
266 state = KABPrefs::instance()->mDetailsPageVisible; 266 state = KABPrefs::instance()->mDetailsPageVisible;
267 else 267 else
268 state = false; 268 state = false;
269 269
270 mActionDetails->setChecked( state ); 270 mActionDetails->setChecked( state );
271 setDetailsVisible( state ); 271 setDetailsVisible( state );
272 272
273 state = KABPrefs::instance()->mJumpButtonBarVisible; 273 state = KABPrefs::instance()->mJumpButtonBarVisible;
274 274
275 mActionJumpBar->setChecked( state ); 275 mActionJumpBar->setChecked( state );
276 setJumpButtonBarVisible( state ); 276 setJumpButtonBarVisible( state );
277/*US 277/*US
278 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 278 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
279 if ( splitterSize.count() == 0 ) { 279 if ( splitterSize.count() == 0 ) {
280 splitterSize.append( width() / 2 ); 280 splitterSize.append( width() / 2 );
281 splitterSize.append( width() / 2 ); 281 splitterSize.append( width() / 2 );
282 } 282 }
283 mMiniSplitter->setSizes( splitterSize ); 283 mMiniSplitter->setSizes( splitterSize );
284 if ( mExtensionBarSplitter ) { 284 if ( mExtensionBarSplitter ) {
285 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 285 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
286 if ( splitterSize.count() == 0 ) { 286 if ( splitterSize.count() == 0 ) {
287 splitterSize.append( width() / 2 ); 287 splitterSize.append( width() / 2 );
288 splitterSize.append( width() / 2 ); 288 splitterSize.append( width() / 2 );
289 } 289 }
290 mExtensionBarSplitter->setSizes( splitterSize ); 290 mExtensionBarSplitter->setSizes( splitterSize );
291 291
292 } 292 }
293*/ 293*/
294 mViewManager->restoreSettings(); 294 mViewManager->restoreSettings();
295 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 295 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
296 mExtensionManager->restoreSettings(); 296 mExtensionManager->restoreSettings();
297 297
298 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 298 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
299 if ( splitterSize.count() == 0 ) { 299 if ( splitterSize.count() == 0 ) {
300 splitterSize.append( width() / 2 ); 300 splitterSize.append( width() / 2 );
301 splitterSize.append( width() / 2 ); 301 splitterSize.append( width() / 2 );
302 } 302 }
303 mMiniSplitter->setSizes( splitterSize ); 303 mMiniSplitter->setSizes( splitterSize );
304 if ( mExtensionBarSplitter ) { 304 if ( mExtensionBarSplitter ) {
305 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 305 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
306 if ( splitterSize.count() == 0 ) { 306 if ( splitterSize.count() == 0 ) {
307 splitterSize.append( width() / 2 ); 307 splitterSize.append( width() / 2 );
308 splitterSize.append( width() / 2 ); 308 splitterSize.append( width() / 2 );
309 } 309 }
310 mExtensionBarSplitter->setSizes( splitterSize ); 310 mExtensionBarSplitter->setSizes( splitterSize );
311 311
312 } 312 }
313 313
314 314
315} 315}
316 316
317void KABCore::saveSettings() 317void KABCore::saveSettings()
318{ 318{
319 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 319 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
320 if ( mExtensionBarSplitter ) 320 if ( mExtensionBarSplitter )
321 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 321 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
322 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 322 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
323 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 323 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
324#ifndef KAB_EMBEDDED 324#ifndef KAB_EMBEDDED
325 325
326 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 326 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
327 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 327 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
328#endif //KAB_EMBEDDED 328#endif //KAB_EMBEDDED
329 mExtensionManager->saveSettings(); 329 mExtensionManager->saveSettings();
330 mViewManager->saveSettings(); 330 mViewManager->saveSettings();
331 331
332 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 332 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
333} 333}
334 334
335KABC::AddressBook *KABCore::addressBook() const 335KABC::AddressBook *KABCore::addressBook() const
336{ 336{
337 return mAddressBook; 337 return mAddressBook;
338} 338}
339 339
340KConfig *KABCore::config() 340KConfig *KABCore::config()
341{ 341{
342#ifndef KAB_EMBEDDED 342#ifndef KAB_EMBEDDED
343 return KABPrefs::instance()->config(); 343 return KABPrefs::instance()->config();
344#else //KAB_EMBEDDED 344#else //KAB_EMBEDDED
345 return KABPrefs::instance()->getConfig(); 345 return KABPrefs::instance()->getConfig();
346#endif //KAB_EMBEDDED 346#endif //KAB_EMBEDDED
347} 347}
348 348
349KActionCollection *KABCore::actionCollection() const 349KActionCollection *KABCore::actionCollection() const
350{ 350{
351 return mGUIClient->actionCollection(); 351 return mGUIClient->actionCollection();
352} 352}
353 353
354KABC::Field *KABCore::currentSearchField() const 354KABC::Field *KABCore::currentSearchField() const
355{ 355{
356 if (mIncSearchWidget) 356 if (mIncSearchWidget)
357 return mIncSearchWidget->currentField(); 357 return mIncSearchWidget->currentField();
358 else 358 else
359 return 0; 359 return 0;
360} 360}
361 361
362QStringList KABCore::selectedUIDs() const 362QStringList KABCore::selectedUIDs() const
363{ 363{
364 return mViewManager->selectedUids(); 364 return mViewManager->selectedUids();
365} 365}
366 366
367KABC::Resource *KABCore::requestResource( QWidget *parent ) 367KABC::Resource *KABCore::requestResource( QWidget *parent )
368{ 368{
369 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 369 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
370 370
371 QPtrList<KRES::Resource> kresResources; 371 QPtrList<KRES::Resource> kresResources;
372 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 372 QPtrListIterator<KABC::Resource> resIt( kabcResources );
373 KABC::Resource *resource; 373 KABC::Resource *resource;
374 while ( ( resource = resIt.current() ) != 0 ) { 374 while ( ( resource = resIt.current() ) != 0 ) {
375 ++resIt; 375 ++resIt;
376 if ( !resource->readOnly() ) { 376 if ( !resource->readOnly() ) {
377 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 377 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
378 if ( res ) 378 if ( res )
379 kresResources.append( res ); 379 kresResources.append( res );
380 } 380 }
381 } 381 }
382 382
383 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 383 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
384 return static_cast<KABC::Resource*>( res ); 384 return static_cast<KABC::Resource*>( res );
385} 385}
386 386
387#ifndef KAB_EMBEDDED 387#ifndef KAB_EMBEDDED
388KAboutData *KABCore::createAboutData() 388KAboutData *KABCore::createAboutData()
389#else //KAB_EMBEDDED 389#else //KAB_EMBEDDED
390void KABCore::createAboutData() 390void KABCore::createAboutData()
391#endif //KAB_EMBEDDED 391#endif //KAB_EMBEDDED
392{ 392{
393#ifndef KAB_EMBEDDED 393#ifndef KAB_EMBEDDED
394 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 394 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
395 "3.1", I18N_NOOP( "The KDE Address Book" ), 395 "3.1", I18N_NOOP( "The KDE Address Book" ),
396 KAboutData::License_GPL_V2, 396 KAboutData::License_GPL_V2,
397 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 397 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
398 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 398 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
399 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 399 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
400 about->addAuthor( "Cornelius Schumacher", 400 about->addAuthor( "Cornelius Schumacher",
401 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 401 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
402 "schumacher@kde.org" ); 402 "schumacher@kde.org" );
403 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 403 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
404 "mpilone@slac.com" ); 404 "mpilone@slac.com" );
405 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 405 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
406 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 406 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
407 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 407 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
408 "michel@klaralvdalens-datakonsult.se" ); 408 "michel@klaralvdalens-datakonsult.se" );
409 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 409 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
410 "hansen@kde.org" ); 410 "hansen@kde.org" );
411 411
412 return about; 412 return about;
413#endif //KAB_EMBEDDED 413#endif //KAB_EMBEDDED
414 414
415 QString version; 415 QString version;
416#include <../version> 416#include <../version>
417 QMessageBox::about( this, "About KAddressbook/Pi", 417 QMessageBox::about( this, "About KAddressbook/Pi",
418 "KAddressbook/Platform-independent\n" 418 "KAddressbook/Platform-independent\n"
419 "(KA/Pi) " +version + " - " + 419 "(KA/Pi) " +version + " - " +
420#ifdef DESKTOP_VERSION 420#ifdef DESKTOP_VERSION
421 "Desktop Edition\n" 421 "Desktop Edition\n"
422#else 422#else
423 "PDA-Edition\n" 423 "PDA-Edition\n"
424 "for: Zaurus 5500 / 7x0 / 8x0\n" 424 "for: Zaurus 5500 / 7x0 / 8x0\n"
425#endif 425#endif
426 426
427 "(c) 2004 Ulf Schenk\n" 427 "(c) 2004 Ulf Schenk\n"
428 "(c) 2004 Lutz Rogowski\n" 428 "(c) 2004 Lutz Rogowski\n"
429 "(c) 1997-2003, The KDE PIM Team\n" 429 "(c) 1997-2003, The KDE PIM Team\n"
430 "Tobias Koenig Current maintainer\ntokoe@kde.org\n" 430 "Tobias Koenig Current maintainer\ntokoe@kde.org\n"
431 "Don Sanders Original author\n" 431 "Don Sanders Original author\n"
432 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n" 432 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n"
433 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n" 433 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n"
434 "Greg Stern DCOP interface\n" 434 "Greg Stern DCOP interface\n"
435 "Mark Westcot Contact pinning\n" 435 "Mark Westcot Contact pinning\n"
436 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 436 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
437 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n" 437 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n"
438#ifdef _WIN32_ 438#ifdef _WIN32_
439 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n" 439 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n"
440#endif 440#endif
441 ); 441 );
442} 442}
443 443
444void KABCore::setContactSelected( const QString &uid ) 444void KABCore::setContactSelected( const QString &uid )
445{ 445{
446 KABC::Addressee addr = mAddressBook->findByUid( uid ); 446 KABC::Addressee addr = mAddressBook->findByUid( uid );
447 if ( !mDetails->isHidden() ) 447 if ( !mDetails->isHidden() )
448 mDetails->setAddressee( addr ); 448 mDetails->setAddressee( addr );
449 449
450 if ( !addr.isEmpty() ) { 450 if ( !addr.isEmpty() ) {
451 emit contactSelected( addr.formattedName() ); 451 emit contactSelected( addr.formattedName() );
452 KABC::Picture pic = addr.photo(); 452 KABC::Picture pic = addr.photo();
453 if ( pic.isIntern() ) { 453 if ( pic.isIntern() ) {
454//US emit contactSelected( pic.data() ); 454//US emit contactSelected( pic.data() );
455//US instead use: 455//US instead use:
456 QPixmap px; 456 QPixmap px;
457 if (pic.data().isNull() != true) 457 if (pic.data().isNull() != true)
458 { 458 {
459 px.convertFromImage(pic.data()); 459 px.convertFromImage(pic.data());
460 } 460 }
461 461
462 emit contactSelected( px ); 462 emit contactSelected( px );
463 } 463 }
464 } 464 }
465 465
466 466
467 mExtensionManager->setSelectionChanged(); 467 mExtensionManager->setSelectionChanged();
468 468
469 // update the actions 469 // update the actions
470 bool selected = !uid.isEmpty(); 470 bool selected = !uid.isEmpty();
471 471
472 if ( mReadWrite ) { 472 if ( mReadWrite ) {
473 mActionCut->setEnabled( selected ); 473 mActionCut->setEnabled( selected );
474 mActionPaste->setEnabled( selected ); 474 mActionPaste->setEnabled( selected );
475 } 475 }
476 476
477 mActionCopy->setEnabled( selected ); 477 mActionCopy->setEnabled( selected );
478 mActionDelete->setEnabled( selected ); 478 mActionDelete->setEnabled( selected );
479 mActionEditAddressee->setEnabled( selected ); 479 mActionEditAddressee->setEnabled( selected );
480 mActionMail->setEnabled( selected ); 480 mActionMail->setEnabled( selected );
481 mActionMailVCard->setEnabled( selected ); 481 mActionMailVCard->setEnabled( selected );
482 //if (mActionBeam) 482 //if (mActionBeam)
483 //mActionBeam->setEnabled( selected ); 483 //mActionBeam->setEnabled( selected );
484 484
485 if (mActionBeamVCard) 485 if (mActionBeamVCard)
486 mActionBeamVCard->setEnabled( selected ); 486 mActionBeamVCard->setEnabled( selected );
487 487
488 mActionWhoAmI->setEnabled( selected ); 488 mActionWhoAmI->setEnabled( selected );
489 mActionCategories->setEnabled( selected ); 489 mActionCategories->setEnabled( selected );
490} 490}
491 491
492void KABCore::sendMail() 492void KABCore::sendMail()
493{ 493{
494 sendMail( mViewManager->selectedEmails().join( ", " ) ); 494 sendMail( mViewManager->selectedEmails().join( ", " ) );
495} 495}
496 496
497void KABCore::sendMail( const QString& emaillist ) 497void KABCore::sendMail( const QString& emaillist )
498{ 498{
499 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... " 499 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
500 if (emaillist.contains(",") > 0) 500 if (emaillist.contains(",") > 0)
501 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null ); 501 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
502 else 502 else
503 ExternalAppHandler::instance()->mailToOneContact( emaillist ); 503 ExternalAppHandler::instance()->mailToOneContact( emaillist );
504} 504}
505 505
506 506
507 507
508void KABCore::mailVCard() 508void KABCore::mailVCard()
509{ 509{
510 QStringList uids = mViewManager->selectedUids(); 510 QStringList uids = mViewManager->selectedUids();
511 if ( !uids.isEmpty() ) 511 if ( !uids.isEmpty() )
512 mailVCard( uids ); 512 mailVCard( uids );
513} 513}
514 514
515void KABCore::mailVCard( const QStringList& uids ) 515void KABCore::mailVCard( const QStringList& uids )
516{ 516{
517 QStringList urls; 517 QStringList urls;
518 518
519// QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 519// QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
520 520
521 QString dirName = "/tmp/" + KApplication::randomString( 8 ); 521 QString dirName = "/tmp/" + KApplication::randomString( 8 );
522 522
523 523
524 524
525 QDir().mkdir( dirName, true ); 525 QDir().mkdir( dirName, true );
526 526
527 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 527 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
528 KABC::Addressee a = mAddressBook->findByUid( *it ); 528 KABC::Addressee a = mAddressBook->findByUid( *it );
529 529
530 if ( a.isEmpty() ) 530 if ( a.isEmpty() )
531 continue; 531 continue;
532 532
533 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 533 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
534 534
535 QString fileName = dirName + "/" + name; 535 QString fileName = dirName + "/" + name;
536 536
537 QFile outFile(fileName); 537 QFile outFile(fileName);
538 538
539 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 539 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
540 KABC::VCardConverter converter; 540 KABC::VCardConverter converter;
541 QString vcard; 541 QString vcard;
542 542
543 converter.addresseeToVCard( a, vcard ); 543 converter.addresseeToVCard( a, vcard );
544 544
545 QTextStream t( &outFile ); // use a text stream 545 QTextStream t( &outFile ); // use a text stream
546 t.setEncoding( QTextStream::UnicodeUTF8 ); 546 t.setEncoding( QTextStream::UnicodeUTF8 );
547 t << vcard; 547 t << vcard;
548 548
549 outFile.close(); 549 outFile.close();
550 550
551 urls.append( fileName ); 551 urls.append( fileName );
552 } 552 }
553 } 553 }
554 554
555 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") ); 555 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") );
556 556
557 557
558/*US 558/*US
559 kapp->invokeMailer( QString::null, QString::null, QString::null, 559 kapp->invokeMailer( QString::null, QString::null, QString::null,
560 QString::null, // subject 560 QString::null, // subject
561 QString::null, // body 561 QString::null, // body
562 QString::null, 562 QString::null,
563 urls ); // attachments 563 urls ); // attachments
564*/ 564*/
565 565
566} 566}
567 567
568/** 568/**
569 Beams the "WhoAmI contact. 569 Beams the "WhoAmI contact.
570*/ 570*/
571void KABCore::beamMySelf() 571void KABCore::beamMySelf()
572{ 572{
573 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 573 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
574 if (!a.isEmpty()) 574 if (!a.isEmpty())
575 { 575 {
576 QStringList uids; 576 QStringList uids;
577 uids << a.uid(); 577 uids << a.uid();
578 578
579 beamVCard(uids); 579 beamVCard(uids);
580 } else { 580 } else {
581 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 581 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
582 582
583 583
584 } 584 }
585} 585}
586 586
587void KABCore::beamVCard() 587void KABCore::beamVCard()
588{ 588{
589 QStringList uids = mViewManager->selectedUids(); 589 QStringList uids = mViewManager->selectedUids();
590 if ( !uids.isEmpty() ) 590 if ( !uids.isEmpty() )
591 beamVCard( uids ); 591 beamVCard( uids );
592} 592}
593 593
594 594
595void KABCore::beamVCard(const QStringList& uids) 595void KABCore::beamVCard(const QStringList& uids)
596{ 596{
597/*US 597/*US
598 QString beamFilename; 598 QString beamFilename;
599 Opie::OPimContact c; 599 Opie::OPimContact c;
600 if ( actionPersonal->isOn() ) { 600 if ( actionPersonal->isOn() ) {
601 beamFilename = addressbookPersonalVCardName(); 601 beamFilename = addressbookPersonalVCardName();
602 if ( !QFile::exists( beamFilename ) ) 602 if ( !QFile::exists( beamFilename ) )
603 return; // can't beam a non-existent file 603 return; // can't beam a non-existent file
604 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 604 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
605 beamFilename ); 605 beamFilename );
606 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 606 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
607 Opie::OPimContactAccess::List allList = access->allRecords(); 607 Opie::OPimContactAccess::List allList = access->allRecords();
608 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first 608 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first
609 c = *it; 609 c = *it;
610 610
611 delete access; 611 delete access;
612 } else { 612 } else {
613 unlink( beamfile ); // delete if exists 613 unlink( beamfile ); // delete if exists
614 mkdir("/tmp/obex/", 0755); 614 mkdir("/tmp/obex/", 0755);
615 c = m_abView -> currentEntry(); 615 c = m_abView -> currentEntry();
616 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 616 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
617 beamfile ); 617 beamfile );
618 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 618 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
619 access->add( c ); 619 access->add( c );
620 access->save(); 620 access->save();
621 delete access; 621 delete access;
622 622
623 beamFilename = beamfile; 623 beamFilename = beamfile;
624 } 624 }
625 625
626 owarn << "Beaming: " << beamFilename << oendl; 626 owarn << "Beaming: " << beamFilename << oendl;
627*/ 627*/
628 628
629#if 0 629#if 0
630 QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 630 QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
631 631
632 QString dirName = tmpdir + "/" + KApplication::randomString( 8 ); 632 QString dirName = tmpdir + "/" + KApplication::randomString( 8 );
633 633
634 QString name = "contact.vcf"; 634 QString name = "contact.vcf";
635 635
636 QString fileName = dirName + "/" + name; 636 QString fileName = dirName + "/" + name;
637#endif 637#endif
638 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory 638 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory
639 // 639 //
640 QString fileName = "/tmp/kapibeamfile.vcf"; 640 QString fileName = "/tmp/kapibeamfile.vcf";
641 641
642 642
643 //QDir().mkdir( dirName, true ); 643 //QDir().mkdir( dirName, true );
644 644
645 QFile outFile(fileName); 645
646 KABC::VCardConverter converter; 646 KABC::VCardConverter converter;
647 QString description; 647 QString description;
648 648 QString datastream;
649 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 649 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
650
651 QTextStream t( &outFile ); // use a text stream
652 t.setEncoding( QTextStream::UnicodeUTF8 );
653
654 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
655 KABC::Addressee a = mAddressBook->findByUid( *it ); 650 KABC::Addressee a = mAddressBook->findByUid( *it );
656 651
657 if ( a.isEmpty() ) 652 if ( a.isEmpty() )
658 continue; 653 continue;
659 654
660 if (description.isEmpty()) 655 if (description.isEmpty())
661 description = a.formattedName(); 656 description = a.formattedName();
662 657
663 QString vcard; 658 QString vcard;
664 converter.addresseeToVCard( a, vcard ); 659 converter.addresseeToVCard( a, vcard );
665 t << vcard; 660 int start = 0;
666 661 int next;
667 } 662 while ( (next = vcard.find("TYPE=", start) )>= 0 ) {
663 int semi = vcard.find(";", next);
664 int dopp = vcard.find(":", next);
665 int sep;
666 if ( semi < dopp && semi >= 0 )
667 sep = semi ;
668 else
669 sep = dopp;
670 datastream +=vcard.mid( start, next - start);
671 datastream +=vcard.mid( next+5,sep -next -5 ).upper();
672 start = sep;
673 }
674 datastream += vcard.mid( start,vcard.length() );
675 }
676#ifndef DESKTOP_VERSION
677 QFile outFile(fileName);
678 if ( outFile.open(IO_WriteOnly) ) {
679 datastream.replace ( QRegExp("VERSION:3.0") , "VERSION:2.1" );
680 QTextStream t( &outFile ); // use a text stream
681 t.setEncoding( QTextStream::UnicodeUTF8 );
682 t <<datastream;
683 outFile.close();
684 Ir *ir = new Ir( this );
685 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
686 ir->send( fileName, description, "text/x-vCard" );
668 } else { 687 } else {
669 qDebug("Error open temp beam file "); 688 qDebug("Error open temp beam file ");
670 return; 689 return;
671 } 690 }
672
673 outFile.close();
674
675#ifndef DESKTOP_VERSION
676 Ir *ir = new Ir( this );
677 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
678 ir->send( fileName, description, "text/x-vCard" );
679#endif 691#endif
680 692
681} 693}
682 694
683void KABCore::beamDone( Ir *ir ) 695void KABCore::beamDone( Ir *ir )
684{ 696{
685#ifndef DESKTOP_VERSION 697#ifndef DESKTOP_VERSION
686 delete ir; 698 delete ir;
687#endif 699#endif
688} 700}
689 701
690 702
691void KABCore::browse( const QString& url ) 703void KABCore::browse( const QString& url )
692{ 704{
693#ifndef KAB_EMBEDDED 705#ifndef KAB_EMBEDDED
694 kapp->invokeBrowser( url ); 706 kapp->invokeBrowser( url );
695#else //KAB_EMBEDDED 707#else //KAB_EMBEDDED
696 qDebug("KABCore::browse must be fixed"); 708 qDebug("KABCore::browse must be fixed");
697#endif //KAB_EMBEDDED 709#endif //KAB_EMBEDDED
698} 710}
699 711
700void KABCore::selectAllContacts() 712void KABCore::selectAllContacts()
701{ 713{
702 mViewManager->setSelected( QString::null, true ); 714 mViewManager->setSelected( QString::null, true );
703} 715}
704 716
705void KABCore::deleteContacts() 717void KABCore::deleteContacts()
706{ 718{
707 QStringList uidList = mViewManager->selectedUids(); 719 QStringList uidList = mViewManager->selectedUids();
708 deleteContacts( uidList ); 720 deleteContacts( uidList );
709} 721}
710 722
711void KABCore::deleteContacts( const QStringList &uids ) 723void KABCore::deleteContacts( const QStringList &uids )
712{ 724{
713 if ( uids.count() > 0 ) { 725 if ( uids.count() > 0 ) {
714 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 726 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
715 UndoStack::instance()->push( command ); 727 UndoStack::instance()->push( command );
716 RedoStack::instance()->clear(); 728 RedoStack::instance()->clear();
717 729
718 // now if we deleted anything, refresh 730 // now if we deleted anything, refresh
719 setContactSelected( QString::null ); 731 setContactSelected( QString::null );
720 setModified( true ); 732 setModified( true );
721 } 733 }
722} 734}
723 735
724void KABCore::copyContacts() 736void KABCore::copyContacts()
725{ 737{
726 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 738 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
727 739
728 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 740 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
729 741
730 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 742 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
731 743
732 QClipboard *cb = QApplication::clipboard(); 744 QClipboard *cb = QApplication::clipboard();
733 cb->setText( clipText ); 745 cb->setText( clipText );
734} 746}
735 747
736void KABCore::cutContacts() 748void KABCore::cutContacts()
737{ 749{
738 QStringList uidList = mViewManager->selectedUids(); 750 QStringList uidList = mViewManager->selectedUids();
739 751
740//US if ( uidList.size() > 0 ) { 752//US if ( uidList.size() > 0 ) {
741 if ( uidList.count() > 0 ) { 753 if ( uidList.count() > 0 ) {
742 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); 754 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList );
743 UndoStack::instance()->push( command ); 755 UndoStack::instance()->push( command );
744 RedoStack::instance()->clear(); 756 RedoStack::instance()->clear();
745 757
746 setModified( true ); 758 setModified( true );
747 } 759 }
748} 760}
749 761
750void KABCore::pasteContacts() 762void KABCore::pasteContacts()
751{ 763{
752 QClipboard *cb = QApplication::clipboard(); 764 QClipboard *cb = QApplication::clipboard();
753 765
754 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); 766 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() );
755 767
756 pasteContacts( list ); 768 pasteContacts( list );
757} 769}
758 770
759void KABCore::pasteContacts( KABC::Addressee::List &list ) 771void KABCore::pasteContacts( KABC::Addressee::List &list )
760{ 772{
761 KABC::Resource *resource = requestResource( this ); 773 KABC::Resource *resource = requestResource( this );
762 KABC::Addressee::List::Iterator it; 774 KABC::Addressee::List::Iterator it;
763 for ( it = list.begin(); it != list.end(); ++it ) 775 for ( it = list.begin(); it != list.end(); ++it )
764 (*it).setResource( resource ); 776 (*it).setResource( resource );
765 777
766 PwPasteCommand *command = new PwPasteCommand( this, list ); 778 PwPasteCommand *command = new PwPasteCommand( this, list );
767 UndoStack::instance()->push( command ); 779 UndoStack::instance()->push( command );
768 RedoStack::instance()->clear(); 780 RedoStack::instance()->clear();
769 781
770 setModified( true ); 782 setModified( true );
771} 783}
772 784
773void KABCore::setWhoAmI() 785void KABCore::setWhoAmI()
774{ 786{
775 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 787 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
776 788
777 if ( addrList.count() > 1 ) { 789 if ( addrList.count() > 1 ) {
778 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 790 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
779 return; 791 return;
780 } 792 }
781 793
782 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 794 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
783 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 795 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
784 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 796 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
785} 797}
786 798
787void KABCore::setCategories() 799void KABCore::setCategories()
788{ 800{
789 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 801 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
790 if ( !dlg.exec() ) 802 if ( !dlg.exec() )
791 return; 803 return;
792 804
793 bool merge = false; 805 bool merge = false;
794 QString msg = i18n( "Merge with existing categories?" ); 806 QString msg = i18n( "Merge with existing categories?" );
795 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 807 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
796 merge = true; 808 merge = true;
797 809
798 QStringList categories = dlg.selectedCategories(); 810 QStringList categories = dlg.selectedCategories();
799 811
800 QStringList uids = mViewManager->selectedUids(); 812 QStringList uids = mViewManager->selectedUids();
801 QStringList::Iterator it; 813 QStringList::Iterator it;
802 for ( it = uids.begin(); it != uids.end(); ++it ) { 814 for ( it = uids.begin(); it != uids.end(); ++it ) {
803 KABC::Addressee addr = mAddressBook->findByUid( *it ); 815 KABC::Addressee addr = mAddressBook->findByUid( *it );
804 if ( !addr.isEmpty() ) { 816 if ( !addr.isEmpty() ) {
805 if ( !merge ) 817 if ( !merge )
806 addr.setCategories( categories ); 818 addr.setCategories( categories );
807 else { 819 else {
808 QStringList addrCategories = addr.categories(); 820 QStringList addrCategories = addr.categories();
809 QStringList::Iterator catIt; 821 QStringList::Iterator catIt;
810 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 822 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
811 if ( !addrCategories.contains( *catIt ) ) 823 if ( !addrCategories.contains( *catIt ) )
812 addrCategories.append( *catIt ); 824 addrCategories.append( *catIt );
813 } 825 }
814 addr.setCategories( addrCategories ); 826 addr.setCategories( addrCategories );
815 } 827 }
816 828
817 mAddressBook->insertAddressee( addr ); 829 mAddressBook->insertAddressee( addr );
818 } 830 }
819 } 831 }
820 832
821 if ( uids.count() > 0 ) 833 if ( uids.count() > 0 )
822 setModified( true ); 834 setModified( true );
823} 835}
824 836
825void KABCore::setSearchFields( const KABC::Field::List &fields ) 837void KABCore::setSearchFields( const KABC::Field::List &fields )
826{ 838{
827 mIncSearchWidget->setFields( fields ); 839 mIncSearchWidget->setFields( fields );
828} 840}
829 841
830void KABCore::incrementalSearch( const QString& text ) 842void KABCore::incrementalSearch( const QString& text )
831{ 843{
832 mViewManager->setSelected( QString::null, false ); 844 mViewManager->setSelected( QString::null, false );
833 845
834 if ( !text.isEmpty() ) { 846 if ( !text.isEmpty() ) {
835 KABC::Field *field = mIncSearchWidget->currentField(); 847 KABC::Field *field = mIncSearchWidget->currentField();
836 QString pattern = text.lower()+"*"; 848 QString pattern = text.lower()+"*";
837 QRegExp re; 849 QRegExp re;
838 re.setWildcard(true); // most people understand these better. 850 re.setWildcard(true); // most people understand these better.
839 re.setCaseSensitive(false); 851 re.setCaseSensitive(false);
840 re.setPattern( pattern ); 852 re.setPattern( pattern );
841 QStringList foundUids; 853 QStringList foundUids;
842 if (!re.isValid()) 854 if (!re.isValid())
843 return; 855 return;
844#if 1 //KDE_VERSION >= 319 856#if 1 //KDE_VERSION >= 319
845 KABC::AddresseeList list( mAddressBook->allAddressees() ); 857 KABC::AddresseeList list( mAddressBook->allAddressees() );
846 if ( field ) { 858 if ( field ) {
847 list.sortByField( field ); 859 list.sortByField( field );
848 KABC::AddresseeList::Iterator it; 860 KABC::AddresseeList::Iterator it;
849 for ( it = list.begin(); it != list.end(); ++it ) { 861 for ( it = list.begin(); it != list.end(); ++it ) {
850 862
851#if QT_VERSION >= 300 863#if QT_VERSION >= 300
852 if (re.search(field->value( *it ).lower()) != -1) 864 if (re.search(field->value( *it ).lower()) != -1)
853#else 865#else
854 if (re.match(field->value( *it ).lower()) != -1) 866 if (re.match(field->value( *it ).lower()) != -1)
855#endif 867#endif
856 { 868 {
857 // if ( field->value( *it ).lower().startsWith( pattern ) ) { 869 // if ( field->value( *it ).lower().startsWith( pattern ) ) {
858 //mViewManager->setSelected( (*it).uid(), true ); 870 //mViewManager->setSelected( (*it).uid(), true );
859 foundUids.append( (*it).uid() ); 871 foundUids.append( (*it).uid() );
860 //return; 872 //return;
861 } 873 }
862 } 874 }
863 } else { 875 } else {
864 KABC::AddresseeList::Iterator it; 876 KABC::AddresseeList::Iterator it;
865 for ( it = list.begin(); it != list.end(); ++it ) { 877 for ( it = list.begin(); it != list.end(); ++it ) {
866 KABC::Field::List fieldList = mIncSearchWidget->fields(); 878 KABC::Field::List fieldList = mIncSearchWidget->fields();
867 KABC::Field::List::ConstIterator fieldIt; 879 KABC::Field::List::ConstIterator fieldIt;
868 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 880 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
869#if QT_VERSION >= 300 881#if QT_VERSION >= 300
870 if (re.search((*fieldIt)->value( *it ).lower()) != -1) 882 if (re.search((*fieldIt)->value( *it ).lower()) != -1)
871#else 883#else
872 if (re.match((*fieldIt)->value( *it ).lower()) != -1) 884 if (re.match((*fieldIt)->value( *it ).lower()) != -1)
873#endif 885#endif
874 { 886 {
875 // if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) { 887 // if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) {
876 //mViewManager->setSelected( (*it).uid(), true ); 888 //mViewManager->setSelected( (*it).uid(), true );
877 foundUids.append( (*it).uid() ); 889 foundUids.append( (*it).uid() );
878 //return; 890 //return;
879 } 891 }
880 } 892 }
881 } 893 }
882 } 894 }
883 if ( foundUids.count() > 0 ) 895 if ( foundUids.count() > 0 )
884 mViewManager->setListSelected( foundUids ); 896 mViewManager->setListSelected( foundUids );
885#else 897#else
886 KABC::AddressBook::Iterator it; 898 KABC::AddressBook::Iterator it;
887 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 899 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
888 if ( field ) { 900 if ( field ) {
889 if ( field->value( *it ).lower().startsWith( pattern ) ) { 901 if ( field->value( *it ).lower().startsWith( pattern ) ) {
890 mViewManager->setSelected( (*it).uid(), true ); 902 mViewManager->setSelected( (*it).uid(), true );
891 return; 903 return;
892 } 904 }
893 } else { 905 } else {
894 KABC::Field::List fieldList = mIncSearchWidget->fields(); 906 KABC::Field::List fieldList = mIncSearchWidget->fields();
895 KABC::Field::List::ConstIterator fieldIt; 907 KABC::Field::List::ConstIterator fieldIt;
896 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 908 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
897 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) { 909 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) {
898 mViewManager->setSelected( (*it).uid(), true ); 910 mViewManager->setSelected( (*it).uid(), true );
899 return; 911 return;
900 } 912 }
901 } 913 }
902 } 914 }
903 } 915 }
904#endif 916#endif
905 } 917 }
906} 918}
907 919
908void KABCore::setModified() 920void KABCore::setModified()
909{ 921{
910 setModified( true ); 922 setModified( true );
911} 923}
912 924
913void KABCore::setModifiedWOrefresh() 925void KABCore::setModifiedWOrefresh()
914{ 926{
915 // qDebug("KABCore::setModifiedWOrefresh() "); 927 // qDebug("KABCore::setModifiedWOrefresh() ");
916 mModified = true; 928 mModified = true;
917 mActionSave->setEnabled( mModified ); 929 mActionSave->setEnabled( mModified );
918#ifdef DESKTOP_VERSION 930#ifdef DESKTOP_VERSION
919 mDetails->refreshView(); 931 mDetails->refreshView();
920#endif 932#endif
921 933
922} 934}
923void KABCore::setModified( bool modified ) 935void KABCore::setModified( bool modified )
924{ 936{
925 mModified = modified; 937 mModified = modified;
926 mActionSave->setEnabled( mModified ); 938 mActionSave->setEnabled( mModified );
927 939
928 if ( modified ) 940 if ( modified )
929 mJumpButtonBar->recreateButtons(); 941 mJumpButtonBar->recreateButtons();
930 942
931 mViewManager->refreshView(); 943 mViewManager->refreshView();
932 mDetails->refreshView(); 944 mDetails->refreshView();
933 945
934} 946}
935 947
936bool KABCore::modified() const 948bool KABCore::modified() const
937{ 949{
938 return mModified; 950 return mModified;
939} 951}
940 952
941void KABCore::contactModified( const KABC::Addressee &addr ) 953void KABCore::contactModified( const KABC::Addressee &addr )
942{ 954{
943 955
944 Command *command = 0; 956 Command *command = 0;
945 QString uid; 957 QString uid;
946 958
947 // check if it exists already 959 // check if it exists already
948 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 960 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
949 if ( origAddr.isEmpty() ) 961 if ( origAddr.isEmpty() )
950 command = new PwNewCommand( mAddressBook, addr ); 962 command = new PwNewCommand( mAddressBook, addr );
951 else { 963 else {
952 command = new PwEditCommand( mAddressBook, origAddr, addr ); 964 command = new PwEditCommand( mAddressBook, origAddr, addr );
953 uid = addr.uid(); 965 uid = addr.uid();
954 } 966 }
955 967
956 UndoStack::instance()->push( command ); 968 UndoStack::instance()->push( command );
957 RedoStack::instance()->clear(); 969 RedoStack::instance()->clear();
958 970
959 setModified( true ); 971 setModified( true );
960} 972}
961 973
962void KABCore::newContact() 974void KABCore::newContact()
963{ 975{
964 976
965 977
966 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources(); 978 QPtrList<KABC::Resource> kabcResources = mAddressBook->resources();
967 979
968 QPtrList<KRES::Resource> kresResources; 980 QPtrList<KRES::Resource> kresResources;
969 QPtrListIterator<KABC::Resource> it( kabcResources ); 981 QPtrListIterator<KABC::Resource> it( kabcResources );
970 KABC::Resource *resource; 982 KABC::Resource *resource;
971 while ( ( resource = it.current() ) != 0 ) { 983 while ( ( resource = it.current() ) != 0 ) {
972 ++it; 984 ++it;
973 if ( !resource->readOnly() ) { 985 if ( !resource->readOnly() ) {
974 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 986 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
975 if ( res ) 987 if ( res )
976 kresResources.append( res ); 988 kresResources.append( res );
977 } 989 }
978 } 990 }
979 991
980 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this ); 992 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, this );
981 resource = static_cast<KABC::Resource*>( res ); 993 resource = static_cast<KABC::Resource*>( res );
982 994
983 if ( resource ) { 995 if ( resource ) {
984 KABC::Addressee addr; 996 KABC::Addressee addr;
985 addr.setResource( resource ); 997 addr.setResource( resource );
986 mEditorDialog->setAddressee( addr ); 998 mEditorDialog->setAddressee( addr );
987 KApplication::execDialog ( mEditorDialog ); 999 KApplication::execDialog ( mEditorDialog );
988 1000
989 } else 1001 } else
990 return; 1002 return;
991 1003
992 // mEditorDict.insert( dialog->addressee().uid(), dialog ); 1004 // mEditorDict.insert( dialog->addressee().uid(), dialog );
993 1005
994 1006
995} 1007}
996 1008
997void KABCore::addEmail( QString aStr ) 1009void KABCore::addEmail( QString aStr )
998{ 1010{
999#ifndef KAB_EMBEDDED 1011#ifndef KAB_EMBEDDED
1000 QString fullName, email; 1012 QString fullName, email;
1001 1013
1002 KABC::Addressee::parseEmailAddress( aStr, fullName, email ); 1014 KABC::Addressee::parseEmailAddress( aStr, fullName, email );
1003 1015
1004 // Try to lookup the addressee matching the email address 1016 // Try to lookup the addressee matching the email address
1005 bool found = false; 1017 bool found = false;
1006 QStringList emailList; 1018 QStringList emailList;
1007 KABC::AddressBook::Iterator it; 1019 KABC::AddressBook::Iterator it;
1008 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) { 1020 for ( it = mAddressBook->begin(); !found && (it != mAddressBook->end()); ++it ) {
1009 emailList = (*it).emails(); 1021 emailList = (*it).emails();
1010 if ( emailList.contains( email ) > 0 ) { 1022 if ( emailList.contains( email ) > 0 ) {
1011 found = true; 1023 found = true;
1012 (*it).setNameFromString( fullName ); 1024 (*it).setNameFromString( fullName );
1013 editContact( (*it).uid() ); 1025 editContact( (*it).uid() );
1014 } 1026 }
1015 } 1027 }
1016 1028
1017 if ( !found ) { 1029 if ( !found ) {
1018 KABC::Addressee addr; 1030 KABC::Addressee addr;
1019 addr.setNameFromString( fullName ); 1031 addr.setNameFromString( fullName );
1020 addr.insertEmail( email, true ); 1032 addr.insertEmail( email, true );
1021 1033
1022 mAddressBook->insertAddressee( addr ); 1034 mAddressBook->insertAddressee( addr );
1023 mViewManager->refreshView( addr.uid() ); 1035 mViewManager->refreshView( addr.uid() );
1024 editContact( addr.uid() ); 1036 editContact( addr.uid() );
1025 } 1037 }
1026#else //KAB_EMBEDDED 1038#else //KAB_EMBEDDED
1027 qDebug("KABCore::addEmail finsih method"); 1039 qDebug("KABCore::addEmail finsih method");
1028#endif //KAB_EMBEDDED 1040#endif //KAB_EMBEDDED
1029} 1041}
1030 1042
1031void KABCore::importVCard( const KURL &url, bool showPreview ) 1043void KABCore::importVCard( const KURL &url, bool showPreview )
1032{ 1044{
1033 mXXPortManager->importVCard( url, showPreview ); 1045 mXXPortManager->importVCard( url, showPreview );
1034} 1046}
1035void KABCore::importFromOL() 1047void KABCore::importFromOL()
1036{ 1048{
1037#ifdef _WIN32_ 1049#ifdef _WIN32_
1038 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this ); 1050 KAImportOLdialog* idgl = new KAImportOLdialog( i18n("Import Contacts from OL"), mAddressBook, this );
1039 idgl->exec(); 1051 idgl->exec();
1040 KABC::Addressee::List list = idgl->getAddressList(); 1052 KABC::Addressee::List list = idgl->getAddressList();
1041 if ( list.count() > 0 ) { 1053 if ( list.count() > 0 ) {
1042 KABC::Addressee::List listNew; 1054 KABC::Addressee::List listNew;
1043 KABC::Addressee::List listExisting; 1055 KABC::Addressee::List listExisting;
1044 KABC::Addressee::List::Iterator it; 1056 KABC::Addressee::List::Iterator it;
1045 KABC::AddressBook::Iterator iter; 1057 KABC::AddressBook::Iterator iter;
1046 for ( it = list.begin(); it != list.end(); ++it ) { 1058 for ( it = list.begin(); it != list.end(); ++it ) {
1047 if ( mAddressBook->findByUid((*it).uid() ).isEmpty()) 1059 if ( mAddressBook->findByUid((*it).uid() ).isEmpty())
1048 listNew.append( (*it) ); 1060 listNew.append( (*it) );
1049 else 1061 else
1050 listExisting.append( (*it) ); 1062 listExisting.append( (*it) );
1051 } 1063 }
1052 if ( listExisting.count() > 0 ) 1064 if ( listExisting.count() > 0 )
1053 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() )); 1065 KMessageBox::information( this, i18n("%1 contacts not added to addressbook\nbecause they were already in the addressbook!").arg( listExisting.count() ));
1054 if ( listNew.count() > 0 ) { 1066 if ( listNew.count() > 0 ) {
1055 pasteWithNewUid = false; 1067 pasteWithNewUid = false;
1056 pasteContacts( listNew ); 1068 pasteContacts( listNew );
1057 pasteWithNewUid = true; 1069 pasteWithNewUid = true;
1058 } 1070 }
1059 } 1071 }
1060 delete idgl; 1072 delete idgl;
1061#endif 1073#endif
1062} 1074}
1063 1075
1064void KABCore::importVCard( const QString &vCard, bool showPreview ) 1076void KABCore::importVCard( const QString &vCard, bool showPreview )
1065{ 1077{
1066 mXXPortManager->importVCard( vCard, showPreview ); 1078 mXXPortManager->importVCard( vCard, showPreview );
1067} 1079}
1068 1080
1069//US added a second method without defaultparameter 1081//US added a second method without defaultparameter
1070void KABCore::editContact2() { 1082void KABCore::editContact2() {
1071 editContact( QString::null ); 1083 editContact( QString::null );
1072} 1084}
1073 1085
1074void KABCore::editContact( const QString &uid ) 1086void KABCore::editContact( const QString &uid )
1075{ 1087{
1076 1088
1077 if ( mExtensionManager->isQuickEditVisible() ) 1089 if ( mExtensionManager->isQuickEditVisible() )
1078 return; 1090 return;
1079 1091
1080 // First, locate the contact entry 1092 // First, locate the contact entry
1081 QString localUID = uid; 1093 QString localUID = uid;
1082 if ( localUID.isNull() ) { 1094 if ( localUID.isNull() ) {
1083 QStringList uidList = mViewManager->selectedUids(); 1095 QStringList uidList = mViewManager->selectedUids();
1084 if ( uidList.count() > 0 ) 1096 if ( uidList.count() > 0 )
1085 localUID = *( uidList.at( 0 ) ); 1097 localUID = *( uidList.at( 0 ) );
1086 } 1098 }
1087 1099
1088 KABC::Addressee addr = mAddressBook->findByUid( localUID ); 1100 KABC::Addressee addr = mAddressBook->findByUid( localUID );
1089 if ( !addr.isEmpty() ) { 1101 if ( !addr.isEmpty() ) {
1090 mEditorDialog->setAddressee( addr ); 1102 mEditorDialog->setAddressee( addr );
1091 KApplication::execDialog ( mEditorDialog ); 1103 KApplication::execDialog ( mEditorDialog );
1092 } 1104 }
1093} 1105}
1094 1106
1095/** 1107/**
1096 Shows or edits the detail view for the given uid. If the uid is QString::null, 1108 Shows or edits the detail view for the given uid. If the uid is QString::null,
1097 the method will try to find a selected addressee in the view. 1109 the method will try to find a selected addressee in the view.
1098 */ 1110 */
1099void KABCore::executeContact( const QString &uid /*US = QString::null*/ ) 1111void KABCore::executeContact( const QString &uid /*US = QString::null*/ )
1100{ 1112{
1101 if ( mMultipleViewsAtOnce ) 1113 if ( mMultipleViewsAtOnce )
1102 { 1114 {
1103 editContact( uid ); 1115 editContact( uid );
1104 } 1116 }
1105 else 1117 else
1106 { 1118 {
1107 setDetailsVisible( true ); 1119 setDetailsVisible( true );
1108 mActionDetails->setChecked(true); 1120 mActionDetails->setChecked(true);
1109 } 1121 }
1110 1122
1111} 1123}
1112 1124
1113void KABCore::save() 1125void KABCore::save()
1114{ 1126{
1115 if ( !mModified ) 1127 if ( !mModified )
1116 return; 1128 return;
1117 QString text = i18n( "There was an error while attempting to save\n the " 1129 QString text = i18n( "There was an error while attempting to save\n the "
1118 "address book. Please check that some \nother application is " 1130 "address book. Please check that some \nother application is "
1119 "not using it. " ); 1131 "not using it. " );
1120 statusMessage(i18n("Saving addressbook ... ")); 1132 statusMessage(i18n("Saving addressbook ... "));
1121#ifndef KAB_EMBEDDED 1133#ifndef KAB_EMBEDDED
1122 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook ); 1134 KABC::StdAddressBook *b = dynamic_cast<KABC::StdAddressBook*>( mAddressBook );
1123 if ( !b || !b->save() ) { 1135 if ( !b || !b->save() ) {
1124 KMessageBox::error( this, text, i18n( "Unable to Save" ) ); 1136 KMessageBox::error( this, text, i18n( "Unable to Save" ) );
1125 } 1137 }
1126#else //KAB_EMBEDDED 1138#else //KAB_EMBEDDED
1127 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook ); 1139 KABC::StdAddressBook *b = (KABC::StdAddressBook*)( mAddressBook );
1128 if ( !b || !b->save() ) { 1140 if ( !b || !b->save() ) {
1129 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok")); 1141 QMessageBox::critical( this, i18n( "Unable to Save" ), text, i18n("Ok"));
1130 } 1142 }
1131#endif //KAB_EMBEDDED 1143#endif //KAB_EMBEDDED
1132 1144
1133 statusMessage(i18n("Addressbook saved!")); 1145 statusMessage(i18n("Addressbook saved!"));
1134 setModified( false ); 1146 setModified( false );
1135} 1147}
1136 1148
1137void KABCore::statusMessage(QString mess , int time ) 1149void KABCore::statusMessage(QString mess , int time )
1138{ 1150{
1139 //topLevelWidget()->setCaption( mess ); 1151 //topLevelWidget()->setCaption( mess );
1140 // pending setting timer to revome message 1152 // pending setting timer to revome message
1141} 1153}
1142void KABCore::undo() 1154void KABCore::undo()
1143{ 1155{
1144 UndoStack::instance()->undo(); 1156 UndoStack::instance()->undo();
1145 1157
1146 // Refresh the view 1158 // Refresh the view
1147 mViewManager->refreshView(); 1159 mViewManager->refreshView();
1148} 1160}
1149 1161
1150void KABCore::redo() 1162void KABCore::redo()
1151{ 1163{
1152 RedoStack::instance()->redo(); 1164 RedoStack::instance()->redo();
1153 1165
1154 // Refresh the view 1166 // Refresh the view
1155 mViewManager->refreshView(); 1167 mViewManager->refreshView();
1156} 1168}
1157 1169
1158void KABCore::setJumpButtonBarVisible( bool visible ) 1170void KABCore::setJumpButtonBarVisible( bool visible )
1159{ 1171{
1160 if (mMultipleViewsAtOnce) 1172 if (mMultipleViewsAtOnce)
1161 { 1173 {
1162 if ( visible ) 1174 if ( visible )
1163 mJumpButtonBar->show(); 1175 mJumpButtonBar->show();
1164 else 1176 else
1165 mJumpButtonBar->hide(); 1177 mJumpButtonBar->hide();
1166 } 1178 }
1167 else 1179 else
1168 { 1180 {
1169 // show the jumpbar only if "the details are hidden" == "viewmanager are shown" 1181 // show the jumpbar only if "the details are hidden" == "viewmanager are shown"
1170 if (mViewManager->isVisible()) 1182 if (mViewManager->isVisible())
1171 { 1183 {
1172 if ( visible ) 1184 if ( visible )
1173 mJumpButtonBar->show(); 1185 mJumpButtonBar->show();
1174 else 1186 else
1175 mJumpButtonBar->hide(); 1187 mJumpButtonBar->hide();
1176 } 1188 }
1177 else 1189 else
1178 { 1190 {
1179 mJumpButtonBar->hide(); 1191 mJumpButtonBar->hide();
1180 } 1192 }
1181 } 1193 }
1182} 1194}
1183 1195
1184 1196
1185void KABCore::setDetailsToState() 1197void KABCore::setDetailsToState()
1186{ 1198{
1187 setDetailsVisible( mActionDetails->isChecked() ); 1199 setDetailsVisible( mActionDetails->isChecked() );
1188} 1200}
1189 1201
1190 1202
1191 1203
1192void KABCore::setDetailsVisible( bool visible ) 1204void KABCore::setDetailsVisible( bool visible )
1193{ 1205{
1194 if (visible && mDetails->isHidden()) 1206 if (visible && mDetails->isHidden())
1195 { 1207 {
1196 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 1208 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
1197 if ( addrList.count() > 0 ) 1209 if ( addrList.count() > 0 )
1198 mDetails->setAddressee( addrList[ 0 ] ); 1210 mDetails->setAddressee( addrList[ 0 ] );
1199 } 1211 }
1200 1212
1201 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between 1213 // mMultipleViewsAtOnce=false: mDetails is always visible. But we switch between
1202 // the listview and the detailview. We do that by changing the splitbar size. 1214 // the listview and the detailview. We do that by changing the splitbar size.
1203 if (mMultipleViewsAtOnce) 1215 if (mMultipleViewsAtOnce)
1204 { 1216 {
1205 if ( visible ) 1217 if ( visible )
1206 mDetails->show(); 1218 mDetails->show();
1207 else 1219 else
1208 mDetails->hide(); 1220 mDetails->hide();
1209 } 1221 }
1210 else 1222 else
1211 { 1223 {
1212 if ( visible ) { 1224 if ( visible ) {
1213 mViewManager->hide(); 1225 mViewManager->hide();
1214 mDetails->show(); 1226 mDetails->show();
1215 } 1227 }
1216 else { 1228 else {
1217 mViewManager->show(); 1229 mViewManager->show();
1218 mDetails->hide(); 1230 mDetails->hide();
1219 } 1231 }
1220 setJumpButtonBarVisible( !visible ); 1232 setJumpButtonBarVisible( !visible );
1221 } 1233 }
1222 1234
1223} 1235}
1224 1236
1225void KABCore::extensionChanged( int id ) 1237void KABCore::extensionChanged( int id )
1226{ 1238{
1227 //change the details view only for non desktop systems 1239 //change the details view only for non desktop systems
1228#ifndef DESKTOP_VERSION 1240#ifndef DESKTOP_VERSION
1229 1241
1230 if (id == 0) 1242 if (id == 0)
1231 { 1243 {
1232 //the user disabled the extension. 1244 //the user disabled the extension.
1233 1245
1234 if (mMultipleViewsAtOnce) 1246 if (mMultipleViewsAtOnce)
1235 { // enable detailsview again 1247 { // enable detailsview again
1236 setDetailsVisible( true ); 1248 setDetailsVisible( true );
1237 mActionDetails->setChecked( true ); 1249 mActionDetails->setChecked( true );
1238 } 1250 }
1239 else 1251 else
1240 { //go back to the listview 1252 { //go back to the listview
1241 setDetailsVisible( false ); 1253 setDetailsVisible( false );
1242 mActionDetails->setChecked( false ); 1254 mActionDetails->setChecked( false );
1243 mActionDetails->setEnabled(true); 1255 mActionDetails->setEnabled(true);
1244 } 1256 }
1245 1257
1246 } 1258 }
1247 else 1259 else
1248 { 1260 {
1249 //the user enabled the extension. 1261 //the user enabled the extension.
1250 setDetailsVisible( false ); 1262 setDetailsVisible( false );
1251 mActionDetails->setChecked( false ); 1263 mActionDetails->setChecked( false );
1252 1264
1253 if (!mMultipleViewsAtOnce) 1265 if (!mMultipleViewsAtOnce)
1254 { 1266 {
1255 mActionDetails->setEnabled(false); 1267 mActionDetails->setEnabled(false);
1256 } 1268 }
1257 1269
1258 mExtensionManager->setSelectionChanged(); 1270 mExtensionManager->setSelectionChanged();
1259 1271
1260 } 1272 }
1261 1273
1262#endif// DESKTOP_VERSION 1274#endif// DESKTOP_VERSION
1263 1275
1264} 1276}
1265 1277
1266 1278
1267void KABCore::extensionModified( const KABC::Addressee::List &list ) 1279void KABCore::extensionModified( const KABC::Addressee::List &list )
1268{ 1280{
1269 1281
1270 if ( list.count() != 0 ) { 1282 if ( list.count() != 0 ) {
1271 KABC::Addressee::List::ConstIterator it; 1283 KABC::Addressee::List::ConstIterator it;
1272 for ( it = list.begin(); it != list.end(); ++it ) 1284 for ( it = list.begin(); it != list.end(); ++it )
1273 mAddressBook->insertAddressee( *it ); 1285 mAddressBook->insertAddressee( *it );
1274 if ( list.count() > 1 ) 1286 if ( list.count() > 1 )
1275 setModified(); 1287 setModified();
1276 else 1288 else
1277 setModifiedWOrefresh(); 1289 setModifiedWOrefresh();
1278 } 1290 }
1279 if ( list.count() == 0 ) 1291 if ( list.count() == 0 )
1280 mViewManager->refreshView(); 1292 mViewManager->refreshView();
1281 else 1293 else
1282 mViewManager->refreshView( list[ 0 ].uid() ); 1294 mViewManager->refreshView( list[ 0 ].uid() );
1283 1295
1284 1296
1285 1297
1286} 1298}
1287 1299
1288QString KABCore::getNameByPhone( const QString &phone ) 1300QString KABCore::getNameByPhone( const QString &phone )
1289{ 1301{
1290#ifndef KAB_EMBEDDED 1302#ifndef KAB_EMBEDDED
1291 QRegExp r( "[/*/-/ ]" ); 1303 QRegExp r( "[/*/-/ ]" );
1292 QString localPhone( phone ); 1304 QString localPhone( phone );
1293 1305
1294 bool found = false; 1306 bool found = false;
1295 QString ownerName = ""; 1307 QString ownerName = "";
1296 KABC::AddressBook::Iterator iter; 1308 KABC::AddressBook::Iterator iter;
1297 KABC::PhoneNumber::List::Iterator phoneIter; 1309 KABC::PhoneNumber::List::Iterator phoneIter;
1298 KABC::PhoneNumber::List phoneList; 1310 KABC::PhoneNumber::List phoneList;
1299 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) { 1311 for ( iter = mAddressBook->begin(); !found && ( iter != mAddressBook->end() ); ++iter ) {
1300 phoneList = (*iter).phoneNumbers(); 1312 phoneList = (*iter).phoneNumbers();
1301 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() ); 1313 for ( phoneIter = phoneList.begin(); !found && ( phoneIter != phoneList.end() );
1302 ++phoneIter) { 1314 ++phoneIter) {
1303 // Get rid of separator chars so just the numbers are compared. 1315 // Get rid of separator chars so just the numbers are compared.
1304 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) { 1316 if ( (*phoneIter).number().replace( r, "" ) == localPhone.replace( r, "" ) ) {
1305 ownerName = (*iter).formattedName(); 1317 ownerName = (*iter).formattedName();
1306 found = true; 1318 found = true;
1307 } 1319 }
1308 } 1320 }
1309 } 1321 }
1310 1322
1311 return ownerName; 1323 return ownerName;
1312#else //KAB_EMBEDDED 1324#else //KAB_EMBEDDED
1313 qDebug("KABCore::getNameByPhone finsih method"); 1325 qDebug("KABCore::getNameByPhone finsih method");
1314 return ""; 1326 return "";
1315#endif //KAB_EMBEDDED 1327#endif //KAB_EMBEDDED
1316 1328
1317} 1329}
1318 1330
1319void KABCore::openConfigDialog() 1331void KABCore::openConfigDialog()
1320{ 1332{
1321 KABPrefs* kab_prefs = KABPrefs::instance(); 1333 KABPrefs* kab_prefs = KABPrefs::instance();
1322 KPimGlobalPrefs* kpim_prefs = KPimGlobalPrefs::instance(); 1334 KPimGlobalPrefs* kpim_prefs = KPimGlobalPrefs::instance();
1323 1335
1324 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true ); 1336 KCMultiDialog* ConfigureDialog = new KCMultiDialog( "PIM", this ,"kabconfigdialog", true );
1325 KCMKabConfig* kabcfg = new KCMKabConfig( kab_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" ); 1337 KCMKabConfig* kabcfg = new KCMKabConfig( kab_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Addressbook")) , "KCMKabConfig" );
1326 ConfigureDialog->addModule(kabcfg ); 1338 ConfigureDialog->addModule(kabcfg );
1327 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( kpim_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" ); 1339 KCMKdePimConfig* kdelibcfg = new KCMKdePimConfig( kpim_prefs, ConfigureDialog->getNewVBoxPage(i18n( "Global")) , "KCMKdeLibConfig" );
1328 ConfigureDialog->addModule(kdelibcfg ); 1340 ConfigureDialog->addModule(kdelibcfg );
1329 1341
1330 1342
1331 1343
1332 connect( ConfigureDialog, SIGNAL( applyClicked() ), 1344 connect( ConfigureDialog, SIGNAL( applyClicked() ),
1333 this, SLOT( configurationChanged() ) ); 1345 this, SLOT( configurationChanged() ) );
1334 connect( ConfigureDialog, SIGNAL( okClicked() ), 1346 connect( ConfigureDialog, SIGNAL( okClicked() ),
1335 this, SLOT( configurationChanged() ) ); 1347 this, SLOT( configurationChanged() ) );
1336 saveSettings(); 1348 saveSettings();
1337#ifndef DESKTOP_VERSION 1349#ifndef DESKTOP_VERSION
1338 ConfigureDialog->showMaximized(); 1350 ConfigureDialog->showMaximized();
1339#endif 1351#endif
1340 if ( ConfigureDialog->exec() ) 1352 if ( ConfigureDialog->exec() )
1341 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") ); 1353 KMessageBox::information( this, i18n("Some changes are only\neffective after a restart!\n") );
1342 delete ConfigureDialog; 1354 delete ConfigureDialog;
1343} 1355}
1344 1356
1345void KABCore::openLDAPDialog() 1357void KABCore::openLDAPDialog()
1346{ 1358{
1347#ifndef KAB_EMBEDDED 1359#ifndef KAB_EMBEDDED
1348 if ( !mLdapSearchDialog ) { 1360 if ( !mLdapSearchDialog ) {
1349 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this ); 1361 mLdapSearchDialog = new LDAPSearchDialog( mAddressBook, this );
1350 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager, 1362 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), mViewManager,
1351 SLOT( refreshView() ) ); 1363 SLOT( refreshView() ) );
1352 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this, 1364 connect( mLdapSearchDialog, SIGNAL( addresseesAdded() ), this,
1353 SLOT( setModified() ) ); 1365 SLOT( setModified() ) );
1354 } else 1366 } else
1355 mLdapSearchDialog->restoreSettings(); 1367 mLdapSearchDialog->restoreSettings();
1356 1368
1357 if ( mLdapSearchDialog->isOK() ) 1369 if ( mLdapSearchDialog->isOK() )
1358 mLdapSearchDialog->exec(); 1370 mLdapSearchDialog->exec();
1359#else //KAB_EMBEDDED 1371#else //KAB_EMBEDDED
1360 qDebug("KABCore::openLDAPDialog() finsih method"); 1372 qDebug("KABCore::openLDAPDialog() finsih method");
1361#endif //KAB_EMBEDDED 1373#endif //KAB_EMBEDDED
1362} 1374}
1363 1375
1364void KABCore::print() 1376void KABCore::print()
1365{ 1377{
1366#ifndef KAB_EMBEDDED 1378#ifndef KAB_EMBEDDED
1367 KPrinter printer; 1379 KPrinter printer;
1368 if ( !printer.setup( this ) ) 1380 if ( !printer.setup( this ) )
1369 return; 1381 return;
1370 1382
1371 KABPrinting::PrintingWizard wizard( &printer, mAddressBook, 1383 KABPrinting::PrintingWizard wizard( &printer, mAddressBook,
1372 mViewManager->selectedUids(), this ); 1384 mViewManager->selectedUids(), this );
1373 1385
1374 wizard.exec(); 1386 wizard.exec();
1375#else //KAB_EMBEDDED 1387#else //KAB_EMBEDDED
1376 qDebug("KABCore::print() finsih method"); 1388 qDebug("KABCore::print() finsih method");
1377#endif //KAB_EMBEDDED 1389#endif //KAB_EMBEDDED
1378 1390
1379} 1391}
1380 1392
1381 1393
1382void KABCore::addGUIClient( KXMLGUIClient *client ) 1394void KABCore::addGUIClient( KXMLGUIClient *client )
1383{ 1395{
1384 if ( mGUIClient ) 1396 if ( mGUIClient )
1385 mGUIClient->insertChildClient( client ); 1397 mGUIClient->insertChildClient( client );
1386 else 1398 else
1387 KMessageBox::error( this, "no KXMLGUICLient"); 1399 KMessageBox::error( this, "no KXMLGUICLient");
1388} 1400}
1389 1401
1390 1402
1391void KABCore::configurationChanged() 1403void KABCore::configurationChanged()
1392{ 1404{
1393 mExtensionManager->reconfigure(); 1405 mExtensionManager->reconfigure();
1394} 1406}
1395 1407
1396void KABCore::addressBookChanged() 1408void KABCore::addressBookChanged()
1397{ 1409{
1398/*US 1410/*US
1399 QDictIterator<AddresseeEditorDialog> it( mEditorDict ); 1411 QDictIterator<AddresseeEditorDialog> it( mEditorDict );
1400 while ( it.current() ) { 1412 while ( it.current() ) {
1401 if ( it.current()->dirty() ) { 1413 if ( it.current()->dirty() ) {
1402 QString text = i18n( "Data has been changed externally. Unsaved " 1414 QString text = i18n( "Data has been changed externally. Unsaved "
1403 "changes will be lost." ); 1415 "changes will be lost." );
1404 KMessageBox::information( this, text ); 1416 KMessageBox::information( this, text );
1405 } 1417 }
1406 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) ); 1418 it.current()->setAddressee( mAddressBook->findByUid( it.currentKey() ) );
1407 ++it; 1419 ++it;
1408 } 1420 }
1409*/ 1421*/
1410 if (mEditorDialog) 1422 if (mEditorDialog)
1411 { 1423 {
1412 if (mEditorDialog->dirty()) 1424 if (mEditorDialog->dirty())
1413 { 1425 {
1414 QString text = i18n( "Data has been changed externally. Unsaved " 1426 QString text = i18n( "Data has been changed externally. Unsaved "
1415 "changes will be lost." ); 1427 "changes will be lost." );
1416 KMessageBox::information( this, text ); 1428 KMessageBox::information( this, text );
1417 } 1429 }
1418 QString currentuid = mEditorDialog->addressee().uid(); 1430 QString currentuid = mEditorDialog->addressee().uid();
1419 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) ); 1431 mEditorDialog->setAddressee( mAddressBook->findByUid( currentuid ) );
1420 } 1432 }
1421 mViewManager->refreshView(); 1433 mViewManager->refreshView();
1422// mDetails->refreshView(); 1434// mDetails->refreshView();
1423 1435
1424 1436
1425} 1437}
1426 1438
1427AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent, 1439AddresseeEditorDialog *KABCore::createAddresseeEditorDialog( QWidget *parent,
1428 const char *name ) 1440 const char *name )
1429{ 1441{
1430 1442
1431 if ( mEditorDialog == 0 ) { 1443 if ( mEditorDialog == 0 ) {
1432 mEditorDialog = new AddresseeEditorDialog( this, parent, 1444 mEditorDialog = new AddresseeEditorDialog( this, parent,
1433 name ? name : "editorDialog" ); 1445 name ? name : "editorDialog" );
1434 1446
1435 1447
1436 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ), 1448 connect( mEditorDialog, SIGNAL( contactModified( const KABC::Addressee& ) ),
1437 SLOT( contactModified( const KABC::Addressee& ) ) ); 1449 SLOT( contactModified( const KABC::Addressee& ) ) );
1438 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ), 1450 //connect( mEditorDialog, SIGNAL( editorDestroyed( const QString& ) ),
1439 // SLOT( slotEditorDestroyed( const QString& ) ) ); 1451 // SLOT( slotEditorDestroyed( const QString& ) ) );
1440 } 1452 }
1441 1453
1442 return mEditorDialog; 1454 return mEditorDialog;
1443} 1455}
1444 1456
1445void KABCore::slotEditorDestroyed( const QString &uid ) 1457void KABCore::slotEditorDestroyed( const QString &uid )
1446{ 1458{
1447 //mEditorDict.remove( uid ); 1459 //mEditorDict.remove( uid );
1448} 1460}
1449 1461
1450void KABCore::initGUI() 1462void KABCore::initGUI()
1451{ 1463{
1452#ifndef KAB_EMBEDDED 1464#ifndef KAB_EMBEDDED
1453 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1465 QHBoxLayout *topLayout = new QHBoxLayout( this );
1454 topLayout->setSpacing( KDialogBase::spacingHint() ); 1466 topLayout->setSpacing( KDialogBase::spacingHint() );
1455 1467
1456 mExtensionBarSplitter = new QSplitter( this ); 1468 mExtensionBarSplitter = new QSplitter( this );
1457 mExtensionBarSplitter->setOrientation( Qt::Vertical ); 1469 mExtensionBarSplitter->setOrientation( Qt::Vertical );
1458 1470
1459 mDetailsSplitter = new QSplitter( mExtensionBarSplitter ); 1471 mDetailsSplitter = new QSplitter( mExtensionBarSplitter );
1460 1472
1461 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1473 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1462 mIncSearchWidget = new IncSearchWidget( viewSpace ); 1474 mIncSearchWidget = new IncSearchWidget( viewSpace );
1463 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1475 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1464 SLOT( incrementalSearch( const QString& ) ) ); 1476 SLOT( incrementalSearch( const QString& ) ) );
1465 1477
1466 mViewManager = new ViewManager( this, viewSpace ); 1478 mViewManager = new ViewManager( this, viewSpace );
1467 viewSpace->setStretchFactor( mViewManager, 1 ); 1479 viewSpace->setStretchFactor( mViewManager, 1 );
1468 1480
1469 mDetails = new ViewContainer( mDetailsSplitter ); 1481 mDetails = new ViewContainer( mDetailsSplitter );
1470 1482
1471 mJumpButtonBar = new JumpButtonBar( this, this ); 1483 mJumpButtonBar = new JumpButtonBar( this, this );
1472 1484
1473 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1485 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1474 1486
1475 topLayout->addWidget( mExtensionBarSplitter ); 1487 topLayout->addWidget( mExtensionBarSplitter );
1476 topLayout->setStretchFactor( mExtensionBarSplitter, 100 ); 1488 topLayout->setStretchFactor( mExtensionBarSplitter, 100 );
1477 topLayout->addWidget( mJumpButtonBar ); 1489 topLayout->addWidget( mJumpButtonBar );
1478 topLayout->setStretchFactor( mJumpButtonBar, 1 ); 1490 topLayout->setStretchFactor( mJumpButtonBar, 1 );
1479 1491
1480 mXXPortManager = new XXPortManager( this, this ); 1492 mXXPortManager = new XXPortManager( this, this );
1481 1493
1482#else //KAB_EMBEDDED 1494#else //KAB_EMBEDDED
1483 //US initialize viewMenu before settingup viewmanager. 1495 //US initialize viewMenu before settingup viewmanager.
1484 // Viewmanager needs this menu to plugin submenues. 1496 // Viewmanager needs this menu to plugin submenues.
1485 viewMenu = new QPopupMenu( this ); 1497 viewMenu = new QPopupMenu( this );
1486 settingsMenu = new QPopupMenu( this ); 1498 settingsMenu = new QPopupMenu( this );
1487 //filterMenu = new QPopupMenu( this ); 1499 //filterMenu = new QPopupMenu( this );
1488 ImportMenu = new QPopupMenu( this ); 1500 ImportMenu = new QPopupMenu( this );
1489 ExportMenu = new QPopupMenu( this ); 1501 ExportMenu = new QPopupMenu( this );
1490 1502
1491 changeMenu= new QPopupMenu( this ); 1503 changeMenu= new QPopupMenu( this );
1492 1504
1493//US since we have no splitter for the embedded system, setup 1505//US since we have no splitter for the embedded system, setup
1494// a layout with two frames. One left and one right. 1506// a layout with two frames. One left and one right.
1495 1507
1496 QBoxLayout *topLayout; 1508 QBoxLayout *topLayout;
1497 1509
1498 // = new QHBoxLayout( this ); 1510 // = new QHBoxLayout( this );
1499// QBoxLayout *topLayout = (QBoxLayout*)layout(); 1511// QBoxLayout *topLayout = (QBoxLayout*)layout();
1500 1512
1501// QWidget *mainBox = new QWidget( this ); 1513// QWidget *mainBox = new QWidget( this );
1502// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox); 1514// QBoxLayout * mainBoxLayout = new QHBoxLayout(mainBox);
1503 1515
1504#ifdef DESKTOP_VERSION 1516#ifdef DESKTOP_VERSION
1505 topLayout = new QHBoxLayout( this ); 1517 topLayout = new QHBoxLayout( this );
1506 1518
1507 1519
1508 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1520 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1509 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1521 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1510 1522
1511 topLayout->addWidget(mMiniSplitter ); 1523 topLayout->addWidget(mMiniSplitter );
1512 1524
1513 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter ); 1525 mExtensionBarSplitter = new KDGanttMinimizeSplitter( Qt::Vertical,mMiniSplitter );
1514 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1526 mExtensionBarSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1515 mViewManager = new ViewManager( this, mExtensionBarSplitter ); 1527 mViewManager = new ViewManager( this, mExtensionBarSplitter );
1516 mDetails = new ViewContainer( mMiniSplitter ); 1528 mDetails = new ViewContainer( mMiniSplitter );
1517 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter ); 1529 mExtensionManager = new ExtensionManager( this, mExtensionBarSplitter );
1518#else 1530#else
1519 if ( QApplication::desktop()->width() > 480 ) { 1531 if ( QApplication::desktop()->width() > 480 ) {
1520 topLayout = new QHBoxLayout( this ); 1532 topLayout = new QHBoxLayout( this );
1521 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this); 1533 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, this);
1522 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 1534 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
1523 } else { 1535 } else {
1524 1536
1525 topLayout = new QHBoxLayout( this ); 1537 topLayout = new QHBoxLayout( this );
1526 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this); 1538 mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Vertical, this);
1527 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down ); 1539 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Down );
1528 } 1540 }
1529 1541
1530 topLayout->addWidget(mMiniSplitter ); 1542 topLayout->addWidget(mMiniSplitter );
1531 mViewManager = new ViewManager( this, mMiniSplitter ); 1543 mViewManager = new ViewManager( this, mMiniSplitter );
1532 mDetails = new ViewContainer( mMiniSplitter ); 1544 mDetails = new ViewContainer( mMiniSplitter );
1533 1545
1534 1546
1535 mExtensionManager = new ExtensionManager( this, mMiniSplitter ); 1547 mExtensionManager = new ExtensionManager( this, mMiniSplitter );
1536#endif 1548#endif
1537 //eh->hide(); 1549 //eh->hide();
1538 // topLayout->addWidget(mExtensionManager ); 1550 // topLayout->addWidget(mExtensionManager );
1539 1551
1540 1552
1541/*US 1553/*US
1542#ifndef KAB_NOSPLITTER 1554#ifndef KAB_NOSPLITTER
1543 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1555 QHBoxLayout *topLayout = new QHBoxLayout( this );
1544//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1556//US topLayout->setSpacing( KDialogBase::spacingHint() );
1545 topLayout->setSpacing( 10 ); 1557 topLayout->setSpacing( 10 );
1546 1558
1547 mDetailsSplitter = new QSplitter( this ); 1559 mDetailsSplitter = new QSplitter( this );
1548 1560
1549 QVBox *viewSpace = new QVBox( mDetailsSplitter ); 1561 QVBox *viewSpace = new QVBox( mDetailsSplitter );
1550 1562
1551 mViewManager = new ViewManager( this, viewSpace ); 1563 mViewManager = new ViewManager( this, viewSpace );
1552 viewSpace->setStretchFactor( mViewManager, 1 ); 1564 viewSpace->setStretchFactor( mViewManager, 1 );
1553 1565
1554 mDetails = new ViewContainer( mDetailsSplitter ); 1566 mDetails = new ViewContainer( mDetailsSplitter );
1555 1567
1556 topLayout->addWidget( mDetailsSplitter ); 1568 topLayout->addWidget( mDetailsSplitter );
1557 topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1569 topLayout->setStretchFactor( mDetailsSplitter, 100 );
1558#else //KAB_NOSPLITTER 1570#else //KAB_NOSPLITTER
1559 QHBoxLayout *topLayout = new QHBoxLayout( this ); 1571 QHBoxLayout *topLayout = new QHBoxLayout( this );
1560//US topLayout->setSpacing( KDialogBase::spacingHint() ); 1572//US topLayout->setSpacing( KDialogBase::spacingHint() );
1561 topLayout->setSpacing( 10 ); 1573 topLayout->setSpacing( 10 );
1562 1574
1563// mDetailsSplitter = new QSplitter( this ); 1575// mDetailsSplitter = new QSplitter( this );
1564 1576
1565 QVBox *viewSpace = new QVBox( this ); 1577 QVBox *viewSpace = new QVBox( this );
1566 1578
1567 mViewManager = new ViewManager( this, viewSpace ); 1579 mViewManager = new ViewManager( this, viewSpace );
1568 viewSpace->setStretchFactor( mViewManager, 1 ); 1580 viewSpace->setStretchFactor( mViewManager, 1 );
1569 1581
1570 mDetails = new ViewContainer( this ); 1582 mDetails = new ViewContainer( this );
1571 1583
1572 topLayout->addWidget( viewSpace ); 1584 topLayout->addWidget( viewSpace );
1573// topLayout->setStretchFactor( mDetailsSplitter, 100 ); 1585// topLayout->setStretchFactor( mDetailsSplitter, 100 );
1574 topLayout->addWidget( mDetails ); 1586 topLayout->addWidget( mDetails );
1575#endif //KAB_NOSPLITTER 1587#endif //KAB_NOSPLITTER
1576*/ 1588*/
1577 1589
1578 1590
1579#endif //KAB_EMBEDDED 1591#endif //KAB_EMBEDDED
1580 initActions(); 1592 initActions();
1581 1593
1582#ifdef KAB_EMBEDDED 1594#ifdef KAB_EMBEDDED
1583 addActionsManually(); 1595 addActionsManually();
1584 //US make sure the export and import menues are initialized before creating the xxPortManager. 1596 //US make sure the export and import menues are initialized before creating the xxPortManager.
1585 mXXPortManager = new XXPortManager( this, this ); 1597 mXXPortManager = new XXPortManager( this, this );
1586 1598
1587 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() ); 1599 // LR mIncSearchWidget = new IncSearchWidget( mMainWindow->getIconToolBar() );
1588 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget); 1600 //mMainWindow->toolBar()->insertWidget(-1, 4, mIncSearchWidget);
1589 // mActionQuit->plug ( mMainWindow->toolBar()); 1601 // mActionQuit->plug ( mMainWindow->toolBar());
1590 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() ); 1602 //mIncSearchWidget = new IncSearchWidget( mMainWindow->toolBar() );
1591 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget); 1603 //mMainWindow->toolBar()->insertWidget(-1, 0, mIncSearchWidget);
1592 // mIncSearchWidget->hide(); 1604 // mIncSearchWidget->hide();
1593 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1605 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1594 SLOT( incrementalSearch( const QString& ) ) ); 1606 SLOT( incrementalSearch( const QString& ) ) );
1595 1607
1596 1608
1597 mJumpButtonBar = new JumpButtonBar( this, this ); 1609 mJumpButtonBar = new JumpButtonBar( this, this );
1598 1610
1599 topLayout->addWidget( mJumpButtonBar ); 1611 topLayout->addWidget( mJumpButtonBar );
1600//US topLayout->setStretchFactor( mJumpButtonBar, 10 ); 1612//US topLayout->setStretchFactor( mJumpButtonBar, 10 );
1601 1613
1602// mMainWindow->getIconToolBar()->raise(); 1614// mMainWindow->getIconToolBar()->raise();
1603 1615
1604#endif //KAB_EMBEDDED 1616#endif //KAB_EMBEDDED
1605 1617
1606} 1618}
1607void KABCore::initActions() 1619void KABCore::initActions()
1608{ 1620{
1609//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1621//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1610 1622
1611#ifndef KAB_EMBEDDED 1623#ifndef KAB_EMBEDDED
1612 connect( QApplication::clipboard(), SIGNAL( dataChanged() ), 1624 connect( QApplication::clipboard(), SIGNAL( dataChanged() ),
1613 SLOT( clipboardDataChanged() ) ); 1625 SLOT( clipboardDataChanged() ) );
1614#endif //KAB_EMBEDDED 1626#endif //KAB_EMBEDDED
1615 1627
1616 // file menu 1628 // file menu
1617 if ( mIsPart ) { 1629 if ( mIsPart ) {
1618 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this, 1630 mActionMail = new KAction( i18n( "&Mail" ), "mail_generic", 0, this,
1619 SLOT( sendMail() ), actionCollection(), 1631 SLOT( sendMail() ), actionCollection(),
1620 "kaddressbook_mail" ); 1632 "kaddressbook_mail" );
1621 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this, 1633 mActionPrint = new KAction( i18n( "&Print" ), "fileprint", CTRL + Key_P, this,
1622 SLOT( print() ), actionCollection(), "kaddressbook_print" ); 1634 SLOT( print() ), actionCollection(), "kaddressbook_print" );
1623 1635
1624 } else { 1636 } else {
1625 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() ); 1637 mActionMail = KStdAction::mail( this, SLOT( sendMail() ), actionCollection() );
1626 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() ); 1638 mActionPrint = KStdAction::print( this, SLOT( print() ), actionCollection() );
1627 } 1639 }
1628 1640
1629 1641
1630 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this, 1642 mActionSave = new KAction( i18n( "&Save" ), "filesave", CTRL+Key_S, this,
1631 SLOT( save() ), actionCollection(), "file_sync" ); 1643 SLOT( save() ), actionCollection(), "file_sync" );
1632 1644
1633 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this, 1645 mActionNewContact = new KAction( i18n( "&New Contact..." ), "filenew", CTRL+Key_N, this,
1634 SLOT( newContact() ), actionCollection(), "file_new_contact" ); 1646 SLOT( newContact() ), actionCollection(), "file_new_contact" );
1635 1647
1636 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0, 1648 mActionMailVCard = new KAction(i18n("Mail &vCard..."), "mail_post_to", 0,
1637 this, SLOT( mailVCard() ), 1649 this, SLOT( mailVCard() ),
1638 actionCollection(), "file_mail_vcard"); 1650 actionCollection(), "file_mail_vcard");
1639 1651
1640 mActionBeamVCard = 0; 1652 mActionBeamVCard = 0;
1641 mActionBeam = 0; 1653 mActionBeam = 0;
1642 1654
1643#ifndef DESKTOP_VERSION 1655#ifndef DESKTOP_VERSION
1644 if ( Ir::supported() ) { 1656 if ( Ir::supported() ) {
1645 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this, 1657 mActionBeamVCard = new KAction( i18n( "Beam selected v&Card(s)" ), "beam", 0, this,
1646 SLOT( beamVCard() ), actionCollection(), 1658 SLOT( beamVCard() ), actionCollection(),
1647 "kaddressbook_beam_vcard" ); 1659 "kaddressbook_beam_vcard" );
1648 1660
1649 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this, 1661 mActionBeam = new KAction( i18n( "&Beam personal vCard" ), "beam", 0, this,
1650 SLOT( beamMySelf() ), actionCollection(), 1662 SLOT( beamMySelf() ), actionCollection(),
1651 "kaddressbook_beam_myself" ); 1663 "kaddressbook_beam_myself" );
1652 } 1664 }
1653#endif 1665#endif
1654 1666
1655 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0, 1667 mActionEditAddressee = new KAction( i18n( "&Edit Contact..." ), "edit", 0,
1656 this, SLOT( editContact2() ), 1668 this, SLOT( editContact2() ),
1657 actionCollection(), "file_properties" ); 1669 actionCollection(), "file_properties" );
1658 1670
1659#ifdef KAB_EMBEDDED 1671#ifdef KAB_EMBEDDED
1660 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() ); 1672 // mActionQuit = KStdAction::quit( mMainWindow, SLOT( exit() ), actionCollection() );
1661 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0, 1673 mActionQuit = new KAction( i18n( "&Exit" ), "exit", 0,
1662 mMainWindow, SLOT( exit() ), 1674 mMainWindow, SLOT( exit() ),
1663 actionCollection(), "quit" ); 1675 actionCollection(), "quit" );
1664#endif //KAB_EMBEDDED 1676#endif //KAB_EMBEDDED
1665 1677
1666 // edit menu 1678 // edit menu
1667 if ( mIsPart ) { 1679 if ( mIsPart ) {
1668 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this, 1680 mActionCopy = new KAction( i18n( "&Copy" ), "editcopy", CTRL + Key_C, this,
1669 SLOT( copyContacts() ), actionCollection(), 1681 SLOT( copyContacts() ), actionCollection(),
1670 "kaddressbook_copy" ); 1682 "kaddressbook_copy" );
1671 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this, 1683 mActionCut = new KAction( i18n( "Cu&t" ), "editcut", CTRL + Key_X, this,
1672 SLOT( cutContacts() ), actionCollection(), 1684 SLOT( cutContacts() ), actionCollection(),
1673 "kaddressbook_cut" ); 1685 "kaddressbook_cut" );
1674 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this, 1686 mActionPaste = new KAction( i18n( "&Paste" ), "editpaste", CTRL + Key_V, this,
1675 SLOT( pasteContacts() ), actionCollection(), 1687 SLOT( pasteContacts() ), actionCollection(),
1676 "kaddressbook_paste" ); 1688 "kaddressbook_paste" );
1677 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this, 1689 mActionSelectAll = new KAction( i18n( "Select &All" ), CTRL + Key_A, this,
1678 SLOT( selectAllContacts() ), actionCollection(), 1690 SLOT( selectAllContacts() ), actionCollection(),
1679 "kaddressbook_select_all" ); 1691 "kaddressbook_select_all" );
1680 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this, 1692 mActionUndo = new KAction( i18n( "&Undo" ), "undo", CTRL + Key_Z, this,
1681 SLOT( undo() ), actionCollection(), 1693 SLOT( undo() ), actionCollection(),
1682 "kaddressbook_undo" ); 1694 "kaddressbook_undo" );
1683 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z, 1695 mActionRedo = new KAction( i18n( "Re&do" ), "redo", CTRL + SHIFT + Key_Z,
1684 this, SLOT( redo() ), actionCollection(), 1696 this, SLOT( redo() ), actionCollection(),
1685 "kaddressbook_redo" ); 1697 "kaddressbook_redo" );
1686 } else { 1698 } else {
1687 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() ); 1699 mActionCopy = KStdAction::copy( this, SLOT( copyContacts() ), actionCollection() );
1688 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() ); 1700 mActionCut = KStdAction::cut( this, SLOT( cutContacts() ), actionCollection() );
1689 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() ); 1701 mActionPaste = KStdAction::paste( this, SLOT( pasteContacts() ), actionCollection() );
1690 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() ); 1702 mActionSelectAll = KStdAction::selectAll( this, SLOT( selectAllContacts() ), actionCollection() );
1691 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() ); 1703 mActionUndo = KStdAction::undo( this, SLOT( undo() ), actionCollection() );
1692 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() ); 1704 mActionRedo = KStdAction::redo( this, SLOT( redo() ), actionCollection() );
1693 } 1705 }
1694 1706
1695 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete", 1707 mActionDelete = new KAction( i18n( "&Delete Contact" ), "editdelete",
1696 Key_Delete, this, SLOT( deleteContacts() ), 1708 Key_Delete, this, SLOT( deleteContacts() ),
1697 actionCollection(), "edit_delete" ); 1709 actionCollection(), "edit_delete" );
1698 1710
1699 mActionUndo->setEnabled( false ); 1711 mActionUndo->setEnabled( false );
1700 mActionRedo->setEnabled( false ); 1712 mActionRedo->setEnabled( false );
1701 1713
1702 // settings menu 1714 // settings menu
1703#ifdef KAB_EMBEDDED 1715#ifdef KAB_EMBEDDED
1704//US special menuentry to configure the addressbook resources. On KDE 1716//US special menuentry to configure the addressbook resources. On KDE
1705// you do that through the control center !!! 1717// you do that through the control center !!!
1706 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this, 1718 mActionConfigResources = new KAction( i18n( "Configure &Resources..." ), "configure_resources", 0, this,
1707 SLOT( configureResources() ), actionCollection(), 1719 SLOT( configureResources() ), actionCollection(),
1708 "kaddressbook_configure_resources" ); 1720 "kaddressbook_configure_resources" );
1709#endif //KAB_EMBEDDED 1721#endif //KAB_EMBEDDED
1710 1722
1711 if ( mIsPart ) { 1723 if ( mIsPart ) {
1712 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this, 1724 mActionConfigKAddressbook = new KAction( i18n( "&Configure KAddressBook..." ), "configure", 0, this,
1713 SLOT( openConfigDialog() ), actionCollection(), 1725 SLOT( openConfigDialog() ), actionCollection(),
1714 "kaddressbook_configure" ); 1726 "kaddressbook_configure" );
1715 1727
1716 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0, 1728 mActionConfigShortcuts = new KAction( i18n( "Configure S&hortcuts..." ), "configure_shortcuts", 0,
1717 this, SLOT( configureKeyBindings() ), actionCollection(), 1729 this, SLOT( configureKeyBindings() ), actionCollection(),
1718 "kaddressbook_configure_shortcuts" ); 1730 "kaddressbook_configure_shortcuts" );
1719#ifdef KAB_EMBEDDED 1731#ifdef KAB_EMBEDDED
1720 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() ); 1732 mActionConfigureToolbars = KStdAction::configureToolbars( this, SLOT( mMainWindow->configureToolbars() ), actionCollection() );
1721 mActionConfigureToolbars->setEnabled( false ); 1733 mActionConfigureToolbars->setEnabled( false );
1722#endif //KAB_EMBEDDED 1734#endif //KAB_EMBEDDED
1723 1735
1724 } else { 1736 } else {
1725 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1737 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1726 1738
1727 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1739 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1728 } 1740 }
1729 1741
1730 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1742 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1731 actionCollection(), "options_show_jump_bar" ); 1743 actionCollection(), "options_show_jump_bar" );
1732 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1744 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1733 1745
1734 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 1746 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
1735 actionCollection(), "options_show_details" ); 1747 actionCollection(), "options_show_details" );
1736 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1748 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1737 1749
1738 // misc 1750 // misc
1739 // only enable LDAP lookup if we can handle the protocol 1751 // only enable LDAP lookup if we can handle the protocol
1740#ifndef KAB_EMBEDDED 1752#ifndef KAB_EMBEDDED
1741 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1753 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1742 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1754 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
1743 this, SLOT( openLDAPDialog() ), actionCollection(), 1755 this, SLOT( openLDAPDialog() ), actionCollection(),
1744 "ldap_lookup" ); 1756 "ldap_lookup" );
1745 } 1757 }
1746#else //KAB_EMBEDDED 1758#else //KAB_EMBEDDED
1747 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1759 //qDebug("KABCore::initActions() LDAP has to be implemented");
1748#endif //KAB_EMBEDDED 1760#endif //KAB_EMBEDDED
1749 1761
1750 1762
1751 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1763 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1752 SLOT( setWhoAmI() ), actionCollection(), 1764 SLOT( setWhoAmI() ), actionCollection(),
1753 "set_personal" ); 1765 "set_personal" );
1754 1766
1755 1767
1756 1768
1757 1769
1758 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1770 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
1759 SLOT( setCategories() ), actionCollection(), 1771 SLOT( setCategories() ), actionCollection(),
1760 "edit_set_categories" ); 1772 "edit_set_categories" );
1761 1773
1762 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 1774 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
1763 SLOT( removeVoice() ), actionCollection(), 1775 SLOT( removeVoice() ), actionCollection(),
1764 "remove_voice" ); 1776 "remove_voice" );
1765 mActionImportOL = new KAction( i18n( "Import from OL..." ), 0, this, 1777 mActionImportOL = new KAction( i18n( "Import from OL..." ), 0, this,
1766 SLOT( importFromOL() ), actionCollection(), 1778 SLOT( importFromOL() ), actionCollection(),
1767 "import_OL" ); 1779 "import_OL" );
1768#ifdef KAB_EMBEDDED 1780#ifdef KAB_EMBEDDED
1769 mActionLicence = new KAction( i18n( "Licence" ), 0, 1781 mActionLicence = new KAction( i18n( "Licence" ), 0,
1770 this, SLOT( showLicence() ), actionCollection(), 1782 this, SLOT( showLicence() ), actionCollection(),
1771 "licence_about_data" ); 1783 "licence_about_data" );
1772 mActionFaq = new KAction( i18n( "Faq" ), 0, 1784 mActionFaq = new KAction( i18n( "Faq" ), 0,
1773 this, SLOT( faq() ), actionCollection(), 1785 this, SLOT( faq() ), actionCollection(),
1774 "faq_about_data" ); 1786 "faq_about_data" );
1775 1787
1776 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1788 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1777 this, SLOT( createAboutData() ), actionCollection(), 1789 this, SLOT( createAboutData() ), actionCollection(),
1778 "kaddressbook_about_data" ); 1790 "kaddressbook_about_data" );
1779#endif //KAB_EMBEDDED 1791#endif //KAB_EMBEDDED
1780 1792
1781 clipboardDataChanged(); 1793 clipboardDataChanged();
1782 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1794 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1783 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1795 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1784} 1796}
1785 1797
1786//US we need this function, to plug all actions into the correct menues. 1798//US we need this function, to plug all actions into the correct menues.
1787// KDE uses a XML format to plug the actions, but we work her without this overhead. 1799// KDE uses a XML format to plug the actions, but we work her without this overhead.
1788void KABCore::addActionsManually() 1800void KABCore::addActionsManually()
1789{ 1801{
1790//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1802//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1791 1803
1792#ifdef KAB_EMBEDDED 1804#ifdef KAB_EMBEDDED
1793 QPopupMenu *fileMenu = new QPopupMenu( this ); 1805 QPopupMenu *fileMenu = new QPopupMenu( this );
1794 QPopupMenu *editMenu = new QPopupMenu( this ); 1806 QPopupMenu *editMenu = new QPopupMenu( this );
1795 QPopupMenu *helpMenu = new QPopupMenu( this ); 1807 QPopupMenu *helpMenu = new QPopupMenu( this );
1796 1808
1797 KToolBar* tb = mMainWindow->toolBar(); 1809 KToolBar* tb = mMainWindow->toolBar();
1798 1810
1799#ifdef DESKTOP_VERSION 1811#ifdef DESKTOP_VERSION
1800 QMenuBar* mb = mMainWindow->menuBar(); 1812 QMenuBar* mb = mMainWindow->menuBar();
1801 1813
1802 //US setup menubar. 1814 //US setup menubar.
1803 //Disable the following block if you do not want to have a menubar. 1815 //Disable the following block if you do not want to have a menubar.
1804 mb->insertItem( "&File", fileMenu ); 1816 mb->insertItem( "&File", fileMenu );
1805 mb->insertItem( "&Edit", editMenu ); 1817 mb->insertItem( "&Edit", editMenu );
1806 mb->insertItem( "&View", viewMenu ); 1818 mb->insertItem( "&View", viewMenu );
1807 mb->insertItem( "&Settings", settingsMenu ); 1819 mb->insertItem( "&Settings", settingsMenu );
1808 mb->insertItem( "&Change selected", changeMenu ); 1820 mb->insertItem( "&Change selected", changeMenu );
1809 mb->insertItem( "&Help", helpMenu ); 1821 mb->insertItem( "&Help", helpMenu );
1810 mIncSearchWidget = new IncSearchWidget( tb ); 1822 mIncSearchWidget = new IncSearchWidget( tb );
1811 // tb->insertWidget(-1, 0, mIncSearchWidget); 1823 // tb->insertWidget(-1, 0, mIncSearchWidget);
1812 1824
1813#else 1825#else
1814 //US setup toolbar 1826 //US setup toolbar
1815 QMenuBar *menuBarTB = new QMenuBar( tb ); 1827 QMenuBar *menuBarTB = new QMenuBar( tb );
1816 QPopupMenu *popupBarTB = new QPopupMenu( this ); 1828 QPopupMenu *popupBarTB = new QPopupMenu( this );
1817 menuBarTB->insertItem( "ME", popupBarTB); 1829 menuBarTB->insertItem( "ME", popupBarTB);
1818 tb->insertWidget(-1, 0, menuBarTB); 1830 tb->insertWidget(-1, 0, menuBarTB);
1819 mIncSearchWidget = new IncSearchWidget( tb ); 1831 mIncSearchWidget = new IncSearchWidget( tb );
1820 1832
1821 tb->enableMoving(false); 1833 tb->enableMoving(false);
1822 popupBarTB->insertItem( "&File", fileMenu ); 1834 popupBarTB->insertItem( "&File", fileMenu );
1823 popupBarTB->insertItem( "&Edit", editMenu ); 1835 popupBarTB->insertItem( "&Edit", editMenu );
1824 popupBarTB->insertItem( "&View", viewMenu ); 1836 popupBarTB->insertItem( "&View", viewMenu );
1825 popupBarTB->insertItem( "&Settings", settingsMenu ); 1837 popupBarTB->insertItem( "&Settings", settingsMenu );
1826 mViewManager->getFilterAction()->plug ( popupBarTB); 1838 mViewManager->getFilterAction()->plug ( popupBarTB);
1827 popupBarTB->insertItem( "&Change selected", changeMenu ); 1839 popupBarTB->insertItem( "&Change selected", changeMenu );
1828 popupBarTB->insertItem( "&Help", helpMenu ); 1840 popupBarTB->insertItem( "&Help", helpMenu );
1829 if (QApplication::desktop()->width() > 320 ) { 1841 if (QApplication::desktop()->width() > 320 ) {
1830 // mViewManager->getFilterAction()->plug ( tb); 1842 // mViewManager->getFilterAction()->plug ( tb);
1831 } 1843 }
1832#endif 1844#endif
1833 // mActionQuit->plug ( mMainWindow->toolBar()); 1845 // mActionQuit->plug ( mMainWindow->toolBar());
1834 1846
1835 1847
1836 1848
1837 //US Now connect the actions with the menue entries. 1849 //US Now connect the actions with the menue entries.
1838 mActionPrint->plug( fileMenu ); 1850 mActionPrint->plug( fileMenu );
1839 mActionMail->plug( fileMenu ); 1851 mActionMail->plug( fileMenu );
1840 fileMenu->insertSeparator(); 1852 fileMenu->insertSeparator();
1841 1853
1842 mActionNewContact->plug( fileMenu ); 1854 mActionNewContact->plug( fileMenu );
1843 mActionNewContact->plug( tb ); 1855 mActionNewContact->plug( tb );
1844 1856
1845 mActionEditAddressee->plug( fileMenu ); 1857 mActionEditAddressee->plug( fileMenu );
1846 if ((KGlobal::getDesktopSize() > KGlobal::Small ) || 1858 if ((KGlobal::getDesktopSize() > KGlobal::Small ) ||
1847 (!KABPrefs::instance()->mMultipleViewsAtOnce )) 1859 (!KABPrefs::instance()->mMultipleViewsAtOnce ))
1848 mActionEditAddressee->plug( tb ); 1860 mActionEditAddressee->plug( tb );
1849 1861
1850 fileMenu->insertSeparator(); 1862 fileMenu->insertSeparator();
1851 mActionSave->plug( fileMenu ); 1863 mActionSave->plug( fileMenu );
1852 fileMenu->insertItem( "&Import", ImportMenu ); 1864 fileMenu->insertItem( "&Import", ImportMenu );
1853 fileMenu->insertItem( "&Emport", ExportMenu ); 1865 fileMenu->insertItem( "&Emport", ExportMenu );
1854 fileMenu->insertSeparator(); 1866 fileMenu->insertSeparator();
1855 mActionMailVCard->plug( fileMenu ); 1867 mActionMailVCard->plug( fileMenu );
1856#ifndef DESKTOP_VERSION 1868#ifndef DESKTOP_VERSION
1857 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu ); 1869 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu );
1858 if ( Ir::supported() ) mActionBeam->plug(fileMenu ); 1870 if ( Ir::supported() ) mActionBeam->plug(fileMenu );
1859#endif 1871#endif
1860 fileMenu->insertSeparator(); 1872 fileMenu->insertSeparator();
1861 mActionQuit->plug( fileMenu ); 1873 mActionQuit->plug( fileMenu );
1862#ifdef _WIN32_ 1874#ifdef _WIN32_
1863 mActionImportOL->plug( ImportMenu ); 1875 mActionImportOL->plug( ImportMenu );
1864#endif 1876#endif
1865 // edit menu 1877 // edit menu
1866 mActionUndo->plug( editMenu ); 1878 mActionUndo->plug( editMenu );
1867 mActionRedo->plug( editMenu ); 1879 mActionRedo->plug( editMenu );
1868 editMenu->insertSeparator(); 1880 editMenu->insertSeparator();
1869 mActionCut->plug( editMenu ); 1881 mActionCut->plug( editMenu );
1870 mActionCopy->plug( editMenu ); 1882 mActionCopy->plug( editMenu );
1871 mActionPaste->plug( editMenu ); 1883 mActionPaste->plug( editMenu );
1872 mActionDelete->plug( editMenu ); 1884 mActionDelete->plug( editMenu );
1873 editMenu->insertSeparator(); 1885 editMenu->insertSeparator();
1874 mActionSelectAll->plug( editMenu ); 1886 mActionSelectAll->plug( editMenu );
1875 1887
1876 mActionRemoveVoice->plug( changeMenu ); 1888 mActionRemoveVoice->plug( changeMenu );
1877 // settings menu 1889 // settings menu
1878//US special menuentry to configure the addressbook resources. On KDE 1890//US special menuentry to configure the addressbook resources. On KDE
1879// you do that through the control center !!! 1891// you do that through the control center !!!
1880 mActionConfigResources->plug( settingsMenu ); 1892 mActionConfigResources->plug( settingsMenu );
1881 settingsMenu->insertSeparator(); 1893 settingsMenu->insertSeparator();
1882 1894
1883 mActionConfigKAddressbook->plug( settingsMenu ); 1895 mActionConfigKAddressbook->plug( settingsMenu );
1884 1896
1885 if ( mIsPart ) { 1897 if ( mIsPart ) {
1886 mActionConfigShortcuts->plug( settingsMenu ); 1898 mActionConfigShortcuts->plug( settingsMenu );
1887 mActionConfigureToolbars->plug( settingsMenu ); 1899 mActionConfigureToolbars->plug( settingsMenu );
1888 1900
1889 } else { 1901 } else {
1890 mActionKeyBindings->plug( settingsMenu ); 1902 mActionKeyBindings->plug( settingsMenu );
1891 } 1903 }
1892 1904
1893 settingsMenu->insertSeparator(); 1905 settingsMenu->insertSeparator();
1894 1906
1895 mActionJumpBar->plug( settingsMenu ); 1907 mActionJumpBar->plug( settingsMenu );
1896 mActionDetails->plug( settingsMenu ); 1908 mActionDetails->plug( settingsMenu );
1897 if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop ) 1909 if (!KABPrefs::instance()->mMultipleViewsAtOnce || KGlobal::getDesktopSize() == KGlobal::Desktop )
1898 mActionDetails->plug( tb ); 1910 mActionDetails->plug( tb );
1899 settingsMenu->insertSeparator(); 1911 settingsMenu->insertSeparator();
1900 1912
1901 mActionWhoAmI->plug( settingsMenu ); 1913 mActionWhoAmI->plug( settingsMenu );
1902 mActionCategories->plug( settingsMenu ); 1914 mActionCategories->plug( settingsMenu );
1903 1915
1904 mActionLicence->plug( helpMenu ); 1916 mActionLicence->plug( helpMenu );
1905 mActionFaq->plug( helpMenu ); 1917 mActionFaq->plug( helpMenu );
1906 mActionAboutKAddressbook->plug( helpMenu ); 1918 mActionAboutKAddressbook->plug( helpMenu );
1907 1919
1908 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 1920 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
1909 1921
1910 mActionSave->plug( tb ); 1922 mActionSave->plug( tb );
1911 mViewManager->getFilterAction()->plug ( tb); 1923 mViewManager->getFilterAction()->plug ( tb);
1912 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) { 1924 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) {
1913 mActionUndo->plug( tb ); 1925 mActionUndo->plug( tb );
1914 mActionDelete->plug( tb ); 1926 mActionDelete->plug( tb );
1915 mActionRedo->plug( tb ); 1927 mActionRedo->plug( tb );
1916 } 1928 }
1917 } 1929 }
1918 //mActionQuit->plug ( tb ); 1930 //mActionQuit->plug ( tb );
1919 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 1931 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
1920 1932
1921 //US link the searchwidget first to this. 1933 //US link the searchwidget first to this.
1922 // The real linkage to the toolbar happens later. 1934 // The real linkage to the toolbar happens later.
1923//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 1935//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
1924//US tb->insertItem( mIncSearchWidget ); 1936//US tb->insertItem( mIncSearchWidget );
1925/*US 1937/*US
1926 mIncSearchWidget = new IncSearchWidget( tb ); 1938 mIncSearchWidget = new IncSearchWidget( tb );
1927 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1939 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1928 SLOT( incrementalSearch( const QString& ) ) ); 1940 SLOT( incrementalSearch( const QString& ) ) );
1929 1941
1930 mJumpButtonBar = new JumpButtonBar( this, this ); 1942 mJumpButtonBar = new JumpButtonBar( this, this );
1931 1943
1932//US topLayout->addWidget( mJumpButtonBar ); 1944//US topLayout->addWidget( mJumpButtonBar );
1933 this->layout()->add( mJumpButtonBar ); 1945 this->layout()->add( mJumpButtonBar );
1934*/ 1946*/
1935 1947
1936#endif //KAB_EMBEDDED 1948#endif //KAB_EMBEDDED
1937} 1949}
1938void KABCore::showLicence() 1950void KABCore::showLicence()
1939{ 1951{
1940 KApplication::showLicence(); 1952 KApplication::showLicence();
1941} 1953}
1942void KABCore::removeVoice() 1954void KABCore::removeVoice()
1943{ 1955{
1944 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 ) 1956 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 )
1945 return; 1957 return;
1946 KABC::Addressee::List list = mViewManager->selectedAddressees(); 1958 KABC::Addressee::List list = mViewManager->selectedAddressees();
1947 KABC::Addressee::List::Iterator it; 1959 KABC::Addressee::List::Iterator it;
1948 for ( it = list.begin(); it != list.end(); ++it ) { 1960 for ( it = list.begin(); it != list.end(); ++it ) {
1949 PhoneNumber::List phoneNumbers = (*it).phoneNumbers(); 1961 PhoneNumber::List phoneNumbers = (*it).phoneNumbers();
1950 PhoneNumber::List::Iterator phoneIt; 1962 PhoneNumber::List::Iterator phoneIt;
1951 bool found = false; 1963 bool found = false;
1952 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) { 1964 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) {
1953 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found 1965 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found
1954 if ((*phoneIt).type() - PhoneNumber::Voice ) { 1966 if ((*phoneIt).type() - PhoneNumber::Voice ) {
1955 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice ); 1967 (*phoneIt).setType((*phoneIt).type() - PhoneNumber::Voice );
1956 (*it).insertPhoneNumber( (*phoneIt) ); 1968 (*it).insertPhoneNumber( (*phoneIt) );
1957 found = true; 1969 found = true;
1958 } 1970 }
1959 } 1971 }
1960 1972
1961 } 1973 }
1962 if ( found ) 1974 if ( found )
1963 contactModified((*it) ); 1975 contactModified((*it) );
1964 } 1976 }
1965} 1977}
1966 1978
1967 1979
1968 1980
1969void KABCore::clipboardDataChanged() 1981void KABCore::clipboardDataChanged()
1970{ 1982{
1971 1983
1972 if ( mReadWrite ) 1984 if ( mReadWrite )
1973 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() ); 1985 mActionPaste->setEnabled( !QApplication::clipboard()->text().isEmpty() );
1974 1986
1975} 1987}
1976 1988
1977void KABCore::updateActionMenu() 1989void KABCore::updateActionMenu()
1978{ 1990{
1979 UndoStack *undo = UndoStack::instance(); 1991 UndoStack *undo = UndoStack::instance();
1980 RedoStack *redo = RedoStack::instance(); 1992 RedoStack *redo = RedoStack::instance();
1981 1993
1982 if ( undo->isEmpty() ) 1994 if ( undo->isEmpty() )
1983 mActionUndo->setText( i18n( "Undo" ) ); 1995 mActionUndo->setText( i18n( "Undo" ) );
1984 else 1996 else
1985 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) ); 1997 mActionUndo->setText( i18n( "Undo %1" ).arg( undo->top()->name() ) );
1986 1998
1987 mActionUndo->setEnabled( !undo->isEmpty() ); 1999 mActionUndo->setEnabled( !undo->isEmpty() );
1988 2000
1989 if ( !redo->top() ) 2001 if ( !redo->top() )
1990 mActionRedo->setText( i18n( "Redo" ) ); 2002 mActionRedo->setText( i18n( "Redo" ) );
1991 else 2003 else
1992 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) ); 2004 mActionRedo->setText( i18n( "Redo %1" ).arg( redo->top()->name() ) );
1993 2005
1994 mActionRedo->setEnabled( !redo->isEmpty() ); 2006 mActionRedo->setEnabled( !redo->isEmpty() );
1995} 2007}
1996 2008
1997void KABCore::configureKeyBindings() 2009void KABCore::configureKeyBindings()
1998{ 2010{
1999#ifndef KAB_EMBEDDED 2011#ifndef KAB_EMBEDDED
2000 KKeyDialog::configure( actionCollection(), true ); 2012 KKeyDialog::configure( actionCollection(), true );
2001#else //KAB_EMBEDDED 2013#else //KAB_EMBEDDED
2002 qDebug("KABCore::configureKeyBindings() not implemented"); 2014 qDebug("KABCore::configureKeyBindings() not implemented");
2003#endif //KAB_EMBEDDED 2015#endif //KAB_EMBEDDED
2004} 2016}
2005 2017
2006#ifdef KAB_EMBEDDED 2018#ifdef KAB_EMBEDDED
2007void KABCore::configureResources() 2019void KABCore::configureResources()
2008{ 2020{
2009 KRES::KCMKResources dlg( this, "" , 0 ); 2021 KRES::KCMKResources dlg( this, "" , 0 );
2010 2022
2011 if ( !dlg.exec() ) 2023 if ( !dlg.exec() )
2012 return; 2024 return;
2013 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") ); 2025 KMessageBox::information( this, i18n("Please restart to get the \nchanged resources (re)loaded!\n") );
2014} 2026}
2015#endif //KAB_EMBEDDED 2027#endif //KAB_EMBEDDED
2016 2028
2017 2029
2018/* this method will be called through the QCop interface from Ko/Pi to select addresses 2030/* this method will be called through the QCop interface from Ko/Pi to select addresses
2019 * for the attendees list of an event. 2031 * for the attendees list of an event.
2020 */ 2032 */
2021void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid) 2033void KABCore::requestForNameEmailUidList(const QString& sourceChannel, const QString& uid)
2022{ 2034{
2023 QStringList nameList; 2035 QStringList nameList;
2024 QStringList emailList; 2036 QStringList emailList;
2025 QStringList uidList; 2037 QStringList uidList;
2026 2038
2027 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 2039 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
2028 uint i=0; 2040 uint i=0;
2029 for (i=0; i < list.count(); i++) 2041 for (i=0; i < list.count(); i++)
2030 { 2042 {
2031 nameList.append(list[i].realName()); 2043 nameList.append(list[i].realName());
2032 emailList.append(list[i].preferredEmail()); 2044 emailList.append(list[i].preferredEmail());
2033 uidList.append(list[i].uid()); 2045 uidList.append(list[i].uid());
2034 } 2046 }
2035 2047
2036 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList); 2048 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI(sourceChannel, uid, nameList, emailList, uidList);
2037 2049
2038} 2050}
2039 2051
2040/* this method will be called through the QCop interface from other apps to show details of a contact. 2052/* this method will be called through the QCop interface from other apps to show details of a contact.
2041 */ 2053 */
2042void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid) 2054void KABCore::requestForDetails(const QString& sourceChannel, const QString& sessionuid, const QString& name, const QString& email, const QString& uid)
2043{ 2055{
2044 qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1()); 2056 qDebug("KABCore::requestForDetails %s %s %s %s %s", sourceChannel.latin1(), sessionuid.latin1(), name.latin1(), email.latin1(), uid.latin1());
2045 2057
2046 QString foundUid = QString::null; 2058 QString foundUid = QString::null;
2047 if ( ! uid.isEmpty() ) { 2059 if ( ! uid.isEmpty() ) {
2048 Addressee adrr = mAddressBook->findByUid( uid ); 2060 Addressee adrr = mAddressBook->findByUid( uid );
2049 if ( !adrr.isEmpty() ) { 2061 if ( !adrr.isEmpty() ) {
2050 foundUid = uid; 2062 foundUid = uid;
2051 } 2063 }
2052 if ( email == "sendbacklist" ) { 2064 if ( email == "sendbacklist" ) {
2053 qDebug("ssssssssssssssssssssssend "); 2065 qDebug("ssssssssssssssssssssssend ");
2054 QStringList nameList; 2066 QStringList nameList;
2055 QStringList emailList; 2067 QStringList emailList;
2056 QStringList uidList; 2068 QStringList uidList;
2057 nameList.append(adrr.realName()); 2069 nameList.append(adrr.realName());
2058 emailList = adrr.emails(); 2070 emailList = adrr.emails();
2059 uidList.append( adrr.preferredEmail()); 2071 uidList.append( adrr.preferredEmail());
2060 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 2072 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
2061 return; 2073 return;
2062 } 2074 }
2063 2075
2064 } 2076 }
2065 2077
2066 if ( email == "sendback" ) 2078 if ( email == "sendback" )
2067 return; 2079 return;
2068 if (foundUid.isEmpty()) 2080 if (foundUid.isEmpty())
2069 { 2081 {
2070 //find the uid of the person first 2082 //find the uid of the person first
2071 Addressee::List namelist; 2083 Addressee::List namelist;
2072 Addressee::List emaillist; 2084 Addressee::List emaillist;
2073 2085
2074 if (!name.isEmpty()) 2086 if (!name.isEmpty())
2075 namelist = mAddressBook->findByName( name ); 2087 namelist = mAddressBook->findByName( name );
2076 2088
2077 if (!email.isEmpty()) 2089 if (!email.isEmpty())
2078 emaillist = mAddressBook->findByEmail( email ); 2090 emaillist = mAddressBook->findByEmail( email );
2079 qDebug("count %d %d ", namelist.count(),emaillist.count() ); 2091 qDebug("count %d %d ", namelist.count(),emaillist.count() );
2080 //check if we have a match in Namelist and Emaillist 2092 //check if we have a match in Namelist and Emaillist
2081 if ((namelist.count() == 0) && (emaillist.count() > 0)) { 2093 if ((namelist.count() == 0) && (emaillist.count() > 0)) {
2082 foundUid = emaillist[0].uid(); 2094 foundUid = emaillist[0].uid();
2083 } 2095 }
2084 else if ((namelist.count() > 0) && (emaillist.count() == 0)) 2096 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2085 foundUid = namelist[0].uid(); 2097 foundUid = namelist[0].uid();
2086 else 2098 else
2087 { 2099 {
2088 for (int i = 0; i < namelist.count(); i++) 2100 for (int i = 0; i < namelist.count(); i++)
2089 { 2101 {
2090 for (int j = 0; j < emaillist.count(); j++) 2102 for (int j = 0; j < emaillist.count(); j++)
2091 { 2103 {
2092 if (namelist[i] == emaillist[j]) 2104 if (namelist[i] == emaillist[j])
2093 { 2105 {
2094 foundUid = namelist[i].uid(); 2106 foundUid = namelist[i].uid();
2095 } 2107 }
2096 } 2108 }
2097 } 2109 }
2098 } 2110 }
2099 } 2111 }
2100 else 2112 else
2101 { 2113 {
2102 foundUid = uid; 2114 foundUid = uid;
2103 } 2115 }
2104 2116
2105 if (!foundUid.isEmpty()) 2117 if (!foundUid.isEmpty())
2106 { 2118 {
2107 2119
2108 // raise Ka/Pi if it is in the background 2120 // raise Ka/Pi if it is in the background
2109#ifndef DESKTOP_VERSION 2121#ifndef DESKTOP_VERSION
2110#ifndef KORG_NODCOP 2122#ifndef KORG_NODCOP
2111 //QCopEnvelope e("QPE/Application/kapi", "raise()"); 2123 //QCopEnvelope e("QPE/Application/kapi", "raise()");
2112#endif 2124#endif
2113#endif 2125#endif
2114 2126
2115 mMainWindow->showMaximized(); 2127 mMainWindow->showMaximized();
2116 mMainWindow-> raise(); 2128 mMainWindow-> raise();
2117 2129
2118 mViewManager->setSelected( "", false); 2130 mViewManager->setSelected( "", false);
2119 mViewManager->refreshView( "" ); 2131 mViewManager->refreshView( "" );
2120 mViewManager->setSelected( foundUid, true ); 2132 mViewManager->setSelected( foundUid, true );
2121 mViewManager->refreshView( foundUid ); 2133 mViewManager->refreshView( foundUid );
2122 2134
2123 if ( !mMultipleViewsAtOnce ) 2135 if ( !mMultipleViewsAtOnce )
2124 { 2136 {
2125 setDetailsVisible( true ); 2137 setDetailsVisible( true );
2126 mActionDetails->setChecked(true); 2138 mActionDetails->setChecked(true);
2127 } 2139 }
2128 } 2140 }
2129} 2141}
2130 2142
2131 2143
2132void KABCore::faq() 2144void KABCore::faq()
2133{ 2145{
2134 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" ); 2146 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" );
2135} 2147}
2136 2148
2137 2149
2138 2150
2139 2151
2140#ifndef KAB_EMBEDDED 2152#ifndef KAB_EMBEDDED
2141#include "kabcore.moc" 2153#include "kabcore.moc"
2142#endif //KAB_EMBEDDED 2154#endif //KAB_EMBEDDED