OSDN Git Service

NCVのリスナー情報同期処理
[nlite/nlite.git] / nlite / nlite_chatData.h
1 #pragma once
2
3 namespace nlite{
4
5         //\91O\95û\90é\8c¾
6         class CCommentListWindow;
7
8         //\8d\91\83R\81[\83h
9         namespace cuntry{
10
11                 enum LOCALE{
12                         unknown,
13                         jp
14
15                 };
16
17         }
18
19         ///
20         ///\83\8a\83X\83i\81[\83f\81[\83^
21         ///
22         struct ListenerData{
23
24         public:
25                 CNLiteString user_id;                                   //\83\86\81[\83U\81[ID
26                 CNLiteString name;                                              //\83\86\81[\83U\81[\96¼
27                 CNLiteString community;                                 //\93o\98^\82µ\82½\83R\83~\83\85\83j\83e\83B
28                 COLORREF bgcolor;                                               //\94w\8ci\90F
29                 time_t time;                                                    //\93o\98^\8e\9e\8aÔ
30 //              BOOL originBkFlag;                                              //\94w\8ci\90F\90Ý\92è\83t\83\89\83O
31         public:
32
33                 enum {
34                         INIT_COLOR = -1
35
36                 };
37                 
38                 ///
39                 ///\83R\83\93\83X\83g\83\89\83N\83^
40                 ///
41                 ListenerData();
42
43                 ///
44                 ///\94w\8ci\90F\90Ý\92è
45                 ///
46                 VOID SetBkColor(COLORREF bkColor_in);
47                 
48         };
49
50         //
51         //\83\8a\83X\83i\81[\83f\81[\83^\82©\82ç\94w\8ci\83J\83\89\81[\8eû\8fW\83t\83@\83\93\83N\83V\83\87\83i\83\8b
52         //
53         class CListenerColorCollector{
54
55         private:
56                 std::deque<COLORREF> colorlist;                                                                         //\90F\83\8a\83X\83g
57
58         public:
59
60                 typedef std::deque<COLORREF>::iterator iterator;
61
62                 //\8ew\92è\82µ\82½\90F\82ª\93o\98^\82³\82ê\82Ä\82¢\82é\82©\92²\82×\82é
63                 BOOL Find(COLORREF target){
64
65                         iterator end = colorlist.end();
66
67                         return std::find(colorlist.begin(),end,target) != end ? TRUE : FALSE;
68                 }
69
70                 //\83t\83@\83\93\83N\83V\83\87\83i\83\8b
71                 void operator()(ListenerData &target){
72
73                         if(target.bgcolor != ListenerData::INIT_COLOR){
74
75                                 colorlist.push_back(target.bgcolor);
76                         }
77
78                 }
79
80         };
81         
82         
83         ///
84         ///\83\8a\83X\83i\81[\83\8a\83X\83g
85         ///
86         class CListenerList{
87
88         private:
89                 typedef ListenerData InternalType;
90                 typedef std::list<InternalType> ListenerList_Internal; 
91                 ListenerList_Internal m_listenerList;
92
93         public:
94
95                 typedef InternalType& reference;
96                 typedef ListenerList_Internal::value_type value_type;
97                 typedef ListenerList_Internal::iterator iterator;
98
99                 
100
101                 ///
102                 ///\83\86\81[\83U\81[\93o\98^
103                 ///
104                 reference Register(ListenerData &listener,BOOL bUpdate);
105
106
107                 ///
108                 ///\83\8a\83X\83i\81[\83f\81[\83^\93Ç\82Ý\8d\9e\82Ý
109                 ///
110                 BOOL ReadProperty(LPCTSTR fileName);
111
112                 ///
113                 ///
114                 ///
115
116                 
117                 ///
118                 ///\94w\8ci\90F\82ð\8eû\8fW\82·\82é
119                 ///
120                 VOID BkColorCollect(CListenerColorCollector &target);
121
122         };
123
124         
125
126         class CChatData{
127
128                 
129         public:
130                 struct ViewData{
131
132                         //\90F\83R\81[\83h\8f\89\8aú\92l
133                         enum{
134                                 INIT_COLOR = -1
135                         };
136
137                         BOOL selectFlag;                                        //\91I\91ð\8fó\91Ô
138                         COLORREF stringColor;                           //\93Æ\8e©\95\8e\9a\90F
139                         COLORREF backColor;                                     //\93Æ\8e©\94w\8ci\90F
140                         COLORREF sellLineColor;                         //\98g\90ü\90F
141                         UINT_PTR height;
142
143                         ViewData();
144                 };
145
146                 ViewData viewData;                                      //\95\\8e¦\97p\83f\81[\83^
147                 UINT_PTR premium;                                       //\83v\83\8c\83~\83A\83\80\8eí\95Ê
148                 BOOL anonymity;                                         //\93½\96¼\83t\83\89\83O
149                 UINT_PTR no;                                            //\83R\83\81\94Ô
150                 UINT_PTR vpos;                                          //\83R\83\81\83\93\83g\95\\8e¦\88Ê\92u
151                 time_t date;                                            //\8e\9e\8aÔ
152                 cuntry::LOCALE locale;                          //\8d\91\83R\81[\83h
153                 ListenerData *listenerData;                     //\83\86\81[\83U\8fî\95ñ
154                 CNLiteString name;                                      //\96¼\91O\81B\82Â\82¢\82Ä\82±\82È\82¢\8e\9e\82à\82 \82é
155                 CNLiteString chatBuf;                           //\83`\83\83\83b\83g\96{\95
156                 std::vector<CNLiteString> mail;         //\83\81\81[\83\8b\83R\83}\83\93\83h
157                 ULONG_PTR thread;                                       //\83X\83\8c\83b\83h\94Ô\8d\86
158                 
159         public:
160
161
162                 ///
163                 ///nlib\82Ì\83`\83\83\83b\83g\83f\81[\83^\82ð\83Z\83b\83g
164                 ///
165                 VOID SetChat(NicoLiveChat &chat_in,ListenerData &listener);
166
167         };
168
169
170
171
172         ///
173         ///\83R\83\81\83\93\83g\83\8a\83X\83g\83N\83\89\83X
174         ///
175         class CCommentList{
176
177         private:
178                 typedef std::list<CChatData> ChatList;
179         public:
180                 typedef ChatList::iterator iterator;
181                 typedef ChatList::reference reference;
182                 typedef ChatList::reverse_iterator reverse_iterator;
183         private:
184                 ChatList chatList;
185                 iterator shortcut;
186         
187
188         
189                 //\83G\83\89\81[\83R\81[\83h
190         public:
191                 enum ERRORCORD{
192                         ERR = -1,
193                         OK = 0
194
195
196                 };
197
198
199                 //\8c^\92è\8b`
200         
201
202         public:
203
204                 ///
205                 ///\83R\83\93\83X\83g\83\89\83N\83^
206                 ///
207                 CCommentList();
208                 
209                 ///
210                 ///\83f\83X\83g\83\89\83N\83^
211                 ///
212                 ~CCommentList();
213                 
214                 ///
215                 ///\90\95ú\91\97\90Ú\91±\8e\9e\82Ì\8f\88\97\9d
216                 ///
217                 VOID OnConnect();
218                 
219
220                 ///
221                 ///\94j\8aü\8e\9e\82Ì\8f\88\97\9d
222                 ///
223                 VOID OnDestroy();
224                 
225                 ///
226                 ///\8ai\94[\82³\82ê\82½\83R\83\81\83\93\83g\90\94\8eæ\93¾
227                 ///
228                 UINT_PTR Size();
229                 
230
231                 ///
232                 ///\91I\91ð\8d\80\96Ú\82ð\8eæ\93¾
233                 ///
234                 iterator GetCurSel();
235
236
237                 INT_PTR GetCurSelNo();
238
239                 ///
240                 ///\91I\91ð\8d\80\96Ú\82ð\90Ý\92è
241                 ///
242                 VOID SetCurSel(iterator cursel);
243
244                 ///
245                 ///\91I\91ð\8fó\91Ô\82Ì\83A\83C\83e\83\80\82ð\8eæ\93¾
246                 ///
247                 iterator GetCurSelItem();
248
249                 ///
250                 ///\8bó\82©\94»\92è
251                 ///
252                 BOOL empty();
253
254                 ///
255                 ///\8dÅ\8f\89\82Ì\83C\83e\83\8c\81[\83^\82ð\8eæ\93¾
256                 ///
257                 iterator begin();
258
259                 ///
260                 ///\8dÅ\8cã\82Ì\83C\83e\83\8c\81[\83^\82ð\8eæ\93¾
261                 ///
262                 iterator end();
263
264                 ///
265                 ///\8bt\8cü\82«\83C\83e\83\8c\81[\83^\82Ì\8dÅ\8f\89\82ð\8eæ\93¾
266                 ///
267                 reverse_iterator rbegein();
268
269                 ///
270                 ///\8bt\8cü\82«\83C\83e\83\8c\81[\83^\82Ì\8dÅ\8cã\82ð\8eæ\93¾
271                 ///
272                 reverse_iterator rend();
273
274                 ///
275                 ///\83`\83\83\83b\83g\8eó\90M\8e\9e\82Ì\8f\88\97\9d
276                 ///\83`\83\83\83b\83g\83f\81[\83^\82Ì\91}\93ü\82ð\8ds\82¤
277                 ///\83\8a\83X\83g\82ª\8bó\82©\81A\8eó\90M\82µ\82½\83`\83\83\83b\83g\83f\81[\83^\82Ìdate\82Ì\92l\82ª\83\8a\83X\83g\8dÅ\8cã\94ö\88È\8fã\82Ì\82à\82Ì\82¾\82Á\82½\8fê\8d\87\8dÅ\8cã\94ö\82É\91}\93ü\82³\82ê\82é
278                 ///\82»\82¤\82Å\82È\82©\82Á\82½\8fê\8d\87\82Í\83\8a\83X\83g\82Ì\8dÅ\8f\89\82©\82ç\88ø\90\94\82É\93n\82³\82ê\82½\83`\83\83\83b\83g\83f\81[\83^\82Ìdate\82æ\82è\91å\82«\82¢date\82ð\8e\9d\82Â\83f\81[\83^\82ð\92T\82µ\81A\82»\82Ì\83f\81[\83^\82Ì\92¼\91O\82É\91}\93ü\82·\82é
279                 ///
280                 iterator OnChatReceve(NicoLiveChat_P chatData,LPCTSTR communityID, UINT_PTR count,CCommentListWindow &listWindow);
281
282                 ///
283                 ///\8ew\92è\82µ\82½\94Ô\8d\86\82Ì\83R\83\81\83\93\83g\8eQ\8fÆ\82ð\8eæ\93¾
284                 ///
285                 reference GetChatAt(UINT_PTR no);
286                 
287
288                 ///
289                 ///\83\8a\83X\83g\8dÅ\8cã\82Ì\8eQ\8fÆ\82ð\8eæ\93¾
290                 ///
291                 reference back();
292
293                 ///
294                 ///\83V\83\87\81[\83g\83J\83b\83g\83C\83e\83\8c\81[\83^\82ð\8eæ\93¾
295                 ///
296                 iterator GetShortCut();
297                 
298                 ///
299                 ///\83V\83\87\81[\83g\83J\83b\83g\82ð\90Ý\92è
300                 ///
301                 BOOL SetShortCut(UINT_PTR no);
302
303                 
304                 
305         };
306
307
308         ///
309         ///\83\86\81[\83U\90Ý\92è\83t\83@\83C\83\8b\93Ç\8eæ\83N\83\89\83X
310         ///
311         class ReadUserSettingXML:public CXmlParser{
312
313         private:
314                 ListenerData listenerBuff;
315                 CListenerList &m_listenerList;
316                 BOOL userNodeFlag;
317                 
318                 
319                 
320
321
322         public:
323
324                 ReadUserSettingXML(CListenerList &in_listenerList);
325
326                 void OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs);
327
328                 void OnEndElement (const XML_Char *pszName);
329
330                 void OnCharacterData (const XML_Char *pszData, int nLength);
331         };
332         
333 }