OSDN Git Service

e597e501da850e037796b1b2b5a2b9848de0e199
[nlite/nlite.git] / nlite / nlite_mainframe.h
1 #pragma once
2
3 namespace nlite{
4         
5
6         ///
7         ///\83E\83B\83\93\83h\83E\96¼
8         ///
9         const static LPCTSTR NLITE_MAINWINDOW = TEXT("nlite");
10
11         
12         
13         ///
14         ///\83\81\83C\83\93\83t\83\8c\81[\83\80\83N\83\89\83X
15         ///
16         class CNliteMainFrame : public CFrameWindowImpl<CNliteMainFrame>
17                 ,public CUpdateUI<CNliteMainFrame>,public CMessageFilter, public CIdleHandler
18         {
19                 
20         public:
21
22                 
23                 class CLiveUserData;
24                 friend CLiveUserData;
25
26                 struct LvnoSearchFunctional;
27
28                 ///
29                 ///\95ú\91\97\94Ô\8d\86\93ü\97Í\97p
30                 ///
31                 class CSubLiveNoComboBox:public CWindowImpl<CEdit>{
32                         friend CNliteMainFrame;
33
34                 public:
35                         //\8e\8b\92®\97\9a\97ð\95\\8e¦\97p\83y\83A
36                         typedef std::pair<CNLiteString,CNLiteString> LiveInfo;
37                         typedef std::list<LiveInfo> LiveInfoList;
38
39                 private:
40                         CNliteMainFrame &self;                                          //\83\81\83C\83\93\83t\83\8c\81[\83\80\83E\83B\83\93\83h\83E
41                         CComAutoCriticalSection cs;                                     //\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\83I\83u\83W\83F\83N\83g
42                         BOOL untilConnectingFlag;                                       //\90Ú\91±\8f\88\97\9d\92\86\82©\82Ì\83t\83\89\83O\94»\92è
43                         LiveInfoList liveInfoList;                                      //\95ú\91\97\97\9a\97ð\8fî\95ñ
44                 public:
45                         
46                         ///
47                         ///\83R\83\93\83X\83^\83\89\83N\83^
48                         ///
49                         CSubLiveNoComboBox(CNliteMainFrame &in_self);
50                         
51
52                         //\83\81\83b\83Z\81[\83W\83\8b\81[\83v
53                         BEGIN_MSG_MAP_EX(CSubLiveNoComboBox)
54                                 MSG_WM_MOUSEWHEEL(OnMouseWheel)
55                                 MSG_WM_KEYDOWN(OnKeyDown)
56                         END_MSG_MAP()
57
58                 public:
59
60                         ///
61                         ///\95ú\91\97\8fî\95ñ\92Ç\89Á
62                         ///
63                         VOID AddLiveInfo(CNicoLiveStream &stream,LvnoSearchFunctional &functional);
64                         
65
66                         ///
67                         ///\95ú\91\97\94Ô\8d\86\93ü\97Í\82ð\8b\96\89Â\82·\82é
68                         ///
69                         VOID AgreeInputLvNo();
70
71
72                 private:
73                         ///
74                         ///\83L\81[\89\9f\89º\8e\9e\82Ì\8f\88\97\9d
75                         ///
76                         VOID OnKeyDown(TCHAR wParam, UINT upLParam,UINT loLParam);
77
78
79                         ///
80                         ///\83}\83E\83X\83z\83C\81[\83\8b\8e\9e\82Ì\8f\88\97\9d
81                         ///
82                         LRESULT OnMouseWheel(UINT loWparam,SHORT hiWparam,CPoint &point);
83                         
84
85                 };
86
87
88                 
89                 struct LvnoSearchFunctional{
90                         LPCTSTR lvNo;
91                         CNLiteString dispData;
92
93                         LvnoSearchFunctional(LPCTSTR in_lvNo):lvNo(in_lvNo){}
94
95                         bool operator()(CSubLiveNoComboBox::LiveInfo &listInfo){
96                                 return listInfo.second == lvNo;
97                         }
98
99                 };
100
101
102                 ///
103                 ///\83R\83\81\83\93\83g\8eó\90M
104                 ///
105                 class CLiveUserData {
106
107
108                         friend CNliteMainFrame;
109                 private:
110
111                         CNliteMainFrame &self;
112                         
113
114                 public:
115
116                         ///
117                         ///\83R\83\93\83X\83g\83\89\83N\83^
118                         ///
119                         CLiveUserData(CNliteMainFrame &self);
120                         
121
122                         ///
123                         ///\90Ú\91±\8aJ\8en\8e\9e\8f\88\97\9d
124                         ///
125                         VOID OnConnect();
126                         
127                         ///
128                         ///\83R\83\81\83\93\83g\8eó\90M\8aJ\8en\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N\8f\88\97\9d
129                         ///
130                         VOID OnChatReceveStart(CNicoLiveStream &stream,NicoLiveThreadComment_P threadComment);
131
132
133                         ///
134                         ///1\83R\83\81\83\93\83g\8eó\90M\82µ\82½\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N\8f\88\97\9d
135                         ///\8eó\90M\82µ\82½\83R\83\81\83\93\83g\82ð\83o\83b\83t\83@\82É\8ai\94[
136                         ///
137                         VOID OnChatReceve(NicoLiveChat_P chat,UINT_PTR count);
138                         
139
140                         ///
141                         ///\83`\83\83\83b\83g\8eó\90M\8am\92è\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N\8f\88\97\9d
142                         ///\8eå\82É\8eó\90M\82µ\82½\83R\83\81\83\93\83g\82Ì\95`\89æ\8f\88\97\9d\82ð\8ds\82¤
143                         ///
144                         VOID OnChatReceveSettle(UINT_PTR commentCount,UINT_PTR commentCountSum);
145
146                         ///
147                         ///\83R\83\81\83\93\83g\91\97\90M\8c\8b\89Ê\8eó\90M\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N\8f\88\97\9d
148                         ///
149                         VOID OnChatSendResult(NicoLiveSendResultComment_P sendResult);
150
151
152                         ///
153                         ///\83n\81[\83g\83r\81[\83g\91\97\90M\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N
154                         ///
155                         VOID OnHeartBeat(NicoLiveHeartBeat_P heartBeat);
156
157
158                         ///
159                         ///\90Ø\92f\8e\9e\82Ì\83R\81[\83\8b\83o\83b\83N
160                         ///
161                         VOID OnDisconnect();
162
163                 };
164
165                 friend CSubLiveNoComboBox;
166         public:
167
168                 typedef CFrameWindowImpl<CNliteMainFrame> baseWindow;
169
170                 // \83E\83B\83\93\83h\83E\83N\83\89\83X\96¼\81A\8b¤\92Ê\83\8a\83\\81[\83XID\81A\83X\83^\83C\83\8b\81A\94w\8ci\90F\82ð\93o\98^
171                 DECLARE_FRAME_WND_CLASS(NLITE_MAINWINDOW, IDC_NLITE)
172
173         private:
174                 CCommentView commentView;                                       //\83R\83\81\83\93\83g\95\\8e¦\83E\83B\83\93\83h\83E
175                 CStatusBarCtrl statusBar;                                       //\83X\83e\81[\83^\83X\83o\81[
176                 CLiveUserData userData;                                         //\83C\83x\83\93\83g\83n\83\93\83h\83\89\97p\83N\83\89\83X
177                 CSubLiveNoComboBox subLiveNoComboBox;           //\90\95ú\91\97\94Ô\8d\86\93ü\97Í\97p\83R\83\93\83{\83{\83b\83N\83X(\83T\83u\83N\83\89\83X)
178                 CCommentWriteWindow commentWriteWindow;         //\83R\83\81\83\93\83g\8f\91\82«\8d\9e\82Ý\97p\83N\83\89\83X
179                 CTabCtrl tabctrl;                                                       //\83^\83u\83R\83\93\83g\83\8d\81[\83\8b
180                 HFONT hTabFont;                                                         //\83^\83u\83E\83B\83\93\83h\83E\97p\82Ì\83t\83H\83\93\83g                            
181                 CComboBoxEx lvNoCombo;                                          //\90\95ú\91\97\94Ô\8d\86\93ü\97Í\97p\83R\83\93\83{\83{\83b\83N\83X
182                 INT_PTR statusBarHeight;                                        //\83X\83e\81[\83^\83X\83o\81[\82Ì\8d\82\82³
183                 INT_PTR toolBarHeight;                                          //\83c\81[\83\8b\83o\81[\82Ì\8d\82\82³
184                 CNicoVideoAuth nicoVideoAuth;                           //\83j\83R\83j\83R\93®\89æ\94F\8fØ\97p\83I\83u\83W\83F\83N\83g
185                 CNicoLiveStream nicoLiveStream;                         //\83j\83R\83j\83R\90\95ú\91\97\83I\83u\83W\83F\83N\83g
186                 CMultiPaneStatusBarCtrl m_hStatusBar;           //\83}\83\8b\83`\83y\83C\83\93\83X\83e\81[\83^\83X\83o\81[
187                 CProgressBarCtrl  m_progresBar;                         //\83v\83\8d\83O\83\8c\83X\83o\81[
188                 CListenerSettingWindow listenerSettingWindow;   //\83\8a\83X\83i\81[\90Ý\92è\83E\83B\83\93\83h\83E
189                 
190                 CComAutoCriticalSection lvNoBufCS;                                              //\90\95ú\91\97\94Ô\8d\86\83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93
191                 CString lvNoBuffer;                                                             //\90\95ú\91\97\94Ô\8d\86\83o\83b\83t\83@
192         private:
193                 // \83\81\83b\83Z\81[\83W\83t\83B\83\8b\83^\8f\88\97\9d
194                 virtual BOOL PreTranslateMessage(MSG* pMsg);
195
196                 // \83A\83C\83h\83\8b\8f\88\97\9d
197                 virtual BOOL OnIdle();
198
199                 
200                 
201
202         public:
203
204                 ///
205                 ///\83R\83\93\83X\83g\83\89\83N\83^
206                 ///
207                 CNliteMainFrame();
208                 
209
210                 ///
211                 ///\83f\83X\83g\83\89\83N\83^
212                 ///
213                 ~CNliteMainFrame();
214                 
215
216                 
217                 BEGIN_UPDATE_UI_MAP(CNliteMainFrame)
218                         // \83G\83\93\83g\83\8a\82È\82µ
219                 END_UPDATE_UI_MAP()
220                 
221                 // \83\81\83b\83Z\81[\83W\83}\83b\83v
222                 BEGIN_MSG_MAP_EX(CNliteMainFrame)
223                         MSG_WM_CREATE(OnCreate)
224                         MSG_WM_CLOSE(OnClose)
225                         MSG_WM_DESTROY(OnDestroy)
226                         MESSAGE_HANDLER(WM_SIZE,OnSize)
227                         MSG_WM_SIZING(OnSizing)
228                         MESSAGE_HANDLER(WM_SETCURSOR,OnSetCursor)
229                         MESSAGE_HANDLER_EX(UM_CLICK_CHATNO,OnClickChatNo)
230                         MESSAGE_HANDLER_EX(UM_UPDATEUI,OnUpDateUI)
231                         MESSAGE_HANDLER_EX(UM_UNLOCK_LVNOBUFFER,OnUnlockLvNoBuffer)
232                         MESSAGE_HANDLER_EX(UM_CLICK_USERNAME,OnClickUserName)
233                         COMMAND_ID_HANDLER_EX(IDM_EXIT, OnMenuExit)
234                         COMMAND_ID_HANDLER_EX(IDM_ABOUT,OnMenuAbount)
235                         COMMAND_ID_HANDLER_EX(IDM_COOKIE,OnCookie)
236                         COMMAND_ID_HANDLER_EX(IDM_VIEW_PREFERENCE,OnViewPreference)
237                         COMMAND_CODE_HANDLER_EX(CBN_SELCHANGE,OnCbSelChange)
238                         NOTIFY_HANDLER(ATL_IDW_TOOLBAR,RBN_HEIGHTCHANGE,OnRbnHeightChange)
239                         // CFrameWindowImpl\83N\83\89\83X\82Ö\83`\83F\81[\83\93
240                         CHAIN_MSG_MAP(CFrameWindowImpl<CNliteMainFrame>)
241                 END_MSG_MAP()
242
243                 
244                 ///
245                 ///\8f\89\8aú\89»\8f\88\97\9d
246                 ///
247                 VOID Initialize(LPCTSTR localAppDataPath);
248                 
249                 ///
250                 ///\8fI\97¹\8f\88\97\9d
251                 ///
252                 VOID Finalaize();
253                 
254                 
255                 ///
256                 ///\97á\8aO\94­\90\8e\9e\82Ì\8f\88\97\9d
257                 ///
258                 VOID OnException();
259
260         private:
261
262                 ///
263                 ///\83E\83B\83\93\83h\83E\82ð\95Â\82\82é\82Æ\82«\82Ì\8f\88\97\9d
264                 ///
265                 VOID OnClose();
266
267                 ///
268                 ///\83E\83B\83\93\83h\83E\94j\8aü\8e\9e\82Ì\8f\88\97\9d
269                 ///
270                 VOID OnDestroy();
271
272                 ///
273                 ///\83c\81[\83\8b\83o\81[\8d\82\82³\95Ï\8dX
274                 ///
275                 LRESULT OnRbnHeightChange(INT_PTR wParam,LPNMHDR lParam,BOOL &bHandled);
276                 
277
278                 ///
279                 ///\82±\82Ì\83E\83B\83\93\83h\83E\82ÌUI\8dX\90V
280                 ///
281                 LRESULT OnUpDateUI(UINT uMsg,WPARAM wParam,LPARAM lParam);
282
283                 ///
284                 ///\83r\83\85\81[\83A\82É\95\\8e¦\82³\82ê\82Ä\82¢\82é\83R\83\81\94Ô\82ª\83N\83\8a\83b\83N\82³\82ê\82½\8e\9e\82Ì\8f\88\97\9d
285                 ///
286                 LRESULT OnClickChatNo(UINT uMsg,WPARAM wParam,LPARAM lParam);
287                 
288
289                 ///
290                 ///\83r\83\85\81[\83A\82É\95\\8e¦\82³\82ê\82Ä\82¢\82é\83\86\81[\83U\96¼\82ª\83N\83\8a\83b\83N\82³\82ê\82½\8e\9e\82Ì\8f\88\97\9d
291                 ///
292                 LRESULT OnClickUserName(UINT uMsg,WPARAM wParam,LPARAM lParam);
293
294
295                 ///
296                 ///\83T\83C\83Y\95Ï\8dX\92\86\8f\88\97\9d
297                 ///
298                 VOID OnSizing(UINT wParam,LPRECT lParam);
299                 
300                 ///
301                 ///\83T\83C\83Y\95Ï\8dX\8cã
302                 ///
303                 LRESULT OnSize(UINT uMsg,WPARAM wParam,LPARAM lParam,BOOL& bHandled);
304                 
305                 
306                 ///
307                 ///\8eq\83E\83B\83\93\83h\83E\83T\83C\83Y\95Ï\8dX\8f\88\97\9d
308                 ///
309                 VOID ChangeSize(const SIZE& client);
310
311                 ///
312                 ///\83R\83\93\83{\83{\83b\83N\83X\82Ì\91I\91ð\8d\80\96Ú\82ª\95Ï\8dX\82³\82ê\82½
313                 ///
314                 LRESULT OnCbSelChange(UINT hiWparam,int loWparam,HWND lParam);
315
316                 ///
317                 ///\83E\83B\83\93\83h\83E\8dì\90¬\8e\9e\82Ì\8f\88\97\9d
318                 ///
319                 LRESULT OnCreate(LPCREATESTRUCT lpcs);
320
321
322                 ///
323                 ///\83j\83R\90\95ú\91\97\82É\90Ú\91±
324                 ///
325                 BOOL ConnectNicoLive(LPCTSTR liveNo);
326
327
328                 ///
329                 ///\83}\83E\83X\83J\81[\83\\83\8b\95Ï\8dX\8f\88\97\9d
330                 ///
331                 LRESULT OnSetCursor(LRESULT msg,WPARAM wParam,LPARAM lParam,BOOL &bHandled);
332
333
334                 //\83\81\83j\83\85\81[\82©\82ç\83t\83@\83C\83\8b\82ð\8fI\97¹\82ð\91I\91ð
335                 VOID OnMenuExit(UINT uNotifyCode, int nID, HWND hWndCtl);
336
337                 //\83\81\83j\83\85\81[\82Ì\83A\83v\83\8a\83P\81[\83V\83\87\83\93\83o\81[\83W\83\87\83\93\8fî\95ñ\95\\8e¦
338                 VOID OnMenuAbount(UINT uNotifyCode,int nID,HWND hWndCtl);
339
340                 //\83N\83b\83L\81[\82Ì\90Ý\92è
341                 VOID OnCookie(UINT uNotifyCode,int nID,HWND hWndCtl);
342
343                 //\83r\83\85\81[\83A\90Ý\92è
344                 VOID OnViewPreference(UINT uNotifyCode,int nID,HWND hWndCtl);
345
346                 ///
347                 ///\90\95ú\91\97\94Ô\8d\86\83o\83b\83t\83@\82Ì\83\8d\83b\83N\82ð\89ð\8f\9c
348                 ///
349                 LRESULT OnUnlockLvNoBuffer(UINT uMsg,WPARAM wParam,LPARAM lParam);
350
351
352                 ///
353                 ///CNicoLiveStream\82Ì\83R\81[\83\8b\83o\83b\83N\97p\8aÖ\90\94
354                 ///
355                 static NLIB_RESULT LiveCallBack(NICOLIVE_EVENT eventType,NicoLiveStream_P pNicoLiveStream,LPVOID option,NICOLIVE_PARAM param1,NICOLIVE_PARAM param2);
356
357                 
358                 ///
359                 ///\90Ú\91±\83X\83\8c\83b\83h
360                 ///
361                 static VOID ConnectingThread(LPVOID userData);
362         };
363
364
365
366
367         
368
369 }