diff options
Diffstat (limited to 'kaddressbook/kabcore.h')
-rw-r--r-- | kaddressbook/kabcore.h | 497 |
1 files changed, 497 insertions, 0 deletions
diff --git a/kaddressbook/kabcore.h b/kaddressbook/kabcore.h new file mode 100644 index 000000000..8cb2bc4d5 --- /dev/null +++ b/kaddressbook/kabcore.h @@ -0,0 +1,497 @@ +/* + This file is part of KAddressbook. + Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + As a special exception, permission is given to link this program + with any edition of Qt, and distribute the resulting executable, + without including the source code for Qt in the source distribution. +*/ + +#ifndef KABCORE_H +#define KABCORE_H + +#include <kabc/field.h> + +#include <qdict.h> +#include <qlabel.h> +#include <qwidget.h> + +#include "core.h" +#include <kdepimmacros.h> + +namespace KABC { +class AddressBook; +class Ticket; +} + +namespace KPIM { +class AddresseeView; +class CategoryEditDialog; +class CategorySelectDialog; +} + +class KAboutData; +class KAction; +class KActionCollection; +class KConfig; +class KStatusBar; +class KToggleAction; +class KXMLGUIClient; + +class QSplitter; +class QHBoxLayout; +class QWidgetStack; + +class AddresseeEditorDialog; +class ExtensionManager; +class FilterSelectionWidget; +class IncSearchWidget; +class JumpButtonBar; +class KAddressBookIface; +class KAddressBookService; +class KIMProxy; +class LDAPSearchDialog; +class ViewManager; +class XXPortManager; + +namespace KAB { + class DistributionListEntryView; +} + +typedef struct { + KABC::Ticket *ticket; + int counter; +} ResourceMapEntry; + +class KDE_EXPORT KABCore : public KAB::Core +{ + Q_OBJECT + + public: + KABCore( KXMLGUIClient *client, bool readWrite, QWidget *parent, + const QString &file = QString::null, const char *name = 0 ); + ~KABCore(); + + /** + Restores the global settings. + */ + void restoreSettings(); + + /** + Saves the global settings. + */ + void saveSettings(); + + /** + Returns a pointer to the StdAddressBook of the application. + */ + KABC::AddressBook *addressBook() const; + + /** + Returns a pointer to the KConfig object of the application. + */ + KConfig *config() const; + + /** + Returns a pointer to the global KActionCollection object. So + other classes can register their actions easily. + */ + KActionCollection *actionCollection() const; + + /** + Returns the current sort field of the view. + */ + KABC::Field *currentSortField() const; + + /** + Returns the uid list of the currently selected contacts. + */ + QStringList selectedUIDs() const; + + /** + Displays the ResourceSelectDialog and returns the selected + resource or a null pointer if no resource was selected by + the user. + */ + KABC::Resource *requestResource( QWidget *parent ); + + /** + Returns the parent widget. + */ + QWidget *widget() const; + + static KAboutData *createAboutData(); + + void setStatusBar( KStatusBar *statusBar ); + + KStatusBar *statusBar() const; + + KAB::SearchManager *searchManager() const { return mSearchManager; } + + KCommandHistory *commandHistory() const { return mCommandHistory; } + +#ifdef KDEPIM_NEW_DISTRLISTS + /** + Returns all the distribution lists. + */ + virtual KPIM::DistributionList::List distributionLists() const; + + /** + Returns the name of all the distribution lists. + */ + virtual QStringList distributionListNames() const; + + /** + sets the distribution list to display. If null, the regular + address book is to be displayed. + */ + virtual void setSelectedDistributionList( const QString &name ); +#endif + + public slots: + /** + Is called whenever a contact is selected in the view. + */ + void setContactSelected( const QString &uid ); + + /** + Opens the preferred mail composer with all selected contacts as + arguments. + */ + void sendMail(); + + /** + Opens the preferred mail composer with the given contacts as + arguments. + */ + void sendMail( const QString& email ); + + + void mailVCard(); + void mailVCard(const QStringList& uids); + + /** + * Start an Instant Messaging chat with the selected contacts + */ + void startChat(); + + /** + Starts the preferred web browser with the given URL as argument. + */ + void browse( const QString& url ); + + /** + Select all contacts in the view. + */ + void selectAllContacts(); + + /** + Deletes all selected contacts from the address book. + */ + void deleteContacts(); + + /** + Deletes given contacts from the address book. + + @param uids The uids of the contacts, which shall be deleted. + */ + void deleteContacts( const QStringList &uids ); + + /** + Deletes given distribution lists from the address book. + + @param uids The names of the distribution lists which shall be deleted. + */ + void deleteDistributionLists( const QStringList &names ); + + + /** + Copys the selected contacts into clipboard for later pasting. + */ + void copyContacts(); + + /** + Cuts the selected contacts and stores them for later pasting. + */ + void cutContacts(); + + /** + Paste contacts from clipboard into the address book. + */ + void pasteContacts(); + + /** + Paste given contacts into the address book. + + @param list The list of addressee, which shall be pasted. + */ + void pasteContacts( KABC::Addressee::List &list ); + + + /** + Merge the selected contacts in a single one. + */ + void mergeContacts(); + + /** + Sets the whoAmI contact, that is used by many other programs to + get personal information about the current user. + */ + void setWhoAmI(); + + /** + Displays the category dialog and applies the result to all + selected contacts. + */ + void setCategories(); + + /** + Search with the current search field for a contact, that matches + the given text, and selects it in the view. + */ + void incrementalTextSearch( const QString& text ); + + void incrementalJumpButtonSearch( const QString& characters ); + + /** + Marks the address book as modified. + */ + void setModified(); + + /** + Marks the address book as modified concerning the argument. + */ + void setModified( bool modified ); + + /** + Returns whether the address book is modified. + */ + bool modified() const; + + /** + Called whenever an contact is modified in the contact editor + dialog or the quick edit. + */ + void contactModified( const KABC::Addressee &addr ); + + /** + DCOP METHOD: Adds the given email address to address book. + */ + virtual void addEmail( const QString& addr ); + + /** + DCOP METHOD: Imports the vCard, located at the given url. + */ + virtual void importVCard( const KURL& url ); + + /** + DCOP METHOD: Imports the given vCard. + */ + virtual void importVCardFromData( const QString& vCard ); + + /** + DCOP METHOD: Opens contact editor to input a new contact. + */ + virtual void newContact(); + + /** + DCOP METHOD: Opens distribution list editor to create a new distribution list + */ + virtual void newDistributionList(); + + /** + DCOP METHOD: Returns the name of the contact, that matches the given + phone number. + */ + virtual QString getNameByPhone( const QString& phone ); + + /** + DCOP METHOD: Handle command line arguments, return true if handled + and false if no args was given. The iface is either the mainwin or the part. + */ + bool handleCommandLine( KAddressBookIface* iface ); + + + /** + Saves the contents of the AddressBook back to disk. + */ + void save(); + + /** + Shows the edit dialog for the given uid. If the uid is QString::null, + the method will try to find a selected addressee in the view. + */ + void editContact( const QString &uid = QString::null ); + + /** + * Let the user chose a different resource for the selected contacts. + * If the adding to the new resource is successfull, the contact is + * removed from the old one, unless the Copy flag is given. */ + void storeContactIn( const QString &uid = QString::null, bool copy = false ); + + /** + * Lets the user chose a different resource for the selected contacts and + * copies it there. + */ + void copySelectedContactToResource(); + + /** + * Lets the user chose a different resource for the selected contacts and + * moves it there. + */ + void moveSelectedContactToResource(); + + /** + Launches the ldap search dialog. + */ + void openLDAPDialog(); + + /** + Opens the settings dialog. + */ + void configure(); + + /** + Creates a KAddressBookPrinter, which will display the print + dialog and do the printing. + */ + void print(); + + void detailsHighlighted( const QString& ); + + void showContactsAddress( const QString &uid ); + + void configurationChanged(); + + bool queryClose(); + + /** + Is called whenever the xmlgui has to be rebuild after a part switch. + */ + void reinitXMLGUI(); + + private: + +#ifdef KDEPIM_NEW_DISTRLISTS + void editDistributionList( const KPIM::DistributionList &list ); + void showDistributionListEntry( const QString &uid ); +#endif + + private slots: + void setJumpButtonBarVisible( bool visible ); + void setDetailsVisible( bool visible ); + + void extensionModified( const KABC::Addressee::List &list ); + void extensionDeleted( const QStringList &uidList ); + void clipboardDataChanged(); + void updateIncSearchWidget(); + + void slotEditorDestroyed( const QString &uid ); + void delayedAddressBookChanged(); + void addressBookChanged(); + + void categoriesSelected( const QStringList& ); + void editCategories(); + void slotClearSearchBar(); + void slotContactsUpdated(); + + void activateDetailsWidget( QWidget *widget ); + void deactivateDetailsWidget( QWidget *widget ); + + void editDistributionList( const QString &name ); + + void removeSelectedContactsFromDistList(); + void editSelectedDistributionList(); + void sendMailToDistributionList( const QString &id ); + + private: + void initGUI(); + void createJumpButtonBar(); + void initActions(); + + void updateCategories(); + QStringList allCategories() const; + + AddresseeEditorDialog *createAddresseeEditorDialog( QWidget *parent, + const char *name = 0 ); + + QWidget *mWidget; + KABC::AddressBook *mAddressBook; + KStatusBar *mStatusBar; + + ViewManager *mViewManager; + QLabel *mViewHeaderLabel; + +#ifdef KDEPIM_NEW_DISTRLISTS + QString mSelectedDistributionList; + QWidget *mDistListButtonWidget; +#endif + + ExtensionManager *mExtensionManager; + XXPortManager *mXXPortManager; + + JumpButtonBar *mJumpButtonBar; + FilterSelectionWidget *mFilterSelectionWidget; + IncSearchWidget *mIncSearchWidget; + KAB::DistributionListEntryView* mDistListEntryView; + KPIM::AddresseeView *mDetailsViewer; + KPIM::CategorySelectDialog *mCategorySelectDialog; + KPIM::CategoryEditDialog *mCategoryEditDialog; + QWidget *mDetailsPage; + QWidget *mDetailsWidget; + QHBoxLayout *mDetailsLayout; + QSplitter *mDetailsSplitter; + QSplitter *mLeftSplitter; + QWidgetStack *mDetailsStack; + LDAPSearchDialog *mLdapSearchDialog; + QDict<AddresseeEditorDialog> mEditorDict; + + bool mReadWrite; + bool mModified; + bool mIsPart; + + QTimer *mAddressBookChangedTimer; + + KAction *mActionPaste; + KAction *mActionCut; + KAction *mActionDelete; + KAction *mActionCopy; + KAction *mActionEditAddressee; + KAction *mActionMoveAddresseeTo; + KAction *mActionCopyAddresseeTo; + KAction *mActionMerge; + KAction *mActionMail; + KAction *mActionMailVCard; + KAction *mActionChat; + KAction *mActionSave; + KAction *mActionDeleteView; + KAction *mActionWhoAmI; + KAction *mActionCategories; + KToggleAction *mActionJumpBar; + KToggleAction *mActionDetails; + KCommandHistory *mCommandHistory; + + KAddressBookService *mAddressBookService; + + KAB::SearchManager *mSearchManager; + // KIMProxy provides access to up to date instant messaging presence data + ::KIMProxy *mKIMProxy; + class KABCorePrivate; + KABCorePrivate *d; +}; + +#endif |