/* addressbooklink.h - Manages operations involving the KDE Address Book Copyright (c) 2005 Will Stephenson Kopete (c) 2002-2004 by the Kopete developers ************************************************************************* * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public * * License as published by the Free Software Foundation; either * * version 2 of the License, or (at your option) any later version. * * * ************************************************************************* */ #ifndef KOPETEADDRESSBOOKLINK_H #define KOPETEADDRESSBOOKLINK_H #include "kopete_export.h" // Goal is to have all the address book modifying code in one place // Currently in // *) Add Contact Wizard // *) KopeteMetaContact // *) KopeteAddrBookExport // *) KABC Export Wizard - TODO - think about sequence of events when adding addressees AND writing their IM data. - Extra save should be unnecessary because we are sharing a tdeabc instance // *) Select addressbook entry namespace TDEABC { class AddressBook; class Resource; } namespace Kopete { class MetaContact; class KOPETE_EXPORT KABCPersistence : public TQObject { TQ_OBJECT public: /** * \brief Retrieve the instance of AccountManager. * * The account manager is a singleton class of which only a single * instance will exist. If no manager exists yet this function will * create one for you. * * \return the instance of the AccountManager */ static KABCPersistence* self(); KABCPersistence( TQObject * parent = 0, const char * name = 0 ); ~KABCPersistence(); /** * @brief Access Kopete's KDE address book instance */ static TDEABC::AddressBook* addressBook(); /** * @brief Change the KABC data associated with this metacontact * * The KABC exposed data changed, so change it in KABC. * Replaces Kopete::MetaContact::updateKABC() */ void write( MetaContact * mc ); /** * @brief Remove any KABC data for this meta contact */ void removeKABC( MetaContact * mc ); /** * Check for any new addresses added to this contact's KABC entry * and prompt if they should be added in Kopete too. * @return whether any contacts were added from KABC. */ bool syncWithKABC( MetaContact * mc ); /** * Request an address book write, will be delayed to bundle any others happening around the same time */ void writeAddressBook( const TDEABC::Resource * res ); protected: static void splitField( const TQString &str, TQString &app, TQString &name, TQString &value ); void dumpAB(); protected slots: /** * Perform a delayed address book write */ void slotWriteAddressBook(); private: static KABCPersistence * s_self; static TDEABC::AddressBook* s_addressBook; static bool s_addrBookWritePending; static TQPtrList s_pendingResources; }; } // end namespace Kopete #endif