OSDN Git Service

53ec2a9a76032929aa250f1c2be87c03fc84a392
[nlite/nlite.git] / nlite / nlite_chatData.h
1 #pragma once
2
3 namespace nlite{
4         namespace cuntry{
5
6                 enum LOCALE{
7                         unknown,
8                         jp
9
10                 };
11
12         }
13
14         struct ListenerData{
15
16         public:
17                 tstring user_id;
18                 tstring userName;
19                 COLORREF bkColor;
20                 CBrush baseBkBrush;
21                 BOOL originBkFlag;
22         public:
23                 ListenerData(LPCTSTR user_id_in):
24                         user_id(user_id_in),
25                         userName(TEXT("")),
26                         bkColor(RGB(0,0,0)),
27                         originBkFlag(FALSE)
28                         {
29                                 
30                         }
31
32                 VOID SetBkColor(COLORREF bkColor_in);
33                 
34         };
35
36         ///
37         ///\94w\8ci\83J\83\89\81[\8eû\8fW\97p\83I\83u\83W\83F\83N\83g
38         ///
39         class CListenerColorCollector{
40
41         private:
42                 std::deque<COLORREF> colorlist;
43
44         public:
45
46                 typedef std::deque<COLORREF>::iterator iterator;
47
48                 BOOL Find(COLORREF target){
49
50                         iterator end = colorlist.end();
51
52                         return std::find(colorlist.begin(),end,target) != end ? TRUE : FALSE;
53                 }
54
55
56                 void operator()(ListenerData &target){
57
58                         if(target.originBkFlag == TRUE){
59
60                                 colorlist.push_back(target.bkColor);
61                         }
62
63                 }
64
65         };
66         
67         
68
69         class CListenerList{
70
71         private:
72
73                 std::deque<ListenerData> m_listenerList;
74
75         public:
76
77                 typedef std::deque<ListenerData>::reference reference;
78                 
79                 typedef std::deque<ListenerData>::iterator iterator;
80
81                 ///
82                 ///\83\86\81[\83U\81[\93o\98^
83                 ///
84                 reference Register(LPCTSTR user_id);
85
86                 ///
87                 ///\94w\8ci\90F\82ð\8eû\8fW\82·\82é
88                 ///
89                 VOID BkColorCollect(CListenerColorCollector &target);
90
91         };
92
93         
94
95         class CChatData{
96
97         public:
98                 UINT_PTR premium;                                       //\83v\83\8c\83~\83A\83\80\8eí\95Ê
99                 BOOL anonymity;                                         //\93½\96¼\83t\83\89\83O
100                 UINT_PTR no;                                            //\83R\83\81\94Ô
101                 UINT_PTR vpos;                                          //\83R\83\81\83\93\83g\95\\8e¦\88Ê\92u
102                 time_t date;                                            //\8e\9e\8aÔ
103                 cuntry::LOCALE locale;                          //\8d\91\83R\81[\83h
104                 ListenerData *listenerData;                     //\83\86\81[\83U\8fî\95ñ
105                 tstring name;                                           //\96¼\91O\81B\82Â\82¢\82Ä\82±\82È\82¢\8e\9e\82à\82 \82é
106                 tstring chatBuf;                                        //\83`\83\83\83b\83g\96{\95
107                 std::vector<tstring> mail;                      //\83\81\81[\83\8b\83R\83}\83\93\83h
108                 ULONG_PTR thread;                                       //\83X\83\8c\83b\83h\94Ô\8d\86
109                 BOOL selectFlag;                                        //\91I\91ð\8fó\91Ô
110
111         public:
112                 CChatData():
113                   selectFlag(FALSE)
114                 {}
115
116                 VOID SetChat(NicoLiveChat &chat_in);
117
118         };
119
120
121         ///
122         ///\83R\83\81\83\93\83g\83\8a\83X\83g\83N\83\89\83X
123         ///
124         class CCommentList: public CComAutoCriticalSection{
125
126         private:
127                 std::deque<CChatData> chatList;
128
129                 //\83G\83\89\81[\83R\81[\83h
130         public:
131                 enum ERRORCORD{
132                         ERR = -1,
133                         OK = 0
134
135
136                 };
137
138         public:
139
140                 ///
141                 ///\83R\83\93\83X\83g\83\89\83N\83^
142                 ///
143                 CCommentList();
144                 
145                 ///
146                 ///\83f\83X\83g\83\89\83N\83^
147                 ///
148                 ~CCommentList();
149                 
150                 ///
151                 ///\90\95ú\91\97\90Ú\91±\8e\9e\82Ì\8f\88\97\9d
152                 ///
153                 VOID OnConnect();
154                 
155
156                 ///
157                 ///\94j\8aü\8e\9e\82Ì\8f\88\97\9d
158                 ///
159                 VOID OnDestroy();
160                 
161                 ///
162                 ///\83R\83\81\83\93\83g\83T\83C\83Y\8eæ\93¾
163                 ///
164                 UINT_PTR Size();
165                 
166
167                 ///
168                 ///\91I\91ð\8d\80\96Ú\82Ì\94Ô\8d\86\82ð\8eæ\93¾
169                 ///
170                 INT_PTR GetCurSel();
171
172                 VOID SetCurSel(INT_PTR cursel);
173
174                 VOID OnChatReceve(NicoLiveChat_P chatData, UINT_PTR count);
175
176                 CChatData &GetChatAt(UINT_PTR no);
177                 
178                 CChatData &back();
179                 
180         };
181
182         
183 }