OSDN Git Service

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