diff options
Diffstat (limited to 'kopete/protocols/groupwise/libgroupwise/tasks/conferencetask.h')
-rw-r--r-- | kopete/protocols/groupwise/libgroupwise/tasks/conferencetask.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/kopete/protocols/groupwise/libgroupwise/tasks/conferencetask.h b/kopete/protocols/groupwise/libgroupwise/tasks/conferencetask.h new file mode 100644 index 00000000..42f4fc2b --- /dev/null +++ b/kopete/protocols/groupwise/libgroupwise/tasks/conferencetask.h @@ -0,0 +1,74 @@ +/* + Kopete Groupwise Protocol + conferencetask.h - Event Handling task responsible for all conference related events + + Copyright (c) 2004 SUSE Linux AG http://www.suse.com + + Based on Iris, Copyright (C) 2003 Justin Karneges + + Kopete (c) 2002-2004 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 CONFERENCETASK_H +#define CONFERENCETASK_H + +#include "gwerror.h" +#include "eventtask.h" + +/** + * This Task is responsible for handling all conference related events, and signalling them up to @ref GroupWiseAccount + * Implementation note: It would be fit the model more cleanly to have each of these in their own Task, but the amount + * of code they share is quite large, and the differences in the way each event uses it are small + * @author SUSE AG + */ + +using namespace GroupWise; + +class ConferenceTask : public EventTask +{ +Q_OBJECT +public: + ConferenceTask( Task* parent ); + ~ConferenceTask(); + bool take( Transfer * transfer ); +signals: + void typing( const ConferenceEvent & ); + void notTyping( const ConferenceEvent & ); + void joined( const ConferenceEvent & ); + void left( const ConferenceEvent &); + void invited( const ConferenceEvent & ); + void otherInvited( const ConferenceEvent & ); + void invitationDeclined( const ConferenceEvent & ); + void closed( const ConferenceEvent & ); + void message( const ConferenceEvent &); + void autoReply( const ConferenceEvent & ); + // GW7 + void broadcast( const ConferenceEvent &); + void systemBroadcast( const ConferenceEvent &); +protected slots: + void slotReceiveUserDetails( const GroupWise::ContactDetails & ); +protected: + Q_UINT32 readFlags( QDataStream & din ); + QString readMessage( QDataStream & din ); + /** + * Checks to see if we need more data from the client before we can propagate this event + * and queues the event if so + * @return whether the event was queued pending more data + */ + bool queueWhileAwaitingData( const ConferenceEvent & event ); + void dumpConferenceEvent( ConferenceEvent & evt ); +private: + // A list of events which are waiting for more data from the server before they can be exposed to the client + QValueList< ConferenceEvent > m_pendingEvents; +}; + +#endif |