summaryrefslogtreecommitdiff
path: root/ychat-0.7.0/src/chat/room.h
diff options
context:
space:
mode:
Diffstat (limited to 'ychat-0.7.0/src/chat/room.h')
-rwxr-xr-xychat-0.7.0/src/chat/room.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/ychat-0.7.0/src/chat/room.h b/ychat-0.7.0/src/chat/room.h
new file mode 100755
index 0000000..cc59424
--- /dev/null
+++ b/ychat-0.7.0/src/chat/room.h
@@ -0,0 +1,75 @@
+// class room declaration.
+
+#include "../incl.h"
+#include "../wrap.h"
+
+#ifndef ROOM_H
+#define ROOM_H
+
+#include "base.h"
+#include "../name.h"
+#include "user.h"
+#include "../tool/tool.h"
+#include "../logd.h"
+
+using namespace std;
+
+class room : public base<user>, public name
+{
+private:
+ string s_topic;
+ pthread_mutex_t mut_s_topic;
+ logd* p_logd;
+
+public:
+ room( string s_name );
+ ~room();
+
+ virtual void reload_onlineframe();
+
+ void add_user( user* p_user )
+ {
+ add_elem( p_user );
+ p_user->set_p_room( this );
+ reload_onlineframe();
+ }
+
+ user* get_user( string &s_name, bool &b_found )
+ {
+ return static_cast<user*>( get_elem( s_name, b_found ) );
+ }
+
+ void del_elem( string &s_name )
+ {
+ smap<user*,string>::del_elem( s_name );
+ if ( smap<user*,string>::get_size() == 0 )
+ clean_room();
+ else
+ reload_onlineframe();
+ }
+
+ void msg_post( string s_msg )
+ {
+ msg_post( &s_msg );
+ }
+ void msg_post( string *p_msg )
+ {
+ p_logd->log_simple_line( logd::remove_html_tags(*p_msg) );
+ base<user>::msg_post( p_msg );
+ }
+
+ string get_bold_name()
+ {
+ return "<b>" + get_name() + "</b>";
+ }
+
+ virtual void set_name( string s_name );
+ virtual string get_topic();
+ virtual void set_topic( string s_topic );
+ virtual void clean_room();
+
+
+
+};
+
+#endif