diff options
Diffstat (limited to 'kopete/protocols/yahoo/libkyahoo/yahoochattask.h')
-rw-r--r-- | kopete/protocols/yahoo/libkyahoo/yahoochattask.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/kopete/protocols/yahoo/libkyahoo/yahoochattask.h b/kopete/protocols/yahoo/libkyahoo/yahoochattask.h new file mode 100644 index 00000000..310b174d --- /dev/null +++ b/kopete/protocols/yahoo/libkyahoo/yahoochattask.h @@ -0,0 +1,87 @@ +/* + Kopete Yahoo Protocol + yahoochattask.h - Handle Yahoo Chat + + Copyright (c) 2006 André Duffeck <duffeck@kde.org> + Kopete (c) 2002-2006 by the Kopete developers <kopete-devel@kde.org> + + ************************************************************************* + * * + * 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 YAHOOCHATTASK_H +#define YAHOOCHATTASK_H + +#include "task.h" +#include "yahootypes.h" +#include <qmap.h> +#include <qvaluelist.h> +#include <qpair.h> + +class QDomDocument; +class YMSGTransfer; +namespace KIO { + class Job; +} + +struct YahooChatJob { + QByteArray data; + Yahoo::ChatCategory category; +}; + +/** +@author André Duffeck +*/ +class YahooChatTask : public Task +{ +Q_OBJECT +public: + YahooChatTask(Task *parent); + virtual ~YahooChatTask(); + + virtual void onGo(); + virtual bool forMe( const Transfer *transfer ) const; + bool take(Transfer *transfer); + + void getYahooChatCategories(); + void getYahooChatRooms( const Yahoo::ChatCategory &category ); + + void joinRoom( const Yahoo::ChatRoom &room ); + + void sendYahooChatMessage( const QString &msg, const QString &handle ); + + void logout(); + +signals: + void gotYahooChatCategories( const QDomDocument & ); + void gotYahooChatRooms( const Yahoo::ChatCategory &, const QDomDocument & ); + + void chatRoomJoined( int roomId, int categoryId, const QString &comment, const QString &handle ); + void chatBuddyHasJoined( const QString &nick, const QString &handle, bool suppressNotification ); + void chatBuddyHasLeft( const QString &nick, const QString &handle ); + void chatMessageReceived( const QString &nick, const QString &message, const QString &handle ); +private: + void login(); + void parseLoginResponse( YMSGTransfer *t ); + void parseJoin( YMSGTransfer *t ); + void parseChatMessage( YMSGTransfer * ); + void parseChatExit( YMSGTransfer * ); + void parseLogout( YMSGTransfer * ); + +private slots: + void slotData( KIO::Job *, const QByteArray & ); + void slotCategoriesComplete( KIO::Job * ); + void slotChatRoomsComplete( KIO::Job * ); +private: + QMap< KIO::Job *, YahooChatJob > m_jobs; + QValueList< Yahoo::ChatRoom > m_pendingJoins; + bool m_loggedIn; +}; + +#endif |