summaryrefslogtreecommitdiffstats
path: root/kopete/protocols/jabber/jabberprotocol.h
diff options
context:
space:
mode:
Diffstat (limited to 'kopete/protocols/jabber/jabberprotocol.h')
-rw-r--r--kopete/protocols/jabber/jabberprotocol.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/kopete/protocols/jabber/jabberprotocol.h b/kopete/protocols/jabber/jabberprotocol.h
new file mode 100644
index 00000000..798aafb4
--- /dev/null
+++ b/kopete/protocols/jabber/jabberprotocol.h
@@ -0,0 +1,164 @@
+ /*
+ * jabberprotocol.h - Base class for the Kopete Jabber protocol
+ *
+ * Copyright (c) 2002-2003 by Till Gerken <till@tantalo.net>
+ * Copyright (c) 2002 by Daniel Stone <dstone@kde.org>
+ *
+ * Kopete (c) by the Kopete developers <kopete-devel@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. *
+ * * *
+ * *************************************************************************
+ */
+
+#ifndef JABBERPROTOCOL_H
+#define JABBERPROTOCOL_H
+
+#include <qstring.h>
+#include <qstringlist.h>
+#include <qmap.h>
+#include <qpixmap.h>
+#include <qmovie.h>
+#include <kaction.h>
+#include <kpopupmenu.h>
+
+#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 (QObject * parent, const char *name, const QStringList &);
+ ~JabberProtocol ();
+
+ /**
+ * Creates the "add contact" dialog specific to this protocol
+ */
+ virtual AddContactPage *createAddContactWidget (QWidget * parent, Kopete::Account * i);
+ virtual KopeteEditAccountWidget *createEditAccountWidget (Kopete::Account * account, QWidget * parent);
+ virtual Kopete::Account *createNewAccount (const QString & accountId);
+
+ /**
+ * Deserialize contact data
+ */
+ virtual Kopete::Contact *deserializeContact (Kopete::MetaContact * metaContact,
+ const QMap < QString, QString > &serializedData, const QMap < QString, QString > &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 QString& message=QString() );
+
+ /**
+ * 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