gloox 1.0
uniquemucroom.h
00001 /*
00002   Copyright (c) 2007-2009 by Jakob Schroeter <js@camaya.net>
00003   This file is part of the gloox library. http://camaya.net/gloox
00004 
00005   This software is distributed under a license. The full license
00006   agreement can be found in the file LICENSE in this distribution.
00007   This software may not be copied, modified, sold or distributed
00008   other than expressed in the named license agreement.
00009 
00010   This software is distributed without any warranty.
00011 */
00012 
00013 
00014 
00015 #ifndef UNIQUEMUCROOM_H__
00016 #define UNIQUEMUCROOM_H__
00017 
00018 #include "instantmucroom.h"
00019 #include "stanzaextension.h"
00020 
00021 namespace gloox
00022 {
00023 
00034   class GLOOX_API UniqueMUCRoom : public InstantMUCRoom
00035   {
00036     public:
00048       UniqueMUCRoom( ClientBase* parent, const JID& nick, MUCRoomHandler* mrh );
00049 
00053       virtual ~UniqueMUCRoom();
00054 
00055       // reimplemented from MUCRoom
00056       virtual void join();
00057 
00058     private:
00059 #ifdef UNIQUEMUCROOM_TEST
00060     public:
00061 #endif
00062 
00068       class Unique : public StanzaExtension
00069       {
00070         public:
00075           Unique( const Tag* tag = 0 );
00076 
00080           virtual ~Unique() {}
00081 
00086           const std::string& name() const { return m_name; }
00087 
00088           // reimplemented from StanzaExtension
00089           virtual const std::string& filterString() const;
00090 
00091           // reimplemented from StanzaExtension
00092           virtual StanzaExtension* newInstance( const Tag* tag ) const
00093           {
00094             return new Unique( tag );
00095           }
00096 
00097           // reimplemented from StanzaExtension
00098           virtual Tag* tag() const;
00099 
00100           // reimplemented from StanzaExtension
00101           virtual StanzaExtension* clone() const
00102           {
00103             return new Unique( *this );
00104           }
00105 
00106         private:
00107           std::string m_name;
00108       };
00109 
00110       // reimplemented from MUCRoom (IqHandler)
00111       void handleIqID( const IQ& iq, int context );
00112 
00113   };
00114 
00115 }
00116 
00117 #endif // UNIQUEMUCROOM_H__