summaryrefslogtreecommitdiffabout
authorulf69 <ulf69>2004-08-10 22:46:12 (UTC)
committer ulf69 <ulf69>2004-08-10 22:46:12 (UTC)
commit02d51ae409a353d3a79e976c26ccc1f652e55de8 (patch) (unidiff)
tree54d7a9f1eecd2ef9c3332f2bc22ff6ac6d9af335
parentdc81e96e29f619c6eb32c3ed18ff45b789c8504e (diff)
downloadkdepimpi-02d51ae409a353d3a79e976c26ccc1f652e55de8.zip
kdepimpi-02d51ae409a353d3a79e976c26ccc1f652e55de8.tar.gz
kdepimpi-02d51ae409a353d3a79e976c26ccc1f652e55de8.tar.bz2
final changes on how to send emails to selected contacts
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp26
1 files changed, 10 insertions, 16 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index d6f0cee..6610288 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -84,833 +84,827 @@
84#include <qpe/ir.h> 84#include <qpe/ir.h>
85#endif 85#endif
86 86
87#endif // KAB_EMBEDDED 87#endif // KAB_EMBEDDED
88#include "kcmconfigs/kcmkabconfig.h" 88#include "kcmconfigs/kcmkabconfig.h"
89#include "kcmconfigs/kcmkdepimconfig.h" 89#include "kcmconfigs/kcmkdepimconfig.h"
90#include "kpimglobalprefs.h" 90#include "kpimglobalprefs.h"
91#include "externalapphandler.h" 91#include "externalapphandler.h"
92 92
93 93
94#include <kresources/selectdialog.h> 94#include <kresources/selectdialog.h>
95#include <kmessagebox.h> 95#include <kmessagebox.h>
96 96
97#include <picture.h> 97#include <picture.h>
98#include <resource.h> 98#include <resource.h>
99 99
100//US#include <qsplitter.h> 100//US#include <qsplitter.h>
101#include <qmap.h> 101#include <qmap.h>
102#include <qdir.h> 102#include <qdir.h>
103#include <qfile.h> 103#include <qfile.h>
104#include <qvbox.h> 104#include <qvbox.h>
105#include <qlayout.h> 105#include <qlayout.h>
106#include <qclipboard.h> 106#include <qclipboard.h>
107#include <qtextstream.h> 107#include <qtextstream.h>
108 108
109#include <libkdepim/categoryselectdialog.h> 109#include <libkdepim/categoryselectdialog.h>
110#include <kabc/vcardconverter.h> 110#include <kabc/vcardconverter.h>
111 111
112 112
113#include "addresseeutil.h" 113#include "addresseeutil.h"
114#include "undocmds.h" 114#include "undocmds.h"
115#include "addresseeeditordialog.h" 115#include "addresseeeditordialog.h"
116#include "viewmanager.h" 116#include "viewmanager.h"
117#include "details/detailsviewcontainer.h" 117#include "details/detailsviewcontainer.h"
118#include "kabprefs.h" 118#include "kabprefs.h"
119#include "xxportmanager.h" 119#include "xxportmanager.h"
120#include "incsearchwidget.h" 120#include "incsearchwidget.h"
121#include "jumpbuttonbar.h" 121#include "jumpbuttonbar.h"
122#include "extensionmanager.h" 122#include "extensionmanager.h"
123#include "addresseeconfig.h" 123#include "addresseeconfig.h"
124#include <kcmultidialog.h> 124#include <kcmultidialog.h>
125 125
126#ifdef _WIN32_ 126#ifdef _WIN32_
127 127
128#include "kaimportoldialog.h" 128#include "kaimportoldialog.h"
129#endif 129#endif
130 130
131bool pasteWithNewUid = true; 131bool pasteWithNewUid = true;
132 132
133#ifdef KAB_EMBEDDED 133#ifdef KAB_EMBEDDED
134KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name ) 134KABCore::KABCore( KAddressBookMain *client, bool readWrite, QWidget *parent, const char *name )
135 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 135 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
136 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/ 136 mExtensionManager( 0 ),mConfigureDialog( 0 ),/*US mLdapSearchDialog( 0 ),*/
137 mReadWrite( readWrite ), mModified( false ), mMainWindow(client) 137 mReadWrite( readWrite ), mModified( false ), mMainWindow(client)
138#else //KAB_EMBEDDED 138#else //KAB_EMBEDDED
139KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name ) 139KABCore::KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, const char *name )
140 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ), 140 : QWidget( parent, name ), mGUIClient( client ), mViewManager( 0 ),
141 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ), 141 mExtensionManager( 0 ), mConfigureDialog( 0 ), mLdapSearchDialog( 0 ),
142 mReadWrite( readWrite ), mModified( false ) 142 mReadWrite( readWrite ), mModified( false )
143#endif //KAB_EMBEDDED 143#endif //KAB_EMBEDDED
144{ 144{
145 145
146 mExtensionBarSplitter = 0; 146 mExtensionBarSplitter = 0;
147 mIsPart = !parent->inherits( "KAddressBookMain" ); 147 mIsPart = !parent->inherits( "KAddressBookMain" );
148 148
149 mAddressBook = KABC::StdAddressBook::self(); 149 mAddressBook = KABC::StdAddressBook::self();
150 KABC::StdAddressBook::setAutomaticSave( false ); 150 KABC::StdAddressBook::setAutomaticSave( false );
151 151
152#ifndef KAB_EMBEDDED 152#ifndef KAB_EMBEDDED
153 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler ); 153 mAddressBook->setErrorHandler( new KABC::GUIErrorHandler );
154#endif //KAB_EMBEDDED 154#endif //KAB_EMBEDDED
155 155
156 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ), 156 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook * ) ),
157 SLOT( addressBookChanged() ) ); 157 SLOT( addressBookChanged() ) );
158 158
159 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization, 159 mAddressBook->addCustomField( i18n( "Department" ), KABC::Field::Organization,
160 "X-Department", "KADDRESSBOOK" ); 160 "X-Department", "KADDRESSBOOK" );
161 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization, 161 mAddressBook->addCustomField( i18n( "Profession" ), KABC::Field::Organization,
162 "X-Profession", "KADDRESSBOOK" ); 162 "X-Profession", "KADDRESSBOOK" );
163 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization, 163 mAddressBook->addCustomField( i18n( "Assistant's Name" ), KABC::Field::Organization,
164 "X-AssistantsName", "KADDRESSBOOK" ); 164 "X-AssistantsName", "KADDRESSBOOK" );
165 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization, 165 mAddressBook->addCustomField( i18n( "Manager's Name" ), KABC::Field::Organization,
166 "X-ManagersName", "KADDRESSBOOK" ); 166 "X-ManagersName", "KADDRESSBOOK" );
167 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal, 167 mAddressBook->addCustomField( i18n( "Spouse's Name" ), KABC::Field::Personal,
168 "X-SpousesName", "KADDRESSBOOK" ); 168 "X-SpousesName", "KADDRESSBOOK" );
169 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal, 169 mAddressBook->addCustomField( i18n( "Office" ), KABC::Field::Personal,
170 "X-Office", "KADDRESSBOOK" ); 170 "X-Office", "KADDRESSBOOK" );
171 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal, 171 mAddressBook->addCustomField( i18n( "IM Address" ), KABC::Field::Personal,
172 "X-IMAddress", "KADDRESSBOOK" ); 172 "X-IMAddress", "KADDRESSBOOK" );
173 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal, 173 mAddressBook->addCustomField( i18n( "Anniversary" ), KABC::Field::Personal,
174 "X-Anniversary", "KADDRESSBOOK" ); 174 "X-Anniversary", "KADDRESSBOOK" );
175 175
176 //US added this field to become compatible with Opie/qtopia addressbook 176 //US added this field to become compatible with Opie/qtopia addressbook
177 // values can be "female" or "male" or "". An empty field represents undefined. 177 // values can be "female" or "male" or "". An empty field represents undefined.
178 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal, 178 mAddressBook->addCustomField( i18n( "Gender" ), KABC::Field::Personal,
179 "X-Gender", "KADDRESSBOOK" ); 179 "X-Gender", "KADDRESSBOOK" );
180 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal, 180 mAddressBook->addCustomField( i18n( "Children" ), KABC::Field::Personal,
181 "X-Children", "KADDRESSBOOK" ); 181 "X-Children", "KADDRESSBOOK" );
182 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal, 182 mAddressBook->addCustomField( i18n( "FreeBusyUrl" ), KABC::Field::Personal,
183 "X-FreeBusyUrl", "KADDRESSBOOK" ); 183 "X-FreeBusyUrl", "KADDRESSBOOK" );
184 184
185 initGUI(); 185 initGUI();
186 186
187 mIncSearchWidget->setFocus(); 187 mIncSearchWidget->setFocus();
188 188
189 189
190 connect( mViewManager, SIGNAL( selected( const QString& ) ), 190 connect( mViewManager, SIGNAL( selected( const QString& ) ),
191 SLOT( setContactSelected( const QString& ) ) ); 191 SLOT( setContactSelected( const QString& ) ) );
192 connect( mViewManager, SIGNAL( executed( const QString& ) ), 192 connect( mViewManager, SIGNAL( executed( const QString& ) ),
193 SLOT( editContact( const QString& ) ) ); 193 SLOT( editContact( const QString& ) ) );
194 connect( mViewManager, SIGNAL( deleteRequest( ) ), 194 connect( mViewManager, SIGNAL( deleteRequest( ) ),
195 SLOT( deleteContacts( ) ) ); 195 SLOT( deleteContacts( ) ) );
196 connect( mViewManager, SIGNAL( modified() ), 196 connect( mViewManager, SIGNAL( modified() ),
197 SLOT( setModified() ) ); 197 SLOT( setModified() ) );
198 198
199 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) ); 199 connect( mExtensionManager, SIGNAL( modified( const KABC::Addressee::List& ) ), this, SLOT( extensionModified( const KABC::Addressee::List& ) ) );
200 200
201 connect( mXXPortManager, SIGNAL( modified() ), 201 connect( mXXPortManager, SIGNAL( modified() ),
202 SLOT( setModified() ) ); 202 SLOT( setModified() ) );
203 203
204 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ), 204 connect( mJumpButtonBar, SIGNAL( jumpToLetter( const QString& ) ),
205 SLOT( incrementalSearch( const QString& ) ) ); 205 SLOT( incrementalSearch( const QString& ) ) );
206 connect( mIncSearchWidget, SIGNAL( fieldChanged() ), 206 connect( mIncSearchWidget, SIGNAL( fieldChanged() ),
207 mJumpButtonBar, SLOT( recreateButtons() ) ); 207 mJumpButtonBar, SLOT( recreateButtons() ) );
208 208
209 connect( mDetails, SIGNAL( sendEmail( const QString& ) ), 209 connect( mDetails, SIGNAL( sendEmail( const QString& ) ),
210 SLOT( sendMail( const QString& ) ) ); 210 SLOT( sendMail( const QString& ) ) );
211 211
212#ifndef KAB_EMBEDDED 212#ifndef KAB_EMBEDDED
213 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ), 213 connect( mViewManager, SIGNAL( urlDropped( const KURL& ) ),
214 mXXPortManager, SLOT( importVCard( const KURL& ) ) ); 214 mXXPortManager, SLOT( importVCard( const KURL& ) ) );
215 215
216 connect( mDetails, SIGNAL( browse( const QString& ) ), 216 connect( mDetails, SIGNAL( browse( const QString& ) ),
217 SLOT( browse( const QString& ) ) ); 217 SLOT( browse( const QString& ) ) );
218 218
219 mAddressBookService = new KAddressBookService( this ); 219 mAddressBookService = new KAddressBookService( this );
220 220
221#endif //KAB_EMBEDDED 221#endif //KAB_EMBEDDED
222 mEditorDialog = 0; 222 mEditorDialog = 0;
223 createAddresseeEditorDialog( this ); 223 createAddresseeEditorDialog( this );
224 setModified( false ); 224 setModified( false );
225} 225}
226 226
227KABCore::~KABCore() 227KABCore::~KABCore()
228{ 228{
229 // save(); 229 // save();
230 //saveSettings(); 230 //saveSettings();
231 //KABPrefs::instance()->writeConfig(); 231 //KABPrefs::instance()->writeConfig();
232 delete AddresseeConfig::instance(); 232 delete AddresseeConfig::instance();
233 mAddressBook = 0; 233 mAddressBook = 0;
234 KABC::StdAddressBook::close(); 234 KABC::StdAddressBook::close();
235} 235}
236 236
237void KABCore::restoreSettings() 237void KABCore::restoreSettings()
238{ 238{
239 bool state = KABPrefs::instance()->mJumpButtonBarVisible; 239 bool state = KABPrefs::instance()->mJumpButtonBarVisible;
240 240
241 mActionJumpBar->setChecked( state ); 241 mActionJumpBar->setChecked( state );
242 setJumpButtonBarVisible( state ); 242 setJumpButtonBarVisible( state );
243 243
244 state = KABPrefs::instance()->mDetailsPageVisible; 244 state = KABPrefs::instance()->mDetailsPageVisible;
245 245
246 mActionDetails->setChecked( state ); 246 mActionDetails->setChecked( state );
247 setDetailsVisible( state ); 247 setDetailsVisible( state );
248 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter; 248 QValueList<int> splitterSize = KABPrefs::instance()->mDetailsSplitter;
249 if ( splitterSize.count() == 0 ) { 249 if ( splitterSize.count() == 0 ) {
250 splitterSize.append( width() / 2 ); 250 splitterSize.append( width() / 2 );
251 splitterSize.append( width() / 2 ); 251 splitterSize.append( width() / 2 );
252 } 252 }
253 mMiniSplitter->setSizes( splitterSize ); 253 mMiniSplitter->setSizes( splitterSize );
254 if ( mExtensionBarSplitter ) { 254 if ( mExtensionBarSplitter ) {
255 splitterSize = KABPrefs::instance()->mExtensionsSplitter; 255 splitterSize = KABPrefs::instance()->mExtensionsSplitter;
256 if ( splitterSize.count() == 0 ) { 256 if ( splitterSize.count() == 0 ) {
257 splitterSize.append( width() / 2 ); 257 splitterSize.append( width() / 2 );
258 splitterSize.append( width() / 2 ); 258 splitterSize.append( width() / 2 );
259 } 259 }
260 mExtensionBarSplitter->setSizes( splitterSize ); 260 mExtensionBarSplitter->setSizes( splitterSize );
261 261
262 } 262 }
263#ifndef KAB_EMBEDDED 263#ifndef KAB_EMBEDDED
264 QValueList<int> splitterSize = KABPrefs::instance()->mExtensionsSplitter; 264 QValueList<int> splitterSize = KABPrefs::instance()->mExtensionsSplitter;
265 if ( splitterSize.count() == 0 ) { 265 if ( splitterSize.count() == 0 ) {
266 splitterSize.append( width() / 2 ); 266 splitterSize.append( width() / 2 );
267 splitterSize.append( width() / 2 ); 267 splitterSize.append( width() / 2 );
268 } 268 }
269 mExtensionBarSplitter->setSizes( splitterSize ); 269 mExtensionBarSplitter->setSizes( splitterSize );
270 270
271 splitterSize = KABPrefs::instance()->mDetailsSplitter; 271 splitterSize = KABPrefs::instance()->mDetailsSplitter;
272 if ( splitterSize.count() == 0 ) { 272 if ( splitterSize.count() == 0 ) {
273 splitterSize.append( height() / 2 ); 273 splitterSize.append( height() / 2 );
274 splitterSize.append( height() / 2 ); 274 splitterSize.append( height() / 2 );
275 } 275 }
276 mDetailsSplitter->setSizes( splitterSize ); 276 mDetailsSplitter->setSizes( splitterSize );
277 277
278 mExtensionManager->restoreSettings(); 278 mExtensionManager->restoreSettings();
279 279
280#endif //KAB_EMBEDDED 280#endif //KAB_EMBEDDED
281 281
282 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField ); 282 mIncSearchWidget->setCurrentItem( KABPrefs::instance()->mCurrentIncSearchField );
283 283
284 mViewManager->restoreSettings(); 284 mViewManager->restoreSettings();
285 mExtensionManager->restoreSettings(); 285 mExtensionManager->restoreSettings();
286} 286}
287 287
288void KABCore::saveSettings() 288void KABCore::saveSettings()
289{ 289{
290 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked(); 290 KABPrefs::instance()->mJumpButtonBarVisible = mActionJumpBar->isChecked();
291 if ( mExtensionBarSplitter ) 291 if ( mExtensionBarSplitter )
292 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 292 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
293 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked(); 293 KABPrefs::instance()->mDetailsPageVisible = mActionDetails->isChecked();
294 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes(); 294 KABPrefs::instance()->mDetailsSplitter = mMiniSplitter->sizes();
295#ifndef KAB_EMBEDDED 295#ifndef KAB_EMBEDDED
296 296
297 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes(); 297 KABPrefs::instance()->mExtensionsSplitter = mExtensionBarSplitter->sizes();
298 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes(); 298 KABPrefs::instance()->mDetailsSplitter = mDetailsSplitter->sizes();
299#endif //KAB_EMBEDDED 299#endif //KAB_EMBEDDED
300 mExtensionManager->saveSettings(); 300 mExtensionManager->saveSettings();
301 mViewManager->saveSettings(); 301 mViewManager->saveSettings();
302 302
303 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem(); 303 KABPrefs::instance()->mCurrentIncSearchField = mIncSearchWidget->currentItem();
304 304
305} 305}
306 306
307KABC::AddressBook *KABCore::addressBook() const 307KABC::AddressBook *KABCore::addressBook() const
308{ 308{
309 return mAddressBook; 309 return mAddressBook;
310} 310}
311 311
312KConfig *KABCore::config() 312KConfig *KABCore::config()
313{ 313{
314#ifndef KAB_EMBEDDED 314#ifndef KAB_EMBEDDED
315 return KABPrefs::instance()->config(); 315 return KABPrefs::instance()->config();
316#else //KAB_EMBEDDED 316#else //KAB_EMBEDDED
317 return KABPrefs::instance()->getConfig(); 317 return KABPrefs::instance()->getConfig();
318#endif //KAB_EMBEDDED 318#endif //KAB_EMBEDDED
319} 319}
320 320
321KActionCollection *KABCore::actionCollection() const 321KActionCollection *KABCore::actionCollection() const
322{ 322{
323 return mGUIClient->actionCollection(); 323 return mGUIClient->actionCollection();
324} 324}
325 325
326KABC::Field *KABCore::currentSearchField() const 326KABC::Field *KABCore::currentSearchField() const
327{ 327{
328 if (mIncSearchWidget) 328 if (mIncSearchWidget)
329 return mIncSearchWidget->currentField(); 329 return mIncSearchWidget->currentField();
330 else 330 else
331 return 0; 331 return 0;
332} 332}
333 333
334QStringList KABCore::selectedUIDs() const 334QStringList KABCore::selectedUIDs() const
335{ 335{
336 return mViewManager->selectedUids(); 336 return mViewManager->selectedUids();
337} 337}
338 338
339KABC::Resource *KABCore::requestResource( QWidget *parent ) 339KABC::Resource *KABCore::requestResource( QWidget *parent )
340{ 340{
341 QPtrList<KABC::Resource> kabcResources = addressBook()->resources(); 341 QPtrList<KABC::Resource> kabcResources = addressBook()->resources();
342 342
343 QPtrList<KRES::Resource> kresResources; 343 QPtrList<KRES::Resource> kresResources;
344 QPtrListIterator<KABC::Resource> resIt( kabcResources ); 344 QPtrListIterator<KABC::Resource> resIt( kabcResources );
345 KABC::Resource *resource; 345 KABC::Resource *resource;
346 while ( ( resource = resIt.current() ) != 0 ) { 346 while ( ( resource = resIt.current() ) != 0 ) {
347 ++resIt; 347 ++resIt;
348 if ( !resource->readOnly() ) { 348 if ( !resource->readOnly() ) {
349 KRES::Resource *res = static_cast<KRES::Resource*>( resource ); 349 KRES::Resource *res = static_cast<KRES::Resource*>( resource );
350 if ( res ) 350 if ( res )
351 kresResources.append( res ); 351 kresResources.append( res );
352 } 352 }
353 } 353 }
354 354
355 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 355 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
356 return static_cast<KABC::Resource*>( res ); 356 return static_cast<KABC::Resource*>( res );
357} 357}
358 358
359#ifndef KAB_EMBEDDED 359#ifndef KAB_EMBEDDED
360KAboutData *KABCore::createAboutData() 360KAboutData *KABCore::createAboutData()
361#else //KAB_EMBEDDED 361#else //KAB_EMBEDDED
362void KABCore::createAboutData() 362void KABCore::createAboutData()
363#endif //KAB_EMBEDDED 363#endif //KAB_EMBEDDED
364{ 364{
365#ifndef KAB_EMBEDDED 365#ifndef KAB_EMBEDDED
366 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 366 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
367 "3.1", I18N_NOOP( "The KDE Address Book" ), 367 "3.1", I18N_NOOP( "The KDE Address Book" ),
368 KAboutData::License_GPL_V2, 368 KAboutData::License_GPL_V2,
369 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 369 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
370 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 370 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
371 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 371 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
372 about->addAuthor( "Cornelius Schumacher", 372 about->addAuthor( "Cornelius Schumacher",
373 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 373 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
374 "schumacher@kde.org" ); 374 "schumacher@kde.org" );
375 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 375 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
376 "mpilone@slac.com" ); 376 "mpilone@slac.com" );
377 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 377 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
378 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 378 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
379 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ), 379 about->addAuthor( "Michel Boyer de la Giroday", I18N_NOOP( "LDAP Lookup\n" ),
380 "michel@klaralvdalens-datakonsult.se" ); 380 "michel@klaralvdalens-datakonsult.se" );
381 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 381 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
382 "hansen@kde.org" ); 382 "hansen@kde.org" );
383 383
384 return about; 384 return about;
385#endif //KAB_EMBEDDED 385#endif //KAB_EMBEDDED
386 386
387 QString version; 387 QString version;
388#include <../version> 388#include <../version>
389 QMessageBox::about( this, "About KAddressbook/Pi", 389 QMessageBox::about( this, "About KAddressbook/Pi",
390 "KAddressbook/Platform-independent\n" 390 "KAddressbook/Platform-independent\n"
391 "(KA/Pi) " +version + " - " + 391 "(KA/Pi) " +version + " - " +
392#ifdef DESKTOP_VERSION 392#ifdef DESKTOP_VERSION
393 "Desktop Edition\n" 393 "Desktop Edition\n"
394#else 394#else
395 "PDA-Edition\n" 395 "PDA-Edition\n"
396 "for: Zaurus 5500 / 7x0 / 8x0\n" 396 "for: Zaurus 5500 / 7x0 / 8x0\n"
397#endif 397#endif
398 398
399 "(c) 2004 Ulf Schenk\n" 399 "(c) 2004 Ulf Schenk\n"
400 "(c) 1997-2003, The KDE PIM Team\n" 400 "(c) 1997-2003, The KDE PIM Team\n"
401 "Tobias Koenig Current maintainer tokoe@kde.org\n" 401 "Tobias Koenig Current maintainer tokoe@kde.org\n"
402 "Don Sanders Original author\n" 402 "Don Sanders Original author\n"
403 "Cornelius Schumacher Co-maintainer schumacher@kde.org\n" 403 "Cornelius Schumacher Co-maintainer schumacher@kde.org\n"
404 "Mike Pilone GUI and framework redesign mpilone@slac.com\n" 404 "Mike Pilone GUI and framework redesign mpilone@slac.com\n"
405 "Greg Stern DCOP interface\n" 405 "Greg Stern DCOP interface\n"
406 "Mark Westcot Contact pinning\n" 406 "Mark Westcot Contact pinning\n"
407 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n" 407 "Michel Boyer de la Giroday LDAP Lookup\n" "michel@klaralvdalens-datakonsult.se\n"
408 "Steffen Hansen LDAP Lookup hansen@kde.org\n" 408 "Steffen Hansen LDAP Lookup hansen@kde.org\n"
409#ifdef _WIN32_ 409#ifdef _WIN32_
410 "(c) 2004 Lutz Rogowski Import from OL rogowski@kde.org\n" 410 "(c) 2004 Lutz Rogowski Import from OL rogowski@kde.org\n"
411#endif 411#endif
412 ); 412 );
413} 413}
414 414
415void KABCore::setContactSelected( const QString &uid ) 415void KABCore::setContactSelected( const QString &uid )
416{ 416{
417 KABC::Addressee addr = mAddressBook->findByUid( uid ); 417 KABC::Addressee addr = mAddressBook->findByUid( uid );
418 if ( !mDetails->isHidden() ) 418 if ( !mDetails->isHidden() )
419 mDetails->setAddressee( addr ); 419 mDetails->setAddressee( addr );
420 420
421 if ( !addr.isEmpty() ) { 421 if ( !addr.isEmpty() ) {
422 emit contactSelected( addr.formattedName() ); 422 emit contactSelected( addr.formattedName() );
423 KABC::Picture pic = addr.photo(); 423 KABC::Picture pic = addr.photo();
424 if ( pic.isIntern() ) { 424 if ( pic.isIntern() ) {
425//US emit contactSelected( pic.data() ); 425//US emit contactSelected( pic.data() );
426//US instead use: 426//US instead use:
427 QPixmap px; 427 QPixmap px;
428 if (pic.data().isNull() != true) 428 if (pic.data().isNull() != true)
429 { 429 {
430 px.convertFromImage(pic.data()); 430 px.convertFromImage(pic.data());
431 } 431 }
432 432
433 emit contactSelected( px ); 433 emit contactSelected( px );
434 } 434 }
435 } 435 }
436 436
437 437
438 mExtensionManager->setSelectionChanged(); 438 mExtensionManager->setSelectionChanged();
439 439
440 // update the actions 440 // update the actions
441 bool selected = !uid.isEmpty(); 441 bool selected = !uid.isEmpty();
442 442
443 if ( mReadWrite ) { 443 if ( mReadWrite ) {
444 mActionCut->setEnabled( selected ); 444 mActionCut->setEnabled( selected );
445 mActionPaste->setEnabled( selected ); 445 mActionPaste->setEnabled( selected );
446 } 446 }
447 447
448 mActionCopy->setEnabled( selected ); 448 mActionCopy->setEnabled( selected );
449 mActionDelete->setEnabled( selected ); 449 mActionDelete->setEnabled( selected );
450 mActionEditAddressee->setEnabled( selected ); 450 mActionEditAddressee->setEnabled( selected );
451 mActionMail->setEnabled( selected ); 451 mActionMail->setEnabled( selected );
452 mActionMailVCard->setEnabled( selected ); 452 mActionMailVCard->setEnabled( selected );
453 //if (mActionBeam) 453 //if (mActionBeam)
454 //mActionBeam->setEnabled( selected ); 454 //mActionBeam->setEnabled( selected );
455 455
456 if (mActionBeamVCard) 456 if (mActionBeamVCard)
457 mActionBeamVCard->setEnabled( selected ); 457 mActionBeamVCard->setEnabled( selected );
458 458
459 mActionWhoAmI->setEnabled( selected ); 459 mActionWhoAmI->setEnabled( selected );
460 mActionCategories->setEnabled( selected ); 460 mActionCategories->setEnabled( selected );
461} 461}
462 462
463void KABCore::sendMail() 463void KABCore::sendMail()
464{ 464{
465 sendMail( mViewManager->selectedEmails().join( ", " ) ); 465 sendMail( mViewManager->selectedEmails().join( ", " ) );
466} 466}
467 467
468void KABCore::sendMail( const QString& email ) 468void KABCore::sendMail( const QString& emaillist )
469{ 469{
470 bool result = ExternalAppHandler::instance()->mailToContacts(email); 470 // the parameter has the form "name1 <abc@aol.com>,name2 <abc@aol.com>;... "
471 if (emaillist.contains(",") > 0)
472 ExternalAppHandler::instance()->mailToMultipleContacts( emaillist, QString::null );
473 else
474 ExternalAppHandler::instance()->mailToOneContact( emaillist );
471} 475}
472 476
473 477
474 478
475void KABCore::mailVCard() 479void KABCore::mailVCard()
476{ 480{
477 QStringList uids = mViewManager->selectedUids(); 481 QStringList uids = mViewManager->selectedUids();
478 if ( !uids.isEmpty() ) 482 if ( !uids.isEmpty() )
479 mailVCard( uids ); 483 mailVCard( uids );
480} 484}
481 485
482void KABCore::mailVCard( const QStringList& uids ) 486void KABCore::mailVCard( const QStringList& uids )
483{ 487{
484 QStringList urls; 488 QStringList urls;
485 489
486 QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 490// QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
487 491
488/*US 492 QString dirName = "/tmp/" + KApplication::randomString( 8 );
489 // Create a temp dir, so that we can put the files in it with proper names
490 KTempFile tempDir;
491 if ( tempDir.status() != 0 ) {
492 kdWarning() << strerror( tempDir.status() ) << endl;
493 return;
494 }
495
496 QString dirName = tempDir.name();
497 tempDir.unlink();
498*/
499 QString dirName = tmpdir + "/" + KApplication::randomString( 8 );
500 493
501 494
502 495
503 QDir().mkdir( dirName, true ); 496 QDir().mkdir( dirName, true );
504 497
505 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 498 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
506 KABC::Addressee a = mAddressBook->findByUid( *it ); 499 KABC::Addressee a = mAddressBook->findByUid( *it );
507 500
508 if ( a.isEmpty() ) 501 if ( a.isEmpty() )
509 continue; 502 continue;
510 503
511 QString name = a.givenName() + "_" + a.familyName() + ".vcf"; 504 QString name = a.givenName() + "_" + a.familyName() + ".vcf";
512 505
513 QString fileName = dirName + "/" + name; 506 QString fileName = dirName + "/" + name;
514 507
515 QFile outFile(fileName); 508 QFile outFile(fileName);
509
516 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 510 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
517 KABC::VCardConverter converter; 511 KABC::VCardConverter converter;
518 QString vcard; 512 QString vcard;
519 513
520 converter.addresseeToVCard( a, vcard ); 514 converter.addresseeToVCard( a, vcard );
521 515
522 QTextStream t( &outFile ); // use a text stream 516 QTextStream t( &outFile ); // use a text stream
523 t.setEncoding( QTextStream::UnicodeUTF8 ); 517 t.setEncoding( QTextStream::UnicodeUTF8 );
524 t << vcard; 518 t << vcard;
525 519
526 outFile.close(); 520 outFile.close();
527 521
528 urls.append( fileName ); 522 urls.append( fileName );
529 } 523 }
530 } 524 }
531 525
532 bool result = ExternalAppHandler::instance()->mailAttachments(urls.join(", ")); 526 bool result = ExternalAppHandler::instance()->mailToMultipleContacts( QString::null, urls.join(", ") );
533 527
534 528
535/*US 529/*US
536 kapp->invokeMailer( QString::null, QString::null, QString::null, 530 kapp->invokeMailer( QString::null, QString::null, QString::null,
537 QString::null, // subject 531 QString::null, // subject
538 QString::null, // body 532 QString::null, // body
539 QString::null, 533 QString::null,
540 urls ); // attachments 534 urls ); // attachments
541*/ 535*/
542 536
543} 537}
544 538
545/** 539/**
546 Beams the "WhoAmI contact. 540 Beams the "WhoAmI contact.
547*/ 541*/
548void KABCore::beamMySelf() 542void KABCore::beamMySelf()
549{ 543{
550 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI(); 544 KABC::Addressee a = KABC::StdAddressBook::self()->whoAmI();
551 if (!a.isEmpty()) 545 if (!a.isEmpty())
552 { 546 {
553 QStringList uids; 547 QStringList uids;
554 uids << a.uid(); 548 uids << a.uid();
555 549
556 beamVCard(uids); 550 beamVCard(uids);
557 } else { 551 } else {
558 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) ); 552 KMessageBox::information( this, i18n( "Your personal contact is\nnot set! Please select it\nand set it with menu:\nSettings - Set Who Am I\n" ) );
559 553
560 554
561 } 555 }
562} 556}
563 557
564void KABCore::beamVCard() 558void KABCore::beamVCard()
565{ 559{
566 QStringList uids = mViewManager->selectedUids(); 560 QStringList uids = mViewManager->selectedUids();
567 if ( !uids.isEmpty() ) 561 if ( !uids.isEmpty() )
568 beamVCard( uids ); 562 beamVCard( uids );
569} 563}
570 564
571 565
572void KABCore::beamVCard(const QStringList& uids) 566void KABCore::beamVCard(const QStringList& uids)
573{ 567{
574/*US 568/*US
575 QString beamFilename; 569 QString beamFilename;
576 Opie::OPimContact c; 570 Opie::OPimContact c;
577 if ( actionPersonal->isOn() ) { 571 if ( actionPersonal->isOn() ) {
578 beamFilename = addressbookPersonalVCardName(); 572 beamFilename = addressbookPersonalVCardName();
579 if ( !QFile::exists( beamFilename ) ) 573 if ( !QFile::exists( beamFilename ) )
580 return; // can't beam a non-existent file 574 return; // can't beam a non-existent file
581 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 575 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
582 beamFilename ); 576 beamFilename );
583 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 577 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
584 Opie::OPimContactAccess::List allList = access->allRecords(); 578 Opie::OPimContactAccess::List allList = access->allRecords();
585 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first 579 Opie::OPimContactAccess::List::Iterator it = allList.begin(); // Just take first
586 c = *it; 580 c = *it;
587 581
588 delete access; 582 delete access;
589 } else { 583 } else {
590 unlink( beamfile ); // delete if exists 584 unlink( beamfile ); // delete if exists
591 mkdir("/tmp/obex/", 0755); 585 mkdir("/tmp/obex/", 0755);
592 c = m_abView -> currentEntry(); 586 c = m_abView -> currentEntry();
593 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null, 587 Opie::OPimContactAccessBackend* vcard_backend = new Opie::OPimContactAccessBackend_VCard( QString::null,
594 beamfile ); 588 beamfile );
595 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true ); 589 Opie::OPimContactAccess* access = new Opie::OPimContactAccess ( "addressbook", QString::null , vcard_backend, true );
596 access->add( c ); 590 access->add( c );
597 access->save(); 591 access->save();
598 delete access; 592 delete access;
599 593
600 beamFilename = beamfile; 594 beamFilename = beamfile;
601 } 595 }
602 596
603 owarn << "Beaming: " << beamFilename << oendl; 597 owarn << "Beaming: " << beamFilename << oendl;
604*/ 598*/
605 599
606#if 0 600#if 0
607 QString tmpdir = locateLocal("tmp", KGlobal::getAppName()); 601 QString tmpdir = locateLocal("tmp", KGlobal::getAppName());
608 602
609 QString dirName = tmpdir + "/" + KApplication::randomString( 8 ); 603 QString dirName = tmpdir + "/" + KApplication::randomString( 8 );
610 604
611 QString name = "contact.vcf"; 605 QString name = "contact.vcf";
612 606
613 QString fileName = dirName + "/" + name; 607 QString fileName = dirName + "/" + name;
614#endif 608#endif
615 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory 609 // LR: we should use the /tmp dir, because: /tmp = RAM, (HOME)/kdepim = flash memory
616 // 610 //
617 QString fileName = "/tmp/kdepimbeamfile"; 611 QString fileName = "/tmp/kdepimbeamfile";
618 612
619 613
620 //QDir().mkdir( dirName, true ); 614 //QDir().mkdir( dirName, true );
621 615
622 QFile outFile(fileName); 616 QFile outFile(fileName);
623 KABC::VCardConverter converter; 617 KABC::VCardConverter converter;
624 QString description; 618 QString description;
625 619
626 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully 620 if ( outFile.open(IO_WriteOnly) ) { // file opened successfully
627 621
628 QTextStream t( &outFile ); // use a text stream 622 QTextStream t( &outFile ); // use a text stream
629 t.setEncoding( QTextStream::UnicodeUTF8 ); 623 t.setEncoding( QTextStream::UnicodeUTF8 );
630 624
631 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) { 625 for( QStringList::ConstIterator it = uids.begin(); it != uids.end(); ++it ) {
632 KABC::Addressee a = mAddressBook->findByUid( *it ); 626 KABC::Addressee a = mAddressBook->findByUid( *it );
633 627
634 if ( a.isEmpty() ) 628 if ( a.isEmpty() )
635 continue; 629 continue;
636 630
637 if (description.isEmpty()) 631 if (description.isEmpty())
638 description = a.formattedName(); 632 description = a.formattedName();
639 633
640 QString vcard; 634 QString vcard;
641 converter.addresseeToVCard( a, vcard ); 635 converter.addresseeToVCard( a, vcard );
642 t << vcard; 636 t << vcard;
643 637
644 } 638 }
645 } else { 639 } else {
646 qDebug("Error open temp beam file "); 640 qDebug("Error open temp beam file ");
647 return; 641 return;
648 } 642 }
649 643
650 outFile.close(); 644 outFile.close();
651 645
652#ifndef DESKTOP_VERSION 646#ifndef DESKTOP_VERSION
653 Ir *ir = new Ir( this ); 647 Ir *ir = new Ir( this );
654 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) ); 648 connect( ir, SIGNAL( done(Ir*) ), this, SLOT( beamDone(Ir*) ) );
655 ir->send( fileName, description, "text/x-vCard" ); 649 ir->send( fileName, description, "text/x-vCard" );
656#endif 650#endif
657 651
658} 652}
659 653
660void KABCore::beamDone( Ir *ir ) 654void KABCore::beamDone( Ir *ir )
661{ 655{
662#ifndef DESKTOP_VERSION 656#ifndef DESKTOP_VERSION
663 delete ir; 657 delete ir;
664#endif 658#endif
665} 659}
666 660
667 661
668void KABCore::browse( const QString& url ) 662void KABCore::browse( const QString& url )
669{ 663{
670#ifndef KAB_EMBEDDED 664#ifndef KAB_EMBEDDED
671 kapp->invokeBrowser( url ); 665 kapp->invokeBrowser( url );
672#else //KAB_EMBEDDED 666#else //KAB_EMBEDDED
673 qDebug("KABCore::browse must be fixed"); 667 qDebug("KABCore::browse must be fixed");
674#endif //KAB_EMBEDDED 668#endif //KAB_EMBEDDED
675} 669}
676 670
677void KABCore::selectAllContacts() 671void KABCore::selectAllContacts()
678{ 672{
679 mViewManager->setSelected( QString::null, true ); 673 mViewManager->setSelected( QString::null, true );
680} 674}
681 675
682void KABCore::deleteContacts() 676void KABCore::deleteContacts()
683{ 677{
684 QStringList uidList = mViewManager->selectedUids(); 678 QStringList uidList = mViewManager->selectedUids();
685 deleteContacts( uidList ); 679 deleteContacts( uidList );
686} 680}
687 681
688void KABCore::deleteContacts( const QStringList &uids ) 682void KABCore::deleteContacts( const QStringList &uids )
689{ 683{
690 if ( uids.count() > 0 ) { 684 if ( uids.count() > 0 ) {
691 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids ); 685 PwDeleteCommand *command = new PwDeleteCommand( mAddressBook, uids );
692 UndoStack::instance()->push( command ); 686 UndoStack::instance()->push( command );
693 RedoStack::instance()->clear(); 687 RedoStack::instance()->clear();
694 688
695 // now if we deleted anything, refresh 689 // now if we deleted anything, refresh
696 setContactSelected( QString::null ); 690 setContactSelected( QString::null );
697 setModified( true ); 691 setModified( true );
698 } 692 }
699} 693}
700 694
701void KABCore::copyContacts() 695void KABCore::copyContacts()
702{ 696{
703 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 697 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
704 698
705 QString clipText = AddresseeUtil::addresseesToClipboard( addrList ); 699 QString clipText = AddresseeUtil::addresseesToClipboard( addrList );
706 700
707 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl; 701 kdDebug(5720) << "KABCore::copyContacts: " << clipText << endl;
708 702
709 QClipboard *cb = QApplication::clipboard(); 703 QClipboard *cb = QApplication::clipboard();
710 cb->setText( clipText ); 704 cb->setText( clipText );
711} 705}
712 706
713void KABCore::cutContacts() 707void KABCore::cutContacts()
714{ 708{
715 QStringList uidList = mViewManager->selectedUids(); 709 QStringList uidList = mViewManager->selectedUids();
716 710
717//US if ( uidList.size() > 0 ) { 711//US if ( uidList.size() > 0 ) {
718 if ( uidList.count() > 0 ) { 712 if ( uidList.count() > 0 ) {
719 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList ); 713 PwCutCommand *command = new PwCutCommand( mAddressBook, uidList );
720 UndoStack::instance()->push( command ); 714 UndoStack::instance()->push( command );
721 RedoStack::instance()->clear(); 715 RedoStack::instance()->clear();
722 716
723 setModified( true ); 717 setModified( true );
724 } 718 }
725} 719}
726 720
727void KABCore::pasteContacts() 721void KABCore::pasteContacts()
728{ 722{
729 QClipboard *cb = QApplication::clipboard(); 723 QClipboard *cb = QApplication::clipboard();
730 724
731 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() ); 725 KABC::Addressee::List list = AddresseeUtil::clipboardToAddressees( cb->text() );
732 726
733 pasteContacts( list ); 727 pasteContacts( list );
734} 728}
735 729
736void KABCore::pasteContacts( KABC::Addressee::List &list ) 730void KABCore::pasteContacts( KABC::Addressee::List &list )
737{ 731{
738 KABC::Resource *resource = requestResource( this ); 732 KABC::Resource *resource = requestResource( this );
739 KABC::Addressee::List::Iterator it; 733 KABC::Addressee::List::Iterator it;
740 for ( it = list.begin(); it != list.end(); ++it ) 734 for ( it = list.begin(); it != list.end(); ++it )
741 (*it).setResource( resource ); 735 (*it).setResource( resource );
742 736
743 PwPasteCommand *command = new PwPasteCommand( this, list ); 737 PwPasteCommand *command = new PwPasteCommand( this, list );
744 UndoStack::instance()->push( command ); 738 UndoStack::instance()->push( command );
745 RedoStack::instance()->clear(); 739 RedoStack::instance()->clear();
746 740
747 setModified( true ); 741 setModified( true );
748} 742}
749 743
750void KABCore::setWhoAmI() 744void KABCore::setWhoAmI()
751{ 745{
752 KABC::Addressee::List addrList = mViewManager->selectedAddressees(); 746 KABC::Addressee::List addrList = mViewManager->selectedAddressees();
753 747
754 if ( addrList.count() > 1 ) { 748 if ( addrList.count() > 1 ) {
755 KMessageBox::sorry( this, i18n( "Please select only one contact." ) ); 749 KMessageBox::sorry( this, i18n( "Please select only one contact." ) );
756 return; 750 return;
757 } 751 }
758 752
759 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) ); 753 QString text( i18n( "<qt>Do you really want to use <b>%1</b> as your new personal contact?</qt>" ) );
760 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes ) 754 if ( KMessageBox::questionYesNo( this, text.arg( addrList[ 0 ].assembledName() ) ) == KMessageBox::Yes )
761 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] ); 755 static_cast<KABC::StdAddressBook*>( KABC::StdAddressBook::self() )->setWhoAmI( addrList[ 0 ] );
762} 756}
763 757
764void KABCore::setCategories() 758void KABCore::setCategories()
765{ 759{
766 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true ); 760 KPIM::CategorySelectDialog dlg( KABPrefs::instance(), this, "", true );
767 if ( !dlg.exec() ) 761 if ( !dlg.exec() )
768 return; 762 return;
769 763
770 bool merge = false; 764 bool merge = false;
771 QString msg = i18n( "Merge with existing categories?" ); 765 QString msg = i18n( "Merge with existing categories?" );
772 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes ) 766 if ( KMessageBox::questionYesNo( this, msg ) == KMessageBox::Yes )
773 merge = true; 767 merge = true;
774 768
775 QStringList categories = dlg.selectedCategories(); 769 QStringList categories = dlg.selectedCategories();
776 770
777 QStringList uids = mViewManager->selectedUids(); 771 QStringList uids = mViewManager->selectedUids();
778 QStringList::Iterator it; 772 QStringList::Iterator it;
779 for ( it = uids.begin(); it != uids.end(); ++it ) { 773 for ( it = uids.begin(); it != uids.end(); ++it ) {
780 KABC::Addressee addr = mAddressBook->findByUid( *it ); 774 KABC::Addressee addr = mAddressBook->findByUid( *it );
781 if ( !addr.isEmpty() ) { 775 if ( !addr.isEmpty() ) {
782 if ( !merge ) 776 if ( !merge )
783 addr.setCategories( categories ); 777 addr.setCategories( categories );
784 else { 778 else {
785 QStringList addrCategories = addr.categories(); 779 QStringList addrCategories = addr.categories();
786 QStringList::Iterator catIt; 780 QStringList::Iterator catIt;
787 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) { 781 for ( catIt = categories.begin(); catIt != categories.end(); ++catIt ) {
788 if ( !addrCategories.contains( *catIt ) ) 782 if ( !addrCategories.contains( *catIt ) )
789 addrCategories.append( *catIt ); 783 addrCategories.append( *catIt );
790 } 784 }
791 addr.setCategories( addrCategories ); 785 addr.setCategories( addrCategories );
792 } 786 }
793 787
794 mAddressBook->insertAddressee( addr ); 788 mAddressBook->insertAddressee( addr );
795 } 789 }
796 } 790 }
797 791
798 if ( uids.count() > 0 ) 792 if ( uids.count() > 0 )
799 setModified( true ); 793 setModified( true );
800} 794}
801 795
802void KABCore::setSearchFields( const KABC::Field::List &fields ) 796void KABCore::setSearchFields( const KABC::Field::List &fields )
803{ 797{
804 mIncSearchWidget->setFields( fields ); 798 mIncSearchWidget->setFields( fields );
805} 799}
806 800
807void KABCore::incrementalSearch( const QString& text ) 801void KABCore::incrementalSearch( const QString& text )
808{ 802{
809 mViewManager->setSelected( QString::null, false ); 803 mViewManager->setSelected( QString::null, false );
810 804
811 if ( !text.isEmpty() ) { 805 if ( !text.isEmpty() ) {
812 KABC::Field *field = mIncSearchWidget->currentField(); 806 KABC::Field *field = mIncSearchWidget->currentField();
813 807
814 QString pattern = text.lower(); 808 QString pattern = text.lower();
815 809
816#if 1 //KDE_VERSION >= 319 810#if 1 //KDE_VERSION >= 319
817 KABC::AddresseeList list( mAddressBook->allAddressees() ); 811 KABC::AddresseeList list( mAddressBook->allAddressees() );
818 if ( field ) { 812 if ( field ) {
819 list.sortByField( field ); 813 list.sortByField( field );
820 KABC::AddresseeList::Iterator it; 814 KABC::AddresseeList::Iterator it;
821 for ( it = list.begin(); it != list.end(); ++it ) { 815 for ( it = list.begin(); it != list.end(); ++it ) {
822 if ( field->value( *it ).lower().startsWith( pattern ) ) { 816 if ( field->value( *it ).lower().startsWith( pattern ) ) {
823 mViewManager->setSelected( (*it).uid(), true ); 817 mViewManager->setSelected( (*it).uid(), true );
824 return; 818 return;
825 } 819 }
826 } 820 }
827 } else { 821 } else {
828 KABC::AddresseeList::Iterator it; 822 KABC::AddresseeList::Iterator it;
829 for ( it = list.begin(); it != list.end(); ++it ) { 823 for ( it = list.begin(); it != list.end(); ++it ) {
830 KABC::Field::List fieldList = mIncSearchWidget->fields(); 824 KABC::Field::List fieldList = mIncSearchWidget->fields();
831 KABC::Field::List::ConstIterator fieldIt; 825 KABC::Field::List::ConstIterator fieldIt;
832 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 826 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
833 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) { 827 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) {
834 mViewManager->setSelected( (*it).uid(), true ); 828 mViewManager->setSelected( (*it).uid(), true );
835 return; 829 return;
836 } 830 }
837 } 831 }
838 } 832 }
839 } 833 }
840#else 834#else
841 KABC::AddressBook::Iterator it; 835 KABC::AddressBook::Iterator it;
842 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 836 for ( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
843 if ( field ) { 837 if ( field ) {
844 if ( field->value( *it ).lower().startsWith( pattern ) ) { 838 if ( field->value( *it ).lower().startsWith( pattern ) ) {
845 mViewManager->setSelected( (*it).uid(), true ); 839 mViewManager->setSelected( (*it).uid(), true );
846 return; 840 return;
847 } 841 }
848 } else { 842 } else {
849 KABC::Field::List fieldList = mIncSearchWidget->fields(); 843 KABC::Field::List fieldList = mIncSearchWidget->fields();
850 KABC::Field::List::ConstIterator fieldIt; 844 KABC::Field::List::ConstIterator fieldIt;
851 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { 845 for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) {
852 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) { 846 if ( (*fieldIt)->value( *it ).lower().startsWith( pattern ) ) {
853 mViewManager->setSelected( (*it).uid(), true ); 847 mViewManager->setSelected( (*it).uid(), true );
854 return; 848 return;
855 } 849 }
856 } 850 }
857 } 851 }
858 } 852 }
859#endif 853#endif
860 } 854 }
861} 855}
862 856
863void KABCore::setModified() 857void KABCore::setModified()
864{ 858{
865 setModified( true ); 859 setModified( true );
866} 860}
867 861
868void KABCore::setModifiedWOrefresh() 862void KABCore::setModifiedWOrefresh()
869{ 863{
870 // qDebug("KABCore::setModifiedWOrefresh() "); 864 // qDebug("KABCore::setModifiedWOrefresh() ");
871 mModified = true; 865 mModified = true;
872 mActionSave->setEnabled( mModified ); 866 mActionSave->setEnabled( mModified );
873#ifdef DESKTOP_VERSION 867#ifdef DESKTOP_VERSION
874 mDetails->refreshView(); 868 mDetails->refreshView();
875#endif 869#endif
876 870
877} 871}
878void KABCore::setModified( bool modified ) 872void KABCore::setModified( bool modified )
879{ 873{
880 mModified = modified; 874 mModified = modified;
881 mActionSave->setEnabled( mModified ); 875 mActionSave->setEnabled( mModified );
882 876
883 if ( modified ) 877 if ( modified )
884 mJumpButtonBar->recreateButtons(); 878 mJumpButtonBar->recreateButtons();
885 879
886 mViewManager->refreshView(); 880 mViewManager->refreshView();
887 mDetails->refreshView(); 881 mDetails->refreshView();
888 882
889} 883}
890 884
891bool KABCore::modified() const 885bool KABCore::modified() const
892{ 886{
893 return mModified; 887 return mModified;
894} 888}
895 889
896void KABCore::contactModified( const KABC::Addressee &addr ) 890void KABCore::contactModified( const KABC::Addressee &addr )
897{ 891{
898 892
899 Command *command = 0; 893 Command *command = 0;
900 QString uid; 894 QString uid;
901 895
902 // check if it exists already 896 // check if it exists already
903 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() ); 897 KABC::Addressee origAddr = mAddressBook->findByUid( addr.uid() );
904 if ( origAddr.isEmpty() ) 898 if ( origAddr.isEmpty() )
905 command = new PwNewCommand( mAddressBook, addr ); 899 command = new PwNewCommand( mAddressBook, addr );
906 else { 900 else {
907 command = new PwEditCommand( mAddressBook, origAddr, addr ); 901 command = new PwEditCommand( mAddressBook, origAddr, addr );
908 uid = addr.uid(); 902 uid = addr.uid();
909 } 903 }
910 904
911 UndoStack::instance()->push( command ); 905 UndoStack::instance()->push( command );
912 RedoStack::instance()->clear(); 906 RedoStack::instance()->clear();
913 907
914 setModified( true ); 908 setModified( true );
915} 909}
916 910