/* * jabberprotocol.h - Base class for the Kopete Jabber protocol * * Copyright (c) 2002-2003 by Till Gerken * Copyright (c) 2002 by Daniel Stone * * Kopete (c) by the Kopete developers * * ************************************************************************* * * * * * 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. * * * * * ************************************************************************* */ #ifndef JABBERPROTOCOL_H #define JABBERPROTOCOL_H #include #include #include #include #include #include #include #include "kopetecontact.h" #include "kopetecontactproperty.h" #include "kopetemetacontact.h" #include "kopeteonlinestatus.h" #include "addcontactpage.h" #define JABBER_DEBUG_GLOBAL 14130 #define JABBER_DEBUG_PROTOCOL 14131 namespace XMPP { class Resource; class Status; } class JabberContact; class dlgJabberStatus; class dlgJabberSendRaw; class JabberCapabilitiesManager; class JabberProtocol:public Kopete::Protocol { Q_OBJECT public: /** * Object constructor and destructor */ JabberProtocol (TQObject * parent, const char *name, const TQStringList &); ~JabberProtocol (); /** * Creates the "add contact" dialog specific to this protocol */ virtual AddContactPage *createAddContactWidget (TQWidget * parent, Kopete::Account * i); virtual KopeteEditAccountWidget *createEditAccountWidget (Kopete::Account * account, TQWidget * parent); virtual Kopete::Account *createNewAccount (const TQString & accountId); /** * Deserialize contact data */ virtual Kopete::Contact *deserializeContact (Kopete::MetaContact * metaContact, const TQMap < TQString, TQString > &serializedData, const TQMap < TQString, TQString > &addressBookData); enum OnlineStatus { JabberOnline, JabberFreeForChat, JabberAway, JabberXA, JabberDND, JabberOffline, JabberInvisible, JabberConnecting }; const Kopete::OnlineStatus JabberKOSChatty; const Kopete::OnlineStatus JabberKOSOnline; const Kopete::OnlineStatus JabberKOSAway; const Kopete::OnlineStatus JabberKOSXA; const Kopete::OnlineStatus JabberKOSDND; const Kopete::OnlineStatus JabberKOSOffline; const Kopete::OnlineStatus JabberKOSInvisible; const Kopete::OnlineStatus JabberKOSConnecting; const Kopete::ContactPropertyTmpl propLastSeen; const Kopete::ContactPropertyTmpl propAwayMessage; const Kopete::ContactPropertyTmpl propFirstName; const Kopete::ContactPropertyTmpl propLastName; const Kopete::ContactPropertyTmpl propFullName; const Kopete::ContactPropertyTmpl propEmailAddress; const Kopete::ContactPropertyTmpl propPrivatePhone; const Kopete::ContactPropertyTmpl propPrivateMobilePhone; const Kopete::ContactPropertyTmpl propWorkPhone; const Kopete::ContactPropertyTmpl propWorkMobilePhone; const Kopete::ContactPropertyTmpl propNickName; const Kopete::ContactPropertyTmpl propSubscriptionStatus; const Kopete::ContactPropertyTmpl propAuthorizationStatus; const Kopete::ContactPropertyTmpl propAvailableResources; const Kopete::ContactPropertyTmpl propVCardCacheTimeStamp; const Kopete::ContactPropertyTmpl propPhoto; // extra properties to match with vCard const Kopete::ContactPropertyTmpl propJid; const Kopete::ContactPropertyTmpl propBirthday; const Kopete::ContactPropertyTmpl propTimezone; const Kopete::ContactPropertyTmpl propHomepage; const Kopete::ContactPropertyTmpl propCompanyName; const Kopete::ContactPropertyTmpl propCompanyDepartement; const Kopete::ContactPropertyTmpl propCompanyPosition; const Kopete::ContactPropertyTmpl propCompanyRole; const Kopete::ContactPropertyTmpl propWorkStreet; const Kopete::ContactPropertyTmpl propWorkExtAddr; const Kopete::ContactPropertyTmpl propWorkPOBox; const Kopete::ContactPropertyTmpl propWorkCity; const Kopete::ContactPropertyTmpl propWorkPostalCode; const Kopete::ContactPropertyTmpl propWorkCountry; const Kopete::ContactPropertyTmpl propWorkEmailAddress; const Kopete::ContactPropertyTmpl propHomeStreet; const Kopete::ContactPropertyTmpl propHomeExtAddr; const Kopete::ContactPropertyTmpl propHomePOBox; const Kopete::ContactPropertyTmpl propHomeCity; const Kopete::ContactPropertyTmpl propHomePostalCode; const Kopete::ContactPropertyTmpl propHomeCountry; const Kopete::ContactPropertyTmpl propPhoneFax; const Kopete::ContactPropertyTmpl propAbout; /** * This returns our protocol instance */ static JabberProtocol *protocol (); /** * Return whether the protocol supports offline messages. */ bool canSendOffline() const { return true; } /** * Convert an XMPP::Resource status to a Kopete::OnlineStatus */ Kopete::OnlineStatus resourceToKOS ( const XMPP::Resource &resource ); /** * Convert an online status to a XMPP::Status */ XMPP::Status kosToStatus( const Kopete::OnlineStatus & status, const TQString& message=TQString() ); /** * Return the Entity Capabilities(JEP-0115) manager instance. */ JabberCapabilitiesManager *capabilitiesManager(); private: /* * Singleton instance of our protocol class */ static JabberProtocol *protocolInstance; /** * Unique Instance of the Entity Capabilities(JEP-0115) manager for Kopete Jabber plugin. */ JabberCapabilitiesManager *capsManager; }; #endif