summaryrefslogtreecommitdiffstats
path: root/kopete/kopete/kimiface.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitbcb704366cb5e333a626c18c308c7e0448a8e69f (patch)
treef0d6ab7d78ecdd9207cf46536376b44b91a1ca71 /kopete/kopete/kimiface.h
downloadtdenetwork-bcb704366cb5e333a626c18c308c7e0448a8e69f.tar.gz
tdenetwork-bcb704366cb5e333a626c18c308c7e0448a8e69f.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdenetwork@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kopete/kopete/kimiface.h')
-rw-r--r--kopete/kopete/kimiface.h197
1 files changed, 197 insertions, 0 deletions
diff --git a/kopete/kopete/kimiface.h b/kopete/kopete/kimiface.h
new file mode 100644
index 00000000..3d599013
--- /dev/null
+++ b/kopete/kopete/kimiface.h
@@ -0,0 +1,197 @@
+/*
+ kimiface.h - KDE Instant Messenger DCOP Interface
+
+ Copyright (c) 2004 Will Stephenson <lists@stevello.free-online.co.uk>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-1307, USA.
+*/
+
+#ifndef KIMIFACE_H
+#define KIMIFACE_H
+
+#include <qpixmap.h>
+#include <dcopobject.h>
+#include <qstringlist.h>
+#include <kurl.h>
+
+/**
+ * Generic DCOP interface for KDE instant messenger applications
+ * Note one omission of this interface is the lack of control over the range of values used for protocols' names.
+ * @since 3.3
+ * @author Will Stephenson <lists@stevello.free-online.co.uk>
+ */
+class KIMIface : virtual public DCOPObject
+{
+ K_DCOP
+
+k_dcop:
+// ACCESSORS
+// contact list
+ /**
+ * Obtain a list of IM-contactable entries in the KDE
+ * address book.
+ * @return a list of KABC uids.
+ */
+ virtual QStringList allContacts() = 0;
+ /**
+ * Obtain a list of KDE address book entries who are
+ * currently reachable.
+ * @return a list of KABC uids who can receive a message, even if online.
+ */
+ virtual QStringList reachableContacts() = 0;
+ /**
+ * Obtain a list of KDE address book entries who are
+ * currently online.
+ * @return a list of KABC uids who are online with unspecified presence.
+ */
+ virtual QStringList onlineContacts() = 0;
+ /**
+ * Obtain a list of KDE address book entries who may
+ * receive file transfers.
+ * @return a list of KABC uids capable of file transfer.
+ */
+ virtual QStringList fileTransferContacts() = 0;
+
+// individual
+ /**
+ * Confirm if a given KABC uid is known to KIMProxy
+ * @param uid the KABC uid you are interested in.
+ * @return whether one of the chat programs KIMProxy talks to knows of this KABC uid.
+ */
+ virtual bool isPresent( const QString & uid ) = 0;
+ /**
+ * Obtain the IM app's idea of the contact's display name
+ * Useful if KABC lookups may be too slow
+ * @param KABC uid.
+ * @return The corresponding display name.
+ */
+ virtual QString displayName( const QString & uid ) = 0;
+ /**
+ * Obtain the IM presence as a i18ned string for the specified addressee
+ * @param uid the KABC uid you want the presence for.
+ * @return the i18ned string describing presence.
+ */
+ virtual QString presenceString( const QString & uid ) = 0;
+ /**
+ * Obtain the IM presence as a number (see KIMIface) for the specified addressee
+ * @param uid the KABC uid you want the presence for.
+ * @return a numeric representation of presence - currently one of 0 (Unknown), 1 (Offline), 2 (Connecting), 3 (Away), 4 (Online)
+ */
+ virtual int presenceStatus( const QString & uid ) = 0;
+ /**
+ * Indicate if a given uid can receive files
+ * @param uid the KABC uid you are interested in.
+ * @return Whether the specified addressee can receive files.
+ */
+ virtual bool canReceiveFiles( const QString & uid ) = 0;
+ /**
+ * Some media are unidirectional (eg, sending SMS via a web interface).
+ * @param uid the KABC uid you are interested in.
+ * @return Whether the specified addressee can respond.
+ */
+ virtual bool canRespond( const QString & uid ) = 0;
+ /**
+ * Get the KABC uid corresponding to the supplied IM address
+ * Protocols should be
+ * @param contactId the protocol specific identifier for the contact, eg UIN for ICQ, screenname for AIM, nick for IRC.
+ * @param protocol the protocol, eg one of "AIMProtocol", "MSNProtocol", "ICQProtocol",
+ * @return a KABC uid or null if none found/
+ */
+ virtual QString locate( const QString & contactId, const QString & protocol ) = 0;
+// metadata
+ /**
+ * Obtain the icon representing IM presence for the specified addressee
+ * @param uid the KABC uid you want the presence for.
+ * @return a pixmap representing the uid's presence.
+ */
+ virtual QPixmap icon( const QString & uid ) = 0;
+ /**
+ * Get the supplied addressee's current context (home, work, or any).
+ * @param uid the KABC uid you want the context for.
+ * @return A QString describing the context, or null if not supported.
+ */
+ virtual QString context( const QString & uid ) = 0;
+// App capabilities
+ /**
+ * Discover what protocols the application supports
+ * @return the set of protocols that the application supports
+ */
+ virtual QStringList protocols() = 0;
+
+// ACTORS
+ /**
+ * Send a single message to the specified addressee
+ * Any response will be handled by the IM client as a normal
+ * conversation.
+ * @param uid the KABC uid you want to chat with.
+ * @param message the message to send them.
+ */
+ virtual void messageContact( const QString &uid, const QString& message ) = 0;
+
+ /**
+ * Open a chat to a contact, and optionally set some initial text
+ */
+ virtual void messageNewContact( const QString &contactId, const QString &protocol ) = 0;
+
+ /**
+ * Start a chat session with the specified addressee
+ * @param uid the KABC uid you want to chat with.
+ */
+ virtual void chatWithContact( const QString &uid ) = 0;
+
+ /**
+ * Send the file to the contact
+ * @param uid the KABC uid you are sending to.
+ * @param sourceURL a @ref KURL to send.
+ * @param altFileName an alternate filename describing the file
+ * @param fileSize file size in bytes
+ */
+ virtual void sendFile(const QString &uid, const KURL &sourceURL,
+ const QString &altFileName = QString::null, uint fileSize = 0) = 0;
+
+// MUTATORS
+// Contact list
+ /**
+ * Add a contact to the contact list
+ * @param contactId the protocol specific identifier for the contact, eg UIN for ICQ, screenname for AIM, nick for IRC.
+ * @param protocol the protocol, eg one of "AIMProtocol", "MSNProtocol", "ICQProtocol", ...
+ * @return whether the add succeeded. False may signal already present, protocol not supported, or add operation not supported.
+ */
+ virtual bool addContact( const QString &contactId, const QString &protocol ) = 0;
+// SIGNALS
+k_dcop_signals:
+ /**
+ * Indicates that a contact's presence has changed
+ * @param uid the contact whose presence changed.
+ * @param appId the dcop application id of the program the signal originates from.
+ * @param presence the new numeric presence @ref presenceStatus
+ */
+ void contactPresenceChanged( QString uid, QCString appId, int presence );
+};
+
+#endif
+
+
+
+/*
+ * Local variables:
+ * c-indentation-style: k&r
+ * c-basic-offset: 8
+ * indent-tabs-mode: t
+ * End:
+ */
+// vim: set noet ts=4 sts=4 sw=4:
+