00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef KIMPROXY_H
00025
#define KIMPROXY_H
00026
00027
#include <qdict.h>
00028
#include <qmap.h>
00029
#include <qptrdict.h>
00030
#include <qstringlist.h>
00031
00032
00033
#define IM_SERVICE_TYPE "DCOP/InstantMessenger"
00034
#define IM_CLIENT_PREFERENCES_FILE "default_components"
00035
#define IM_CLIENT_PREFERENCES_SECTION "InstantMessenger"
00036
#define IM_CLIENT_PREFERENCES_ENTRY "imClient"
00037
00038
#include "kimproxyiface.h"
00039
00040
class DCOPClient;
00041
class KIMIface_stub;
00042
class KURL;
00043
class ContactPresenceListCurrent;
00044
00046
typedef QMap<QCString, int> AppPresence;
00047
typedef QDict<AppPresence> PresenceMap;
00049
typedef QMap<QString, ContactPresenceListCurrent> PresenceStringMap;
00050
00071 class KIMPROXY_EXPORT KIMProxy :
public QObject,
virtual public KIMProxyIface
00072 {
00073 Q_OBJECT
00074
struct Private;
00075
00076
template<
class>
friend class KStaticDeleter;
00077 ~KIMProxy();
00078
00079
public:
00089
static KIMProxy * instance(
DCOPClient * client );
00090
00096
bool initialize();
00097
00103
QStringList allContacts();
00104
00110
QStringList reachableContacts();
00111
00117
QStringList onlineContacts();
00118
00124
QStringList fileTransferContacts();
00125
00131
bool isPresent(
const QString& uid );
00132
00139
QString displayName(
const QString& uid );
00140
00146
int presenceNumeric(
const QString& uid );
00147
00153
QString presenceString(
const QString& uid );
00154
00160
QPixmap presenceIcon(
const QString& uid );
00161
00167
bool canReceiveFiles(
const QString & uid );
00168
00174
bool canRespond(
const QString & uid );
00175
00183
QString locate(
const QString & contactId,
const QString & protocol );
00184
00190
QString context(
const QString & uid );
00191
00196
void chatWithContact(
const QString& uid );
00197
00205
void messageContact(
const QString& uid,
const QString& message );
00206
00214
void sendFile(
const QString &uid,
const KURL &sourceURL,
const QString &altFileName = QString::null, uint fileSize = 0);
00215
00222
bool addContact(
const QString &contactId,
const QString &protocol );
00223
00228
bool imAppsAvailable();
00229
00234
bool startPreferredApp();
00235
00239
void contactPresenceChanged(
QString uid,
QCString appId,
int presence );
00240
00241
public slots:
00242
void registeredToDCOP(
const QCString& appId );
00243
void unregisteredFromDCOP(
const QCString& appId );
00244 signals:
00249
void sigContactPresenceChanged(
const QString &uid );
00250
00255
void sigPresenceInfoExpired();
00256
protected:
00260
void pollApp(
const QCString & appId );
00264
void pollAll(
const QString &uid );
00265
00269
bool updatePresence(
const QString &uid,
const QCString &appId,
int presence );
00270
00274
QString preferredApp();
00275
00279 KIMIface_stub * stubForUid(
const QString &uid );
00280
00285 KIMIface_stub * stubForProtocol(
const QString &protocol );
00286
00287
private:
00288
00289
00290
QDict<KIMIface_stub> m_im_client_stubs;
00291
00292
00293 PresenceMap m_presence_map;
00294
00295
00296
00297
QPtrDict<int> m_client_presence_strings;
00298 Private * d;
00299
bool m_apps_available;
00300
bool m_initialized;
00304 KIMProxy(
DCOPClient * client);
00305
static KIMProxy * s_instance;
00306 };
00307
00308
#endif
00309