00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _VOSCHATGUI_AVATAR_LIST_H_
00021 #define _VOSCHATGUI_AVATAR_LIST_H_
00022
00023
00024 #include <vos/corelibs/vos/vos.hh>
00025 #include <vos/metaobjects/property/property.hh>
00026 #include <vos/metaobjects/misc/talkative.hh>
00027 #include <vos/metaobjects/misc/avatar.hh>
00028 #include <vos/gui/gui/gui.hh>
00029
00030 #if defined(_WIN32) && defined(_MSC_VER)
00031 # ifdef CHATGUI_EXPORTS
00032 # define CHATGUI_API __declspec(dllexport)
00033 # else
00034 # define CHATGUI_API __declspec(dllimport)
00035 # endif
00036 #else
00037 # define CHATGUI_API
00038 #endif
00039
00040
00041
00042
00043
00044
00045 namespace VOSChatGUI {
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055 class CHATGUI_API AvatarList :
00056 public virtual ChildChangeListener,
00057 public virtual ObjectExciseListener,
00058 public virtual VOSGUI::LocalContainer
00059 {
00060
00061 protected:
00062 vRef<Vobject> world;
00063 vRef<VOSGUI::SelectList> list;
00064 vRef<Vobject> display;
00065 vRef<Avatar> yourAvatar;
00066 vRef<LocalSite> site;
00067 bool usePrivMsg;
00068
00069 protected:
00070
00071 VOSGUI_DEFINE_BUTTON(PrivMsgButton, AvatarList, "Private Message")
00072 VOSGUI_DEFINE_BUTTON(UserInfoButton, AvatarList, "User Info")
00073 VOSGUI_DEFINE_BUTTON(EditYourInfoButton, AvatarList, "Edit Your Info...")
00074
00075 public:
00076 friend void UserInfoButton::push(const string& userid);
00077 friend void EditYourInfoButton::push(const string& userid);
00078 friend void PrivMsgButton::push(const string& userid);
00079
00080 public:
00081
00082
00083 static void registerExtenders();
00084
00085
00086
00087 static void registerOtherExtenders();
00088
00089
00090
00091
00092
00093
00094
00095 void setup(Vobject* world, Vobject* display = 0, Avatar* yourAvatar = 0);
00096
00097
00098 void enablePrivMsg(bool q = true);
00099
00100 virtual ~AvatarList();
00101
00102 AvatarList(MetaObject* s);
00103
00104 static MetaObject* create(MetaObject* s, const string& type);
00105
00106 VOSGUI::SelectList* getList() {
00107 return &list;
00108 }
00109
00110 VOS::Vobject* getWorld() {
00111 return &world;
00112 }
00113
00114 Avatar* getYourAvatar() {
00115 return &yourAvatar;
00116 }
00117
00118 protected:
00119
00120
00121 virtual void notifyChildInserted(VobjectEvent&);
00122
00123
00124 virtual void notifyChildReplaced(VobjectEvent&);
00125
00126
00127 virtual void notifyChildRemoved(VobjectEvent&);
00128
00129
00130 virtual void notifyObjectExcise(RefCounted* obj);
00131
00132 };
00133
00134 }
00135
00136
00137
00138 #endif