summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/addressbook/TODO8
-rw-r--r--core/pim/addressbook/addressbook.cpp26
2 files changed, 30 insertions, 4 deletions
diff --git a/core/pim/addressbook/TODO b/core/pim/addressbook/TODO
index 2a27efc..7e800fa 100644
--- a/core/pim/addressbook/TODO
+++ b/core/pim/addressbook/TODO
@@ -1,108 +1,110 @@
1Stuff todo until OPIE 1.0 : 1Stuff todo until OPIE 1.0 :
2=========================== 2===========================
3 3
4Feature requests: 4Feature requests:
5----------------- 5-----------------
6- Dial by mobile phone by tapping the number.. 6- Dial by mobile phone by tapping the number..
7 (Maybe using gsmtool. And we may 7 (Maybe using gsmtool. And we may
8 add a library class for this) 8 add a library class for this)
9- dial with dtmfdial incase it's installed and there's no mobile 9- dial with dtmfdial incase it's installed and there's no mobile
10- 3rd column for 2. Contact 10- 3rd column for 2. Contact
11- Implementing additional Views (Phonebook, ...) 11- Implementing additional Views (Phonebook, ...)
12- Birthday & Anniversary Reminder 12- Birthday & Anniversary Reminder
13- Plugin for Today for Birthdays and Anniversaries 13- Plugin for Today for Birthdays and Anniversaries
14- Beaming of multiple contacts (current list/ by search or by category)
14 15
15Known Bugs: 16Known Bugs:
16----------- 17-----------
17- Language not English (tested with german opie-translation): 18- Language not English (tested with german opie-translation):
18 1. Configure nicht übersetzt (alles leer). 19 1. Configure nicht übersetzt (alles leer).
19 2. Contacteditor nur teilweise übersetzt. 20 2. Contacteditor nur teilweise übersetzt.
20 3. Kategorie-Picker geht nicht. 21 3. Kategorie-Picker geht nicht.
21 22
22 23
23Bugs but not in addressbook: 24Bugs but not in addressbook:
24----------------------------- 25-----------------------------
25- VCARD: If umlaut (äöüß) in address, the parser gets confused.. 26- VCARD: If umlaut (äöüß) in address, the parser gets confused..
26 27
27- Exporting and reimporting of Jobtitle was reported to fail (Could not reproduce this ! (se)) 28- Exporting and reimporting of Jobtitle was reported to fail (Could not reproduce this ! (se))
28 29
29 30
30Urgent: 31Urgent:
31-------- 32--------
32- Implement Button Pics 33- Implement Button Pics
33- Fix start of opie-mail 34- Fix start of opie-mail
34 35
35ContactEditor: 36ContactEditor:
36- Contact-Editor is temporarely reenabled. Wait for replacement. 37- Contact-Editor is temporarely reenabled. Wait for replacement.
37- Redesign of Contacteditor 38- Redesign of Contacteditor
38- Store last settings of combo-boxes 39- Store last settings of combo-boxes
39- Category is on the wrong position after changing to personal and back to normal 40- Category is on the wrong position after changing to personal and back to normal
40 ( Temporarily workaround: Category is never deactivated.. :S ) 41 ( Temporarily workaround: Category is never deactivated.. :S )
41- Personal and Business Web-page is not editable 42- Personal and Business Web-page is not editable
42 43
43Important: 44Important:
44---------- 45----------
45 46
46- Implement a picker/combo for the default email. 47- Implement a picker/combo for the default email.
47- After search (Started with Return): KeyFocus should be on Tabelle 48- After search (Started with Return): KeyFocus should be on Tabelle
48 49
49- Add a dialog to accept and optionally edit received contacts by IRDA. 50- Add a dialog to accept and optionally edit received contacts by IRDA.
50- "What's this" should be added (Deleyed after Feature Freeze) 51- "What's this" should be added (Deleyed after Feature Freeze)
51 52
52Less important: 53Less important:
53--------------- 54---------------
54- Reload if contacts were changed externally 55- Reload if contacts were changed externally
55- Overview window cleanup needed.. 56- Overview window cleanup needed..
56- The picker (alphabetical sort widget) should be 57- The picker (alphabetical sort widget) should be
57 placed verticaly or horizontally (configurable) 58 placed verticaly or horizontally (configurable)
58- Find a smart solution for activating/deactivating the "send email" event 59- Find a smart solution for activating/deactivating the "send email" event
59 60
60Should be Fixed (not absolute sure, need further validation): 61Should be Fixed (not absolute sure, need further validation):
61------------------------------------------------------------- 62-------------------------------------------------------------
62- Searchwidget closed: Selected user is jumping
63- Wenn suchen beendet, dann dauert das Tabellenupdate (was überhaupt überflüssig ist)
64 zu lange..
65 63
66 64
67Fixed: 65Fixed:
68------- 66-------
69- Syncing: abtable not reloaded after sync. 67- Syncing: abtable not reloaded after sync.
70- Find widget should be replaced by something like 68- Find widget should be replaced by something like
71 qpdf has. 69 qpdf has.
72- Adding a configuration dialog 70- Adding a configuration dialog
73- Picker: Activated letter schould be more visible 71- Picker: Activated letter schould be more visible
74- Advanced handling of cursor keys (search..) 72- Advanced handling of cursor keys (search..)
75- Mail-Icon is missing 73- Mail-Icon is missing
76- Use opie-mail insted of qt-mail if possible. 74- Use opie-mail insted of qt-mail if possible.
77- Font menu is invisible using german translation 75- Font menu is invisible using german translation
78- Personal contact editor: Disable categories 76- Personal contact editor: Disable categories
79- "Nonenglish" translation bug has to be fixed. 77- "Nonenglish" translation bug has to be fixed.
80- contacteditor: Birthday, annyversary, ... : Use Dateselector 78- contacteditor: Birthday, annyversary, ... : Use Dateselector
81- The names of the countries are sorted by there english names, only.. 79- The names of the countries are sorted by there english names, only..
82 Even if they are translated.. :S 80 Even if they are translated.. :S
83- Cursor keys should work in detail-view (ablabel) 81- Cursor keys should work in detail-view (ablabel)
84 -> Ablabel should be removed and Abtable should be increased with 82 -> Ablabel should be removed and Abtable should be increased with
85 different views (as started by darwin zins).. 83 different views (as started by darwin zins)..
86- Use advanced database functions in abtable to decrease 84- Use advanced database functions in abtable to decrease
87 memory footprint and to make everything more easy ! 85 memory footprint and to make everything more easy !
88 (abtable should store Iterator for selected Category) 86 (abtable should store Iterator for selected Category)
89- Abtable: Configure Contact column (internally already available, 87- Abtable: Configure Contact column (internally already available,
90 need configuration) 88 need configuration)
91- Select of primary contact (see #274 on mantis) 89- Select of primary contact (see #274 on mantis)
92- Category-select does not work completely: "Unfiled" is always in listview .. 90- Category-select does not work completely: "Unfiled" is always in listview ..
93- Return from Contacteditor: Category resettet to all 91- Return from Contacteditor: Category resettet to all
94- Personal Details not working 92- Personal Details not working
95- If category changed, the letterpicker should be resetted 93- If category changed, the letterpicker should be resetted
96- There should be some icons for List and Cardview 94- There should be some icons for List and Cardview
97- If in Cardview and a category change removes all entries: 95- If in Cardview and a category change removes all entries:
98 There are already entries in Cardview after up/down 96 There are already entries in Cardview after up/down
99- Personal Details: Anniversary zeigt Fantasie-Werte 97- Personal Details: Anniversary zeigt Fantasie-Werte
100- Unfiled shown just in Category "All" and "Unfiled". 98- Unfiled shown just in Category "All" and "Unfiled".
101- After finising search and after Edit: Clear Picker 99- After finising search and after Edit: Clear Picker
102- After Edit: Table position back to edited entry. 100- After Edit: Table position back to edited entry.
103- Optimize Table Update... 101- Optimize Table Update...
104- Change MyDialog to Config 102- Change MyDialog to Config
105- Store position and state of toolbar 103- Store position and state of toolbar
104- Searchwidget closed: Selected user is jumping
105- Wenn suchen beendet, dann dauert das Tabellenupdate (was überhaupt überflüssig ist)
106 zu lange..
106- VCARD: Import of Anniversary does not work correctly (currently disabled) 107- VCARD: Import of Anniversary does not work correctly (currently disabled)
107- Name order selected in "contacteditor" not used in list view. 108- Name order selected in "contacteditor" not used in list view.
108- OK-Key does not switch from Detailview (ablable) to Listview 109- OK-Key does not switch from Detailview (ablable) to Listview
110- Receiving of beams should open a dialog
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp
index 60db2b4..e009d52 100644
--- a/core/pim/addressbook/addressbook.cpp
+++ b/core/pim/addressbook/addressbook.cpp
@@ -226,260 +226,284 @@ AddressbookWindow::AddressbookWindow( QWidget *parent, const char *name,
226 m_abView = new AbView( listContainer, m_config.orderList() ); 226 m_abView = new AbView( listContainer, m_config.orderList() );
227 vb->addWidget( m_abView ); 227 vb->addWidget( m_abView );
228 // abList->setHScrollBarMode( QScrollView::AlwaysOff ); 228 // abList->setHScrollBarMode( QScrollView::AlwaysOff );
229 connect( m_abView, SIGNAL( signalViewSwitched ( int ) ), 229 connect( m_abView, SIGNAL( signalViewSwitched ( int ) ),
230 this, SLOT( slotViewSwitched( int ) ) ); 230 this, SLOT( slotViewSwitched( int ) ) );
231 231
232 232
233 QObject::connect( m_abView, SIGNAL(signalNotFound()), this, SLOT(slotNotFound()) ); 233 QObject::connect( m_abView, SIGNAL(signalNotFound()), this, SLOT(slotNotFound()) );
234 234
235 m_abView->load(); 235 m_abView->load();
236 236
237 // Letter Picker 237 // Letter Picker
238 pLabel = new LetterPicker( listContainer ); 238 pLabel = new LetterPicker( listContainer );
239 connect(pLabel, SIGNAL(letterClicked(char)), this, SLOT(slotSetLetter(char))); 239 connect(pLabel, SIGNAL(letterClicked(char)), this, SLOT(slotSetLetter(char)));
240 connect(m_abView, SIGNAL( signalClearLetterPicker() ), pLabel, SLOT( clear() ) ); 240 connect(m_abView, SIGNAL( signalClearLetterPicker() ), pLabel, SLOT( clear() ) );
241 241
242 vb->addWidget( pLabel ); 242 vb->addWidget( pLabel );
243 243
244 // Category Menu 244 // Category Menu
245 catMenu = new QPopupMenu( this ); 245 catMenu = new QPopupMenu( this );
246 catMenu->setCheckable( TRUE ); 246 catMenu->setCheckable( TRUE );
247 connect( catMenu, SIGNAL(activated(int)), this, SLOT(slotSetCategory(int)) ); 247 connect( catMenu, SIGNAL(activated(int)), this, SLOT(slotSetCategory(int)) );
248 populateCategories(); 248 populateCategories();
249 mbList->insertItem( tr("View"), catMenu ); 249 mbList->insertItem( tr("View"), catMenu );
250 250
251 defaultFont = new QFont( m_abView->font() ); 251 defaultFont = new QFont( m_abView->font() );
252 slotSetFont(m_config.fontSize()); 252 slotSetFont(m_config.fontSize());
253 m_curFontSize = m_config.fontSize(); 253 m_curFontSize = m_config.fontSize();
254 254
255 setCentralWidget(listContainer); 255 setCentralWidget(listContainer);
256 256
257 // qDebug("adressbook contrsuction: t=%d", t.elapsed() ); 257 // qDebug("adressbook contrsuction: t=%d", t.elapsed() );
258 258
259 259
260 isLoading = false; 260 isLoading = false;
261} 261}
262 262
263 263
264void AddressbookWindow::slotConfig() 264void AddressbookWindow::slotConfig()
265{ 265{
266 ConfigDlg* dlg = new ConfigDlg( this, "Config" ); 266 ConfigDlg* dlg = new ConfigDlg( this, "Config" );
267 dlg -> setConfig( m_config ); 267 dlg -> setConfig( m_config );
268 dlg -> showMaximized(); 268 dlg -> showMaximized();
269 if ( dlg -> exec() ) { 269 if ( dlg -> exec() ) {
270 qWarning ("Config Dialog accepted !"); 270 qWarning ("Config Dialog accepted !");
271 m_config = dlg -> getConfig(); 271 m_config = dlg -> getConfig();
272 if ( m_curFontSize != m_config.fontSize() ){ 272 if ( m_curFontSize != m_config.fontSize() ){
273 qWarning("Font was changed!"); 273 qWarning("Font was changed!");
274 m_curFontSize = m_config.fontSize(); 274 m_curFontSize = m_config.fontSize();
275 emit slotSetFont( m_curFontSize ); 275 emit slotSetFont( m_curFontSize );
276 } 276 }
277 m_abView -> setListOrder( m_config.orderList() ); 277 m_abView -> setListOrder( m_config.orderList() );
278 } 278 }
279 279
280 delete dlg; 280 delete dlg;
281} 281}
282 282
283 283
284void AddressbookWindow::slotSetFont( int size ) 284void AddressbookWindow::slotSetFont( int size )
285{ 285{
286 qWarning("void AddressbookWindow::slotSetFont( %d )", size); 286 qWarning("void AddressbookWindow::slotSetFont( %d )", size);
287 287
288 if (size > 2 || size < 0) 288 if (size > 2 || size < 0)
289 size = 1; 289 size = 1;
290 290
291 m_config.setFontSize( size ); 291 m_config.setFontSize( size );
292 292
293 QFont *currentFont; 293 QFont *currentFont;
294 294
295 switch (size) { 295 switch (size) {
296 case 0: 296 case 0:
297 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) ); 297 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() - 2 ) );
298 currentFont = new QFont (m_abView->font()); 298 currentFont = new QFont (m_abView->font());
299 // abList->resizeRows(currentFont->pixelSize() + 7); :SX 299 // abList->resizeRows(currentFont->pixelSize() + 7); :SX
300 // abList->resizeRows(); 300 // abList->resizeRows();
301 break; 301 break;
302 case 1: 302 case 1:
303 m_abView->setFont( *defaultFont ); 303 m_abView->setFont( *defaultFont );
304 currentFont = new QFont (m_abView->font()); 304 currentFont = new QFont (m_abView->font());
305 // // abList->resizeRows(currentFont->pixelSize() + 7); 305 // // abList->resizeRows(currentFont->pixelSize() + 7);
306 // abList->resizeRows(); 306 // abList->resizeRows();
307 break; 307 break;
308 case 2: 308 case 2:
309 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) ); 309 m_abView->setFont( QFont( defaultFont->family(), defaultFont->pointSize() + 2 ) );
310 currentFont = new QFont (m_abView->font()); 310 currentFont = new QFont (m_abView->font());
311 // //abList->resizeRows(currentFont->pixelSize() + 7); 311 // //abList->resizeRows(currentFont->pixelSize() + 7);
312 // abList->resizeRows(); 312 // abList->resizeRows();
313 break; 313 break;
314 } 314 }
315} 315}
316 316
317 317
318 318
319void AddressbookWindow::importvCard() { 319void AddressbookWindow::importvCard() {
320 QString str = OFileDialog::getOpenFileName( 1,"/");//,"", "*", this ); 320 QString str = OFileDialog::getOpenFileName( 1,"/");//,"", "*", this );
321 if(!str.isEmpty() ){ 321 if(!str.isEmpty() ){
322 setDocument((const QString&) str ); 322 setDocument((const QString&) str );
323 } 323 }
324 324
325} 325}
326 326
327void AddressbookWindow::setDocument( const QString &filename ) 327void AddressbookWindow::setDocument( const QString &filename )
328{ 328{
329 qWarning( "void AddressbookWindow::setDocument( %s )", filename.latin1() ); 329 qWarning( "void AddressbookWindow::setDocument( %s )", filename.latin1() );
330 330
331 if ( filename.find(".vcf") != int(filename.length()) - 4 ){ 331 if ( filename.find(".vcf") != int(filename.length()) - 4 ){
332 332
333 333
334 334
335 switch( QMessageBox::information( this, tr ( "Right file type ?" ), 335 switch( QMessageBox::information( this, tr ( "Right file type ?" ),
336 tr( "The selected file \n does not end with \".vcf\".\n Do you really want to open it?" ), 336 tr( "The selected file \n does not end with \".vcf\".\n Do you really want to open it?" ),
337 tr( "&Yes" ), tr( "&No" ), QString::null, 337 tr( "&Yes" ), tr( "&No" ), QString::null,
338 0, // Enter == button 0 338 0, // Enter == button 0
339 2 ) ) { // Escape == button 2 339 2 ) ) { // Escape == button 2
340 case 0: 340 case 0:
341 qWarning("YES clicked"); 341 qWarning("YES clicked");
342 break; 342 break;
343 case 1: 343 case 1:
344 qWarning("NO clicked"); 344 qWarning("NO clicked");
345 return; 345 return;
346 break; 346 break;
347 } 347 }
348 } 348 }
349 349
350 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null, 350 OContactAccessBackend* vcard_backend = new OContactAccessBackend_VCard( QString::null,
351 filename ); 351 filename );
352 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true ); 352 OContactAccess* access = new OContactAccess ( "addressbook", QString::null , vcard_backend, true );
353 OContactAccess::List allList = access->allRecords(); 353 OContactAccess::List allList = access->allRecords();
354 qWarning( "Found number of contacts in File: %d", allList.count() );
354 355
356 bool doAsk = true;
355 OContactAccess::List::Iterator it; 357 OContactAccess::List::Iterator it;
356 for ( it = allList.begin(); it != allList.end(); ++it ){ 358 for ( it = allList.begin(); it != allList.end(); ++it ){
357 m_abView->addEntry( *it ); 359 qWarning("Adding Contact from: %s", (*it).fullName().latin1() );
360 if ( doAsk ){
361 switch( QMessageBox::information( this, tr ( "Add Contact ?" ),
362 tr( "Do you really want add contact for \n%1 ?" )
363 .arg( (*it).fullName().latin1() ),
364 tr( "&Yes" ), tr( "&No" ), tr( "&AllYes"),
365 0, // Enter == button 0
366 2 ) ) { // Escape == button 2
367 case 0:
368 qWarning("YES clicked");
369 m_abView->addEntry( *it );
370 break;
371 case 1:
372 qWarning("NO clicked");
373 break;
374 case 2:
375 qWarning("YesAll clicked");
376 doAsk = false;
377 break;
378 }
379 }else
380 m_abView->addEntry( *it );
381
358 } 382 }
359 383
360 delete access; 384 delete access;
361} 385}
362 386
363void AddressbookWindow::resizeEvent( QResizeEvent *e ) 387void AddressbookWindow::resizeEvent( QResizeEvent *e )
364{ 388{
365 QMainWindow::resizeEvent( e ); 389 QMainWindow::resizeEvent( e );
366 390
367 391
368} 392}
369 393
370AddressbookWindow::~AddressbookWindow() 394AddressbookWindow::~AddressbookWindow()
371{ 395{
372 ToolBarDock dock; 396 ToolBarDock dock;
373 int dummy; 397 int dummy;
374 bool bDummy; 398 bool bDummy;
375 getLocation ( listTools, dock, dummy, bDummy, dummy ); 399 getLocation ( listTools, dock, dummy, bDummy, dummy );
376 m_config.setToolBarDock( dock ); 400 m_config.setToolBarDock( dock );
377 m_config.save(); 401 m_config.save();
378} 402}
379 403
380void AddressbookWindow::slotUpdateToolbar() 404void AddressbookWindow::slotUpdateToolbar()
381{ 405{
382 OContact ce = m_abView->currentEntry(); 406 OContact ce = m_abView->currentEntry();
383 actionMail->setEnabled( !ce.defaultEmail().isEmpty() ); 407 actionMail->setEnabled( !ce.defaultEmail().isEmpty() );
384} 408}
385 409
386void AddressbookWindow::slotListNew() 410void AddressbookWindow::slotListNew()
387{ 411{
388 OContact cnt; 412 OContact cnt;
389 if( !syncing ) { 413 if( !syncing ) {
390 editEntry( NewEntry ); 414 editEntry( NewEntry );
391 } else { 415 } else {
392 QMessageBox::warning(this, tr("OContacts"), 416 QMessageBox::warning(this, tr("OContacts"),
393 tr("Can not edit data, currently syncing")); 417 tr("Can not edit data, currently syncing"));
394 } 418 }
395} 419}
396 420
397// void AddressbookWindow::slotListView() 421// void AddressbookWindow::slotListView()
398// { 422// {
399 // m_abView -> init( abList->currentEntry() ); 423 // m_abView -> init( abList->currentEntry() );
400 // // :SX mView->sync(); 424 // // :SX mView->sync();
401 // //:SXshowView(); 425 // //:SXshowView();
402// } 426// }
403 427
404void AddressbookWindow::slotListDelete() 428void AddressbookWindow::slotListDelete()
405{ 429{
406 if(!syncing) { 430 if(!syncing) {
407 OContact tmpEntry = m_abView ->currentEntry(); 431 OContact tmpEntry = m_abView ->currentEntry();
408 432
409 // get a name, do the best we can... 433 // get a name, do the best we can...
410 QString strName = tmpEntry.fullName(); 434 QString strName = tmpEntry.fullName();
411 if ( strName.isEmpty() ) { 435 if ( strName.isEmpty() ) {
412 strName = tmpEntry.company(); 436 strName = tmpEntry.company();
413 if ( strName.isEmpty() ) 437 if ( strName.isEmpty() )
414 strName = "No Name"; 438 strName = "No Name";
415 } 439 }
416 440
417 441
418 if ( QPEMessageBox::confirmDelete( this, tr( "Contacts" ), 442 if ( QPEMessageBox::confirmDelete( this, tr( "Contacts" ),
419 strName ) ) { 443 strName ) ) {
420 m_abView->removeEntry( tmpEntry.uid() ); 444 m_abView->removeEntry( tmpEntry.uid() );
421 } 445 }
422 } else { 446 } else {
423 QMessageBox::warning( this, tr("Contacts"), 447 QMessageBox::warning( this, tr("Contacts"),
424 tr("Can not edit data, currently syncing") ); 448 tr("Can not edit data, currently syncing") );
425 } 449 }
426} 450}
427 451
428void AddressbookWindow::slotFindOpen() 452void AddressbookWindow::slotFindOpen()
429{ 453{
430 searchBar->show(); 454 searchBar->show();
431 m_abView -> inSearch(); 455 m_abView -> inSearch();
432 searchEdit->setFocus(); 456 searchEdit->setFocus();
433} 457}
434void AddressbookWindow::slotFindClose() 458void AddressbookWindow::slotFindClose()
435{ 459{
436 searchBar->hide(); 460 searchBar->hide();
437 m_abView -> offSearch(); 461 m_abView -> offSearch();
438 // m_abView->setFocus(); 462 // m_abView->setFocus();
439} 463}
440 464
441 465
442void AddressbookWindow::slotFind() 466void AddressbookWindow::slotFind()
443{ 467{
444 m_abView->slotDoFind( searchEdit->text(), m_config.beCaseSensitive(), m_config.useRegExp(), false); 468 m_abView->slotDoFind( searchEdit->text(), m_config.beCaseSensitive(), m_config.useRegExp(), false);
445 469
446 searchEdit->clearFocus(); 470 searchEdit->clearFocus();
447 // m_abView->setFocus(); 471 // m_abView->setFocus();
448 472
449} 473}
450 474
451void AddressbookWindow::slotViewBack() 475void AddressbookWindow::slotViewBack()
452{ 476{
453 // :SX showList(); 477 // :SX showList();
454} 478}
455 479
456void AddressbookWindow::slotViewEdit() 480void AddressbookWindow::slotViewEdit()
457{ 481{
458 if(!syncing) { 482 if(!syncing) {
459 if (actionPersonal->isOn()) { 483 if (actionPersonal->isOn()) {
460 editPersonal(); 484 editPersonal();
461 } else { 485 } else {
462 editEntry( EditEntry ); 486 editEntry( EditEntry );
463 } 487 }
464 } else { 488 } else {
465 QMessageBox::warning( this, tr("Contacts"), 489 QMessageBox::warning( this, tr("Contacts"),
466 tr("Can not edit data, currently syncing") ); 490 tr("Can not edit data, currently syncing") );
467 } 491 }
468} 492}
469 493
470 494
471 495
472void AddressbookWindow::writeMail() 496void AddressbookWindow::writeMail()
473{ 497{
474 OContact c = m_abView -> currentEntry(); 498 OContact c = m_abView -> currentEntry();
475 QString name = c.fileAs(); 499 QString name = c.fileAs();
476 QString email = c.defaultEmail(); 500 QString email = c.defaultEmail();
477 501
478 // I prefer the OPIE-Environment variable before the 502 // I prefer the OPIE-Environment variable before the
479 // QPE-one.. 503 // QPE-one..
480 QString basepath = QString::fromLatin1( getenv("OPIEDIR") ); 504 QString basepath = QString::fromLatin1( getenv("OPIEDIR") );
481 if ( basepath.isEmpty() ) 505 if ( basepath.isEmpty() )
482 basepath = QString::fromLatin1( getenv("QPEDIR") ); 506 basepath = QString::fromLatin1( getenv("QPEDIR") );
483 507
484 // Try to access the preferred. If not possible, try to 508 // Try to access the preferred. If not possible, try to
485 // switch to the other one.. 509 // switch to the other one..