summaryrefslogtreecommitdiffabout
path: root/kaddressbook
authorulf69 <ulf69>2004-08-20 21:26:25 (UTC)
committer ulf69 <ulf69>2004-08-20 21:26:25 (UTC)
commitb9eff79c5702aad1ee8abe8a9ff01899ae969bed (patch) (unidiff)
tree09628cd451301034adf8d95d2e8b88acef8ee142 /kaddressbook
parenta3083042bb9c69193cc43105e6c9d045bd79e8b2 (diff)
downloadkdepimpi-b9eff79c5702aad1ee8abe8a9ff01899ae969bed.zip
kdepimpi-b9eff79c5702aad1ee8abe8a9ff01899ae969bed.tar.gz
kdepimpi-b9eff79c5702aad1ee8abe8a9ff01899ae969bed.tar.bz2
FAQ dialog added
Diffstat (limited to 'kaddressbook') (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/kabcore.cpp33
-rw-r--r--kaddressbook/kabcore.h3
2 files changed, 29 insertions, 7 deletions
diff --git a/kaddressbook/kabcore.cpp b/kaddressbook/kabcore.cpp
index dabb8e9..cb9b992 100644
--- a/kaddressbook/kabcore.cpp
+++ b/kaddressbook/kabcore.cpp
@@ -1,71 +1,78 @@
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/*
25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk
27
28$Id$
29*/
30
24#include "kabcore.h" 31#include "kabcore.h"
25 32
26#include <stdaddressbook.h> 33#include <stdaddressbook.h>
27#include <klocale.h> 34#include <klocale.h>
28 35
29#ifndef KAB_EMBEDDED 36#ifndef KAB_EMBEDDED
30#include <qclipboard.h> 37#include <qclipboard.h>
31#include <qdir.h> 38#include <qdir.h>
32#include <qfile.h> 39#include <qfile.h>
33#include <qapplicaton.h> 40#include <qapplicaton.h>
34#include <qlayout.h> 41#include <qlayout.h>
35#include <qregexp.h> 42#include <qregexp.h>
36#include <qvbox.h> 43#include <qvbox.h>
37#include <kabc/addresseelist.h> 44#include <kabc/addresseelist.h>
38#include <kabc/errorhandler.h> 45#include <kabc/errorhandler.h>
39#include <kabc/resource.h> 46#include <kabc/resource.h>
40#include <kabc/vcardconverter.h> 47#include <kabc/vcardconverter.h>
41#include <kapplication.h> 48#include <kapplication.h>
42#include <kactionclasses.h> 49#include <kactionclasses.h>
43#include <kcmultidialog.h> 50#include <kcmultidialog.h>
44#include <kdebug.h> 51#include <kdebug.h>
45#include <kdeversion.h> 52#include <kdeversion.h>
46#include <kkeydialog.h> 53#include <kkeydialog.h>
47#include <kmessagebox.h> 54#include <kmessagebox.h>
48#include <kprinter.h> 55#include <kprinter.h>
49#include <kprotocolinfo.h> 56#include <kprotocolinfo.h>
50#include <kresources/selectdialog.h> 57#include <kresources/selectdialog.h>
51#include <kstandarddirs.h> 58#include <kstandarddirs.h>
52#include <ktempfile.h> 59#include <ktempfile.h>
53#include <kxmlguiclient.h> 60#include <kxmlguiclient.h>
54#include <kaboutdata.h> 61#include <kaboutdata.h>
55#include <libkdepim/categoryselectdialog.h> 62#include <libkdepim/categoryselectdialog.h>
56 63
57#include "addresseeutil.h" 64#include "addresseeutil.h"
58#include "addresseeeditordialog.h" 65#include "addresseeeditordialog.h"
59#include "extensionmanager.h" 66#include "extensionmanager.h"
60#include "kstdaction.h" 67#include "kstdaction.h"
61#include "kaddressbookservice.h" 68#include "kaddressbookservice.h"
62#include "ldapsearchdialog.h" 69#include "ldapsearchdialog.h"
63#include "printing/printingwizard.h" 70#include "printing/printingwizard.h"
64#else // KAB_EMBEDDED 71#else // KAB_EMBEDDED
65 72
66#include <kapplication.h> 73#include <kapplication.h>
67#include "KDGanttMinimizeSplitter.h" 74#include "KDGanttMinimizeSplitter.h"
68#include "kaddressbookmain.h" 75#include "kaddressbookmain.h"
69#include "kactioncollection.h" 76#include "kactioncollection.h"
70#include "addresseedialog.h" 77#include "addresseedialog.h"
71//US 78//US
@@ -373,107 +380,108 @@ KABC::Resource *KABCore::requestResource( QWidget *parent )
373 } 380 }
374 } 381 }
375 382
376 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent ); 383 KRES::Resource *res = KRES::SelectDialog::getResource( kresResources, parent );
377 return static_cast<KABC::Resource*>( res ); 384 return static_cast<KABC::Resource*>( res );
378} 385}
379 386
380#ifndef KAB_EMBEDDED 387#ifndef KAB_EMBEDDED
381KAboutData *KABCore::createAboutData() 388KAboutData *KABCore::createAboutData()
382#else //KAB_EMBEDDED 389#else //KAB_EMBEDDED
383void KABCore::createAboutData() 390void KABCore::createAboutData()
384#endif //KAB_EMBEDDED 391#endif //KAB_EMBEDDED
385{ 392{
386#ifndef KAB_EMBEDDED 393#ifndef KAB_EMBEDDED
387 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ), 394 KAboutData *about = new KAboutData( "kaddressbook", I18N_NOOP( "KAddressBook" ),
388 "3.1", I18N_NOOP( "The KDE Address Book" ), 395 "3.1", I18N_NOOP( "The KDE Address Book" ),
389 KAboutData::License_GPL_V2, 396 KAboutData::License_GPL_V2,
390 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) ); 397 I18N_NOOP( "(c) 1997-2003, The KDE PIM Team" ) );
391 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" ); 398 about->addAuthor( "Tobias Koenig", I18N_NOOP( "Current maintainer " ), "tokoe@kde.org" );
392 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) ); 399 about->addAuthor( "Don Sanders", I18N_NOOP( "Original author " ) );
393 about->addAuthor( "Cornelius Schumacher", 400 about->addAuthor( "Cornelius Schumacher",
394 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ), 401 I18N_NOOP( "Co-maintainer, libkabc port, CSV import/export " ),
395 "schumacher@kde.org" ); 402 "schumacher@kde.org" );
396 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ), 403 about->addAuthor( "Mike Pilone", I18N_NOOP( "GUI and framework redesign " ),
397 "mpilone@slac.com" ); 404 "mpilone@slac.com" );
398 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) ); 405 about->addAuthor( "Greg Stern", I18N_NOOP( "DCOP interface" ) );
399 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) ); 406 about->addAuthor( "Mark Westcott", I18N_NOOP( "Contact pinning" ) );
400 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" ),
401 "michel@klaralvdalens-datakonsult.se" ); 408 "michel@klaralvdalens-datakonsult.se" );
402 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ), 409 about->addAuthor( "Steffen Hansen", I18N_NOOP( "LDAP Lookup " ),
403 "hansen@kde.org" ); 410 "hansen@kde.org" );
404 411
405 return about; 412 return about;
406#endif //KAB_EMBEDDED 413#endif //KAB_EMBEDDED
407 414
408 QString version; 415 QString version;
409#include <../version> 416#include <../version>
410 QMessageBox::about( this, "About KAddressbook/Pi", 417 QMessageBox::about( this, "About KAddressbook/Pi",
411 "KAddressbook/Platform-independent\n" 418 "KAddressbook/Platform-independent\n"
412 "(KA/Pi) " +version + " - " + 419 "(KA/Pi) " +version + " - " +
413#ifdef DESKTOP_VERSION 420#ifdef DESKTOP_VERSION
414 "Desktop Edition\n" 421 "Desktop Edition\n"
415#else 422#else
416 "PDA-Edition\n" 423 "PDA-Edition\n"
417 "for: Zaurus 5500 / 7x0 / 8x0\n" 424 "for: Zaurus 5500 / 7x0 / 8x0\n"
418#endif 425#endif
419 426
420 "(c) 2004 Ulf Schenk\n" 427 "(c) 2004 Ulf Schenk\n"
428 "(c) 2004 Lutz Rogowski\n"
421 "(c) 1997-2003, The KDE PIM Team\n" 429 "(c) 1997-2003, The KDE PIM Team\n"
422 "Tobias Koenig Current maintainer tokoe@kde.org\n" 430 "Tobias Koenig Current maintainer\ntokoe@kde.org\n"
423 "Don Sanders Original author\n" 431 "Don Sanders Original author\n"
424 "Cornelius Schumacher Co-maintainer schumacher@kde.org\n" 432 "Cornelius Schumacher Co-maintainer\nschumacher@kde.org\n"
425 "Mike Pilone GUI and framework redesign mpilone@slac.com\n" 433 "Mike Pilone GUI and framework redesign\nmpilone@slac.com\n"
426 "Greg Stern DCOP interface\n" 434 "Greg Stern DCOP interface\n"
427 "Mark Westcot Contact pinning\n" 435 "Mark Westcot Contact pinning\n"
428 "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"
429 "Steffen Hansen LDAP Lookup hansen@kde.org\n" 437 "Steffen Hansen LDAP Lookup\nhansen@kde.org\n"
430#ifdef _WIN32_ 438#ifdef _WIN32_
431 "(c) 2004 Lutz Rogowski Import from OL rogowski@kde.org\n" 439 "(c) 2004 Lutz Rogowski Import from OL\nrogowski@kde.org\n"
432#endif 440#endif
433 ); 441 );
434} 442}
435 443
436void KABCore::setContactSelected( const QString &uid ) 444void KABCore::setContactSelected( const QString &uid )
437{ 445{
438 KABC::Addressee addr = mAddressBook->findByUid( uid ); 446 KABC::Addressee addr = mAddressBook->findByUid( uid );
439 if ( !mDetails->isHidden() ) 447 if ( !mDetails->isHidden() )
440 mDetails->setAddressee( addr ); 448 mDetails->setAddressee( addr );
441 449
442 if ( !addr.isEmpty() ) { 450 if ( !addr.isEmpty() ) {
443 emit contactSelected( addr.formattedName() ); 451 emit contactSelected( addr.formattedName() );
444 KABC::Picture pic = addr.photo(); 452 KABC::Picture pic = addr.photo();
445 if ( pic.isIntern() ) { 453 if ( pic.isIntern() ) {
446//US emit contactSelected( pic.data() ); 454//US emit contactSelected( pic.data() );
447//US instead use: 455//US instead use:
448 QPixmap px; 456 QPixmap px;
449 if (pic.data().isNull() != true) 457 if (pic.data().isNull() != true)
450 { 458 {
451 px.convertFromImage(pic.data()); 459 px.convertFromImage(pic.data());
452 } 460 }
453 461
454 emit contactSelected( px ); 462 emit contactSelected( px );
455 } 463 }
456 } 464 }
457 465
458 466
459 mExtensionManager->setSelectionChanged(); 467 mExtensionManager->setSelectionChanged();
460 468
461 // update the actions 469 // update the actions
462 bool selected = !uid.isEmpty(); 470 bool selected = !uid.isEmpty();
463 471
464 if ( mReadWrite ) { 472 if ( mReadWrite ) {
465 mActionCut->setEnabled( selected ); 473 mActionCut->setEnabled( selected );
466 mActionPaste->setEnabled( selected ); 474 mActionPaste->setEnabled( selected );
467 } 475 }
468 476
469 mActionCopy->setEnabled( selected ); 477 mActionCopy->setEnabled( selected );
470 mActionDelete->setEnabled( selected ); 478 mActionDelete->setEnabled( selected );
471 mActionEditAddressee->setEnabled( selected ); 479 mActionEditAddressee->setEnabled( selected );
472 mActionMail->setEnabled( selected ); 480 mActionMail->setEnabled( selected );
473 mActionMailVCard->setEnabled( selected ); 481 mActionMailVCard->setEnabled( selected );
474 //if (mActionBeam) 482 //if (mActionBeam)
475 //mActionBeam->setEnabled( selected ); 483 //mActionBeam->setEnabled( selected );
476 484
477 if (mActionBeamVCard) 485 if (mActionBeamVCard)
478 mActionBeamVCard->setEnabled( selected ); 486 mActionBeamVCard->setEnabled( selected );
479 487
@@ -1689,99 +1697,103 @@ void KABCore::initActions()
1689 mActionConfigureToolbars->setEnabled( false ); 1697 mActionConfigureToolbars->setEnabled( false );
1690#endif //KAB_EMBEDDED 1698#endif //KAB_EMBEDDED
1691 1699
1692 } else { 1700 } else {
1693 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() ); 1701 mActionConfigKAddressbook = KStdAction::preferences( this, SLOT( openConfigDialog() ), actionCollection() );
1694 1702
1695 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() ); 1703 mActionKeyBindings = KStdAction::keyBindings( this, SLOT( configureKeyBindings() ), actionCollection() );
1696 } 1704 }
1697 1705
1698 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0, 1706 mActionJumpBar = new KToggleAction( i18n( "Show Jump Bar" ), 0, 0,
1699 actionCollection(), "options_show_jump_bar" ); 1707 actionCollection(), "options_show_jump_bar" );
1700 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) ); 1708 connect( mActionJumpBar, SIGNAL( toggled( bool ) ), SLOT( setJumpButtonBarVisible( bool ) ) );
1701 1709
1702 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0, 1710 mActionDetails = new KToggleAction( i18n( "Show Details" ), "listview", 0,
1703 actionCollection(), "options_show_details" ); 1711 actionCollection(), "options_show_details" );
1704 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) ); 1712 connect( mActionDetails, SIGNAL( toggled( bool ) ), SLOT( setDetailsVisible( bool ) ) );
1705 1713
1706 // misc 1714 // misc
1707 // only enable LDAP lookup if we can handle the protocol 1715 // only enable LDAP lookup if we can handle the protocol
1708#ifndef KAB_EMBEDDED 1716#ifndef KAB_EMBEDDED
1709 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) { 1717 if ( KProtocolInfo::isKnownProtocol( KURL( "ldap://localhost" ) ) ) {
1710 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0, 1718 new KAction( i18n( "&Lookup Addresses in Directory" ), "find", 0,
1711 this, SLOT( openLDAPDialog() ), actionCollection(), 1719 this, SLOT( openLDAPDialog() ), actionCollection(),
1712 "ldap_lookup" ); 1720 "ldap_lookup" );
1713 } 1721 }
1714#else //KAB_EMBEDDED 1722#else //KAB_EMBEDDED
1715 //qDebug("KABCore::initActions() LDAP has to be implemented"); 1723 //qDebug("KABCore::initActions() LDAP has to be implemented");
1716#endif //KAB_EMBEDDED 1724#endif //KAB_EMBEDDED
1717 1725
1718 1726
1719 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this, 1727 mActionWhoAmI = new KAction( i18n( "Set Who Am I" ), "personal", 0, this,
1720 SLOT( setWhoAmI() ), actionCollection(), 1728 SLOT( setWhoAmI() ), actionCollection(),
1721 "set_personal" ); 1729 "set_personal" );
1722 1730
1723 1731
1724 1732
1725 1733
1726 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this, 1734 mActionCategories = new KAction( i18n( "Set Categories" ), 0, this,
1727 SLOT( setCategories() ), actionCollection(), 1735 SLOT( setCategories() ), actionCollection(),
1728 "edit_set_categories" ); 1736 "edit_set_categories" );
1729 1737
1730 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this, 1738 mActionRemoveVoice = new KAction( i18n( "Remove \"voice\"..." ), 0, this,
1731 SLOT( removeVoice() ), actionCollection(), 1739 SLOT( removeVoice() ), actionCollection(),
1732 "remove_voice" ); 1740 "remove_voice" );
1733 mActionImportOL = new KAction( i18n( "Import from OL..." ), 0, this, 1741 mActionImportOL = new KAction( i18n( "Import from OL..." ), 0, this,
1734 SLOT( importFromOL() ), actionCollection(), 1742 SLOT( importFromOL() ), actionCollection(),
1735 "import_OL" ); 1743 "import_OL" );
1736#ifdef KAB_EMBEDDED 1744#ifdef KAB_EMBEDDED
1737 mActionLicence = new KAction( i18n( "Licence" ), "licence", 0, 1745 mActionLicence = new KAction( i18n( "Licence" ), 0,
1738 this, SLOT( showLicence() ), actionCollection(), 1746 this, SLOT( showLicence() ), actionCollection(),
1739 "licence_about_data" ); 1747 "licence_about_data" );
1748 mActionFaq = new KAction( i18n( "Faq" ), 0,
1749 this, SLOT( faq() ), actionCollection(),
1750 "faq_about_data" );
1751
1740 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0, 1752 mActionAboutKAddressbook = new KAction( i18n( "&About KAddressBook" ), "kaddressbook2", 0,
1741 this, SLOT( createAboutData() ), actionCollection(), 1753 this, SLOT( createAboutData() ), actionCollection(),
1742 "kaddressbook_about_data" ); 1754 "kaddressbook_about_data" );
1743#endif //KAB_EMBEDDED 1755#endif //KAB_EMBEDDED
1744 1756
1745 clipboardDataChanged(); 1757 clipboardDataChanged();
1746 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1758 connect( UndoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1747 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) ); 1759 connect( RedoStack::instance(), SIGNAL( changed() ), SLOT( updateActionMenu() ) );
1748} 1760}
1749 1761
1750//US we need this function, to plug all actions into the correct menues. 1762//US we need this function, to plug all actions into the correct menues.
1751// KDE uses a XML format to plug the actions, but we work her without this overhead. 1763// KDE uses a XML format to plug the actions, but we work her without this overhead.
1752void KABCore::addActionsManually() 1764void KABCore::addActionsManually()
1753{ 1765{
1754//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart); 1766//US qDebug("KABCore::initActions(): mIsPart %i", mIsPart);
1755 1767
1756#ifdef KAB_EMBEDDED 1768#ifdef KAB_EMBEDDED
1757 QPopupMenu *fileMenu = new QPopupMenu( this ); 1769 QPopupMenu *fileMenu = new QPopupMenu( this );
1758 QPopupMenu *editMenu = new QPopupMenu( this ); 1770 QPopupMenu *editMenu = new QPopupMenu( this );
1759 QPopupMenu *helpMenu = new QPopupMenu( this ); 1771 QPopupMenu *helpMenu = new QPopupMenu( this );
1760 1772
1761 KToolBar* tb = mMainWindow->toolBar(); 1773 KToolBar* tb = mMainWindow->toolBar();
1762 1774
1763#ifdef DESKTOP_VERSION 1775#ifdef DESKTOP_VERSION
1764 QMenuBar* mb = mMainWindow->menuBar(); 1776 QMenuBar* mb = mMainWindow->menuBar();
1765 1777
1766 //US setup menubar. 1778 //US setup menubar.
1767 //Disable the following block if you do not want to have a menubar. 1779 //Disable the following block if you do not want to have a menubar.
1768 mb->insertItem( "&File", fileMenu ); 1780 mb->insertItem( "&File", fileMenu );
1769 mb->insertItem( "&Edit", editMenu ); 1781 mb->insertItem( "&Edit", editMenu );
1770 mb->insertItem( "&View", viewMenu ); 1782 mb->insertItem( "&View", viewMenu );
1771 mb->insertItem( "&Settings", settingsMenu ); 1783 mb->insertItem( "&Settings", settingsMenu );
1772 mb->insertItem( "&Change selected", changeMenu ); 1784 mb->insertItem( "&Change selected", changeMenu );
1773 mb->insertItem( "&Help", helpMenu ); 1785 mb->insertItem( "&Help", helpMenu );
1774 mIncSearchWidget = new IncSearchWidget( tb ); 1786 mIncSearchWidget = new IncSearchWidget( tb );
1775 // tb->insertWidget(-1, 0, mIncSearchWidget); 1787 // tb->insertWidget(-1, 0, mIncSearchWidget);
1776 1788
1777#else 1789#else
1778 //US setup toolbar 1790 //US setup toolbar
1779 QMenuBar *menuBarTB = new QMenuBar( tb ); 1791 QMenuBar *menuBarTB = new QMenuBar( tb );
1780 QPopupMenu *popupBarTB = new QPopupMenu( this ); 1792 QPopupMenu *popupBarTB = new QPopupMenu( this );
1781 menuBarTB->insertItem( "ME", popupBarTB); 1793 menuBarTB->insertItem( "ME", popupBarTB);
1782 tb->insertWidget(-1, 0, menuBarTB); 1794 tb->insertWidget(-1, 0, menuBarTB);
1783 mIncSearchWidget = new IncSearchWidget( tb ); 1795 mIncSearchWidget = new IncSearchWidget( tb );
1784 1796
1785 tb->enableMoving(false); 1797 tb->enableMoving(false);
1786 popupBarTB->insertItem( "&File", fileMenu ); 1798 popupBarTB->insertItem( "&File", fileMenu );
1787 popupBarTB->insertItem( "&Edit", editMenu ); 1799 popupBarTB->insertItem( "&Edit", editMenu );
@@ -1820,98 +1832,99 @@ void KABCore::addActionsManually()
1820#ifndef DESKTOP_VERSION 1832#ifndef DESKTOP_VERSION
1821 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu ); 1833 if ( Ir::supported() ) mActionBeamVCard->plug( fileMenu );
1822 if ( Ir::supported() ) mActionBeam->plug(fileMenu ); 1834 if ( Ir::supported() ) mActionBeam->plug(fileMenu );
1823#endif 1835#endif
1824 fileMenu->insertSeparator(); 1836 fileMenu->insertSeparator();
1825 mActionQuit->plug( fileMenu ); 1837 mActionQuit->plug( fileMenu );
1826#ifdef _WIN32_ 1838#ifdef _WIN32_
1827 mActionImportOL->plug( ImportMenu ); 1839 mActionImportOL->plug( ImportMenu );
1828#endif 1840#endif
1829 // edit menu 1841 // edit menu
1830 mActionUndo->plug( editMenu ); 1842 mActionUndo->plug( editMenu );
1831 mActionRedo->plug( editMenu ); 1843 mActionRedo->plug( editMenu );
1832 editMenu->insertSeparator(); 1844 editMenu->insertSeparator();
1833 mActionCut->plug( editMenu ); 1845 mActionCut->plug( editMenu );
1834 mActionCopy->plug( editMenu ); 1846 mActionCopy->plug( editMenu );
1835 mActionPaste->plug( editMenu ); 1847 mActionPaste->plug( editMenu );
1836 mActionDelete->plug( editMenu ); 1848 mActionDelete->plug( editMenu );
1837 editMenu->insertSeparator(); 1849 editMenu->insertSeparator();
1838 mActionSelectAll->plug( editMenu ); 1850 mActionSelectAll->plug( editMenu );
1839 1851
1840 mActionRemoveVoice->plug( changeMenu ); 1852 mActionRemoveVoice->plug( changeMenu );
1841 // settings menu 1853 // settings menu
1842//US special menuentry to configure the addressbook resources. On KDE 1854//US special menuentry to configure the addressbook resources. On KDE
1843// you do that through the control center !!! 1855// you do that through the control center !!!
1844 mActionConfigResources->plug( settingsMenu ); 1856 mActionConfigResources->plug( settingsMenu );
1845 settingsMenu->insertSeparator(); 1857 settingsMenu->insertSeparator();
1846 1858
1847 mActionConfigKAddressbook->plug( settingsMenu ); 1859 mActionConfigKAddressbook->plug( settingsMenu );
1848 1860
1849 if ( mIsPart ) { 1861 if ( mIsPart ) {
1850 mActionConfigShortcuts->plug( settingsMenu ); 1862 mActionConfigShortcuts->plug( settingsMenu );
1851 mActionConfigureToolbars->plug( settingsMenu ); 1863 mActionConfigureToolbars->plug( settingsMenu );
1852 1864
1853 } else { 1865 } else {
1854 mActionKeyBindings->plug( settingsMenu ); 1866 mActionKeyBindings->plug( settingsMenu );
1855 } 1867 }
1856 1868
1857 settingsMenu->insertSeparator(); 1869 settingsMenu->insertSeparator();
1858 1870
1859 mActionJumpBar->plug( settingsMenu ); 1871 mActionJumpBar->plug( settingsMenu );
1860 mActionDetails->plug( settingsMenu ); 1872 mActionDetails->plug( settingsMenu );
1861 if (!KABPrefs::instance()->mMultipleViewsAtOnce ) 1873 if (!KABPrefs::instance()->mMultipleViewsAtOnce )
1862 mActionDetails->plug( tb ); 1874 mActionDetails->plug( tb );
1863 settingsMenu->insertSeparator(); 1875 settingsMenu->insertSeparator();
1864 1876
1865 mActionWhoAmI->plug( settingsMenu ); 1877 mActionWhoAmI->plug( settingsMenu );
1866 mActionCategories->plug( settingsMenu ); 1878 mActionCategories->plug( settingsMenu );
1867 1879
1868 mActionAboutKAddressbook->plug( helpMenu );
1869 mActionLicence->plug( helpMenu ); 1880 mActionLicence->plug( helpMenu );
1881 mActionFaq->plug( helpMenu );
1882 mActionAboutKAddressbook->plug( helpMenu );
1870 1883
1871 if (KGlobal::getDesktopSize() > KGlobal::Small ) { 1884 if (KGlobal::getDesktopSize() > KGlobal::Small ) {
1872 1885
1873 mActionSave->plug( tb ); 1886 mActionSave->plug( tb );
1874 mViewManager->getFilterAction()->plug ( tb); 1887 mViewManager->getFilterAction()->plug ( tb);
1875 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) { 1888 if (KGlobal::getDesktopSize() == KGlobal::Desktop ) {
1876 mActionUndo->plug( tb ); 1889 mActionUndo->plug( tb );
1877 mActionDelete->plug( tb ); 1890 mActionDelete->plug( tb );
1878 mActionRedo->plug( tb ); 1891 mActionRedo->plug( tb );
1879 } 1892 }
1880 } 1893 }
1881 //mActionQuit->plug ( tb ); 1894 //mActionQuit->plug ( tb );
1882 // tb->insertWidget(-1, 0, mIncSearchWidget, 6); 1895 // tb->insertWidget(-1, 0, mIncSearchWidget, 6);
1883 1896
1884 //US link the searchwidget first to this. 1897 //US link the searchwidget first to this.
1885 // The real linkage to the toolbar happens later. 1898 // The real linkage to the toolbar happens later.
1886//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE); 1899//US mIncSearchWidget->reparent(tb, 0, QPoint(50,0), TRUE);
1887//US tb->insertItem( mIncSearchWidget ); 1900//US tb->insertItem( mIncSearchWidget );
1888/*US 1901/*US
1889 mIncSearchWidget = new IncSearchWidget( tb ); 1902 mIncSearchWidget = new IncSearchWidget( tb );
1890 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ), 1903 connect( mIncSearchWidget, SIGNAL( doSearch( const QString& ) ),
1891 SLOT( incrementalSearch( const QString& ) ) ); 1904 SLOT( incrementalSearch( const QString& ) ) );
1892 1905
1893 mJumpButtonBar = new JumpButtonBar( this, this ); 1906 mJumpButtonBar = new JumpButtonBar( this, this );
1894 1907
1895//US topLayout->addWidget( mJumpButtonBar ); 1908//US topLayout->addWidget( mJumpButtonBar );
1896 this->layout()->add( mJumpButtonBar ); 1909 this->layout()->add( mJumpButtonBar );
1897*/ 1910*/
1898 1911
1899#endif //KAB_EMBEDDED 1912#endif //KAB_EMBEDDED
1900} 1913}
1901void KABCore::showLicence() 1914void KABCore::showLicence()
1902{ 1915{
1903 KApplication::showLicence(); 1916 KApplication::showLicence();
1904} 1917}
1905void KABCore::removeVoice() 1918void KABCore::removeVoice()
1906{ 1919{
1907 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 ) 1920 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 )
1908 return; 1921 return;
1909 KABC::Addressee::List list = mViewManager->selectedAddressees(); 1922 KABC::Addressee::List list = mViewManager->selectedAddressees();
1910 KABC::Addressee::List::Iterator it; 1923 KABC::Addressee::List::Iterator it;
1911 for ( it = list.begin(); it != list.end(); ++it ) { 1924 for ( it = list.begin(); it != list.end(); ++it ) {
1912 PhoneNumber::List phoneNumbers = (*it).phoneNumbers(); 1925 PhoneNumber::List phoneNumbers = (*it).phoneNumbers();
1913 PhoneNumber::List::Iterator phoneIt; 1926 PhoneNumber::List::Iterator phoneIt;
1914 bool found = false; 1927 bool found = false;
1915 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) { 1928 for ( phoneIt = phoneNumbers.begin(); phoneIt != phoneNumbers.end(); ++phoneIt ) {
1916 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found 1929 if ( (*phoneIt).type() & PhoneNumber::Voice) { // voice found
1917 if ((*phoneIt).type() - PhoneNumber::Voice ) { 1930 if ((*phoneIt).type() - PhoneNumber::Voice ) {
@@ -2023,53 +2036,59 @@ void KABCore::requestForDetails(const QString& sourceChannel, const QString& ses
2023 if ((namelist.count() == 0) && (emaillist.count() > 0)) 2036 if ((namelist.count() == 0) && (emaillist.count() > 0))
2024 foundUid == emaillist[0].uid(); 2037 foundUid == emaillist[0].uid();
2025 else if ((namelist.count() > 0) && (emaillist.count() == 0)) 2038 else if ((namelist.count() > 0) && (emaillist.count() == 0))
2026 foundUid == namelist[0].uid(); 2039 foundUid == namelist[0].uid();
2027 else 2040 else
2028 { 2041 {
2029 for (int i = 0; i < namelist.count(); i++) 2042 for (int i = 0; i < namelist.count(); i++)
2030 { 2043 {
2031 for (int j = 0; j < emaillist.count(); j++) 2044 for (int j = 0; j < emaillist.count(); j++)
2032 { 2045 {
2033 if (namelist[i] == emaillist[j]) 2046 if (namelist[i] == emaillist[j])
2034 { 2047 {
2035 foundUid == namelist[i].uid(); 2048 foundUid == namelist[i].uid();
2036 } 2049 }
2037 } 2050 }
2038 } 2051 }
2039 } 2052 }
2040 } 2053 }
2041 else 2054 else
2042 { 2055 {
2043 foundUid = uid; 2056 foundUid = uid;
2044 } 2057 }
2045 2058
2046 if (!foundUid.isEmpty()) 2059 if (!foundUid.isEmpty())
2047 { 2060 {
2048 // raise Ka/Pi if it is in the background 2061 // raise Ka/Pi if it is in the background
2049#ifndef DESKTOP_VERSION 2062#ifndef DESKTOP_VERSION
2050#ifndef KORG_NODCOP 2063#ifndef KORG_NODCOP
2051 QCopEnvelope e("QPE/Application/kapi", "raise()"); 2064 QCopEnvelope e("QPE/Application/kapi", "raise()");
2052#endif 2065#endif
2053#endif 2066#endif
2054 2067
2055 mMainWindow->showMaximized(); 2068 mMainWindow->showMaximized();
2056 2069
2057 mViewManager->setSelected( "", false); 2070 mViewManager->setSelected( "", false);
2058 mViewManager->refreshView( "" ); 2071 mViewManager->refreshView( "" );
2059 mViewManager->setSelected( foundUid, true ); 2072 mViewManager->setSelected( foundUid, true );
2060 mViewManager->refreshView( foundUid ); 2073 mViewManager->refreshView( foundUid );
2061 2074
2062 if ( !mMultipleViewsAtOnce ) 2075 if ( !mMultipleViewsAtOnce )
2063 { 2076 {
2064 setDetailsVisible( true ); 2077 setDetailsVisible( true );
2065 mActionDetails->setChecked(true); 2078 mActionDetails->setChecked(true);
2066 } 2079 }
2067 } 2080 }
2068} 2081}
2069 2082
2070 2083
2084void KABCore::faq()
2085{
2086 KApplication::showFile( "KA/Pi FAQ", "kdepim/kaddressbook/kapiFAQ.txt" );
2087}
2088
2089
2071 2090
2072 2091
2073#ifndef KAB_EMBEDDED 2092#ifndef KAB_EMBEDDED
2074#include "kabcore.moc" 2093#include "kabcore.moc"
2075#endif //KAB_EMBEDDED 2094#endif //KAB_EMBEDDED
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h
index 040b6aa..39d043f 100644
--- a/kaddressbook/kabcore.h
+++ b/kaddressbook/kabcore.h
@@ -98,96 +98,98 @@ class KABCore : public QWidget
98 Returns a pointer to the StdAddressBook of the application. 98 Returns a pointer to the StdAddressBook of the application.
99 */ 99 */
100 KABC::AddressBook *addressBook() const; 100 KABC::AddressBook *addressBook() const;
101 101
102 /** 102 /**
103 Returns a pointer to the KConfig object of the application. 103 Returns a pointer to the KConfig object of the application.
104 */ 104 */
105 static KConfig *config(); 105 static KConfig *config();
106 106
107 /** 107 /**
108 Returns a pointer to the global KActionCollection object. So 108 Returns a pointer to the global KActionCollection object. So
109 other classes can register their actions easily. 109 other classes can register their actions easily.
110 */ 110 */
111 KActionCollection *actionCollection() const; 111 KActionCollection *actionCollection() const;
112 112
113 /** 113 /**
114 Returns the current search field of the Incremental Search Widget. 114 Returns the current search field of the Incremental Search Widget.
115 */ 115 */
116 KABC::Field *currentSearchField() const; 116 KABC::Field *currentSearchField() const;
117 117
118 /** 118 /**
119 Returns the uid list of the currently selected contacts. 119 Returns the uid list of the currently selected contacts.
120 */ 120 */
121 QStringList selectedUIDs() const; 121 QStringList selectedUIDs() const;
122 122
123 /** 123 /**
124 Displays the ResourceSelectDialog and returns the selected 124 Displays the ResourceSelectDialog and returns the selected
125 resource or a null pointer if no resource was selected by 125 resource or a null pointer if no resource was selected by
126 the user. 126 the user.
127 */ 127 */
128 KABC::Resource *requestResource( QWidget *parent ); 128 KABC::Resource *requestResource( QWidget *parent );
129 129
130#ifndef KAB_EMBEDDED 130#ifndef KAB_EMBEDDED
131 static KAboutData *createAboutData(); 131 static KAboutData *createAboutData();
132#endif //KAB_EMBEDDED 132#endif //KAB_EMBEDDED
133 133
134#ifdef KAB_EMBEDDED 134#ifdef KAB_EMBEDDED
135 inline QPopupMenu* getImportMenu() { return ImportMenu;} 135 inline QPopupMenu* getImportMenu() { return ImportMenu;}
136 inline QPopupMenu* getExportMenu() { return ExportMenu;} 136 inline QPopupMenu* getExportMenu() { return ExportMenu;}
137#endif //KAB_EMBEDDED 137#endif //KAB_EMBEDDED
138 138
139 public slots: 139 public slots:
140#ifdef KAB_EMBEDDED 140#ifdef KAB_EMBEDDED
141 void createAboutData(); 141 void createAboutData();
142#endif //KAB_EMBEDDED 142#endif //KAB_EMBEDDED
143 143
144 void statusMessage(QString, int time = 0 ); 144 void statusMessage(QString, int time = 0 );
145 void showLicence(); 145 void showLicence();
146 void faq();
147
146 /** 148 /**
147 Is called whenever a contact is selected in the view. 149 Is called whenever a contact is selected in the view.
148 */ 150 */
149 void setContactSelected( const QString &uid ); 151 void setContactSelected( const QString &uid );
150 152
151 /** 153 /**
152 Opens the preferred mail composer with all selected contacts as 154 Opens the preferred mail composer with all selected contacts as
153 arguments. 155 arguments.
154 */ 156 */
155 void sendMail(); 157 void sendMail();
156 158
157 /** 159 /**
158 Opens the preferred mail composer with the given contacts as 160 Opens the preferred mail composer with the given contacts as
159 arguments. 161 arguments.
160 */ 162 */
161 void sendMail( const QString& email ); 163 void sendMail( const QString& email );
162 164
163 165
164 void mailVCard(); 166 void mailVCard();
165 void mailVCard(const QStringList& uids); 167 void mailVCard(const QStringList& uids);
166 168
167 /** 169 /**
168 Beams the "WhoAmI contact. 170 Beams the "WhoAmI contact.
169 */ 171 */
170 void beamMySelf(); 172 void beamMySelf();
171 173
172 void beamVCard(); 174 void beamVCard();
173 void beamVCard(const QStringList& uids); 175 void beamVCard(const QStringList& uids);
174 void beamDone( Ir *ir ); 176 void beamDone( Ir *ir );
175 177
176 178
177 /** 179 /**
178 Starts the preferred web browser with the given URL as argument. 180 Starts the preferred web browser with the given URL as argument.
179 */ 181 */
180 void browse( const QString& url ); 182 void browse( const QString& url );
181 183
182 /** 184 /**
183 Select all contacts in the view. 185 Select all contacts in the view.
184 */ 186 */
185 void selectAllContacts(); 187 void selectAllContacts();
186 188
187 /** 189 /**
188 Deletes all selected contacts from the address book. 190 Deletes all selected contacts from the address book.
189 */ 191 */
190 void deleteContacts(); 192 void deleteContacts();
191 193
192 /** 194 /**
193 Deletes given contacts from the address book. 195 Deletes given contacts from the address book.
@@ -377,77 +379,78 @@ class KABCore : public QWidget
377 ExtensionManager *mExtensionManager; 379 ExtensionManager *mExtensionManager;
378 380
379 KCMultiDialog *mConfigureDialog; 381 KCMultiDialog *mConfigureDialog;
380 382
381#ifndef KAB_EMBEDDED 383#ifndef KAB_EMBEDDED
382 LDAPSearchDialog *mLdapSearchDialog; 384 LDAPSearchDialog *mLdapSearchDialog;
383#endif //KAB_EMBEDDED 385#endif //KAB_EMBEDDED
384 // QDict<AddresseeEditorDialog> mEditorDict; 386 // QDict<AddresseeEditorDialog> mEditorDict;
385 AddresseeEditorDialog *mEditorDialog; 387 AddresseeEditorDialog *mEditorDialog;
386 bool mReadWrite; 388 bool mReadWrite;
387 bool mModified; 389 bool mModified;
388 bool mIsPart; 390 bool mIsPart;
389 bool mMultipleViewsAtOnce; 391 bool mMultipleViewsAtOnce;
390 392
391 393
392 //US file menu 394 //US file menu
393 KAction *mActionMail; 395 KAction *mActionMail;
394 KAction *mActionBeam; 396 KAction *mActionBeam;
395 KAction* mActionPrint; 397 KAction* mActionPrint;
396 KAction* mActionNewContact; 398 KAction* mActionNewContact;
397 KAction *mActionSave; 399 KAction *mActionSave;
398 KAction *mActionEditAddressee; 400 KAction *mActionEditAddressee;
399 KAction *mActionMailVCard; 401 KAction *mActionMailVCard;
400 KAction *mActionBeamVCard; 402 KAction *mActionBeamVCard;
401 403
402 KAction *mActionQuit; 404 KAction *mActionQuit;
403 405
404 //US edit menu 406 //US edit menu
405 KAction *mActionCopy; 407 KAction *mActionCopy;
406 KAction *mActionCut; 408 KAction *mActionCut;
407 KAction *mActionPaste; 409 KAction *mActionPaste;
408 KAction *mActionSelectAll; 410 KAction *mActionSelectAll;
409 KAction *mActionUndo; 411 KAction *mActionUndo;
410 KAction *mActionRedo; 412 KAction *mActionRedo;
411 KAction *mActionDelete; 413 KAction *mActionDelete;
412 414
413 //US settings menu 415 //US settings menu
414 KAction *mActionConfigResources; 416 KAction *mActionConfigResources;
415 KAction *mActionConfigKAddressbook; 417 KAction *mActionConfigKAddressbook;
416 KAction *mActionConfigShortcuts; 418 KAction *mActionConfigShortcuts;
417 KAction *mActionConfigureToolbars; 419 KAction *mActionConfigureToolbars;
418 KAction *mActionKeyBindings; 420 KAction *mActionKeyBindings;
419 KToggleAction *mActionJumpBar; 421 KToggleAction *mActionJumpBar;
420 KToggleAction *mActionDetails; 422 KToggleAction *mActionDetails;
421 KAction *mActionWhoAmI; 423 KAction *mActionWhoAmI;
422 KAction *mActionCategories; 424 KAction *mActionCategories;
423 KAction *mActionAboutKAddressbook; 425 KAction *mActionAboutKAddressbook;
424 KAction *mActionLicence; 426 KAction *mActionLicence;
427 KAction *mActionFaq;
425 428
426 KAction *mActionDeleteView; 429 KAction *mActionDeleteView;
427 430
428 QPopupMenu *viewMenu; 431 QPopupMenu *viewMenu;
429 QPopupMenu *filterMenu; 432 QPopupMenu *filterMenu;
430 QPopupMenu *settingsMenu; 433 QPopupMenu *settingsMenu;
431 QPopupMenu *changeMenu; 434 QPopupMenu *changeMenu;
432 435
433//US QAction *mActionSave; 436//US QAction *mActionSave;
434 QPopupMenu *ImportMenu; 437 QPopupMenu *ImportMenu;
435 QPopupMenu *ExportMenu; 438 QPopupMenu *ExportMenu;
436 //LR additional methods 439 //LR additional methods
437 KAction *mActionRemoveVoice; 440 KAction *mActionRemoveVoice;
438 KAction * mActionImportOL; 441 KAction * mActionImportOL;
439 442
440#ifndef KAB_EMBEDDED 443#ifndef KAB_EMBEDDED
441 KAddressBookService *mAddressBookService; 444 KAddressBookService *mAddressBookService;
442#endif //KAB_EMBEDDED 445#endif //KAB_EMBEDDED
443 446
444 class KABCorePrivate; 447 class KABCorePrivate;
445 KABCorePrivate *d; 448 KABCorePrivate *d;
446 449
447#ifdef KAB_EMBEDDED 450#ifdef KAB_EMBEDDED
448 KAddressBookMain *mMainWindow; // should be the same like mGUIClient 451 KAddressBookMain *mMainWindow; // should be the same like mGUIClient
449#endif //KAB_EMBEDDED 452#endif //KAB_EMBEDDED
450 453
451}; 454};
452 455
453#endif 456#endif