2 #include "nlite_include.h"
5 CListenerList nlite::listenerList;
7 //
\83\8a\83X
\83i
\81[
\8c\9f\8dõ
\83I
\83u
\83W
\83F
\83N
\83g
12 ListenerPre(LPCTSTR user_id_in):
16 bool operator()(CListenerList::reference listenerData){
18 return _tcscmp(user_id,listenerData.user_id) == 0;
24 ListenerData::ListenerData(LPCTSTR user_id_in):
27 bkColor(PALETTERGB(0,0,0)),
31 VOID ListenerData::SetBkColor(COLORREF bkColor_in){
37 VOID CCommentList::OnChatReceve(NicoLiveChat_P chatData_in, UINT_PTR commnetCountSum,CCommentListWindow &listWindow){
41 chatData.SetChat(*chatData_in);
43 // chatData.height = listWindow.CalcItemHeight(chatData);
45 chatList.push_back(chatData);
48 CChatData::ViewData::ViewData():
49 sellLineColor(INIT_COLOR),
50 stringColor(INIT_COLOR),
51 backColor(INIT_COLOR),
55 VOID CChatData::SetChat(NicoLiveChat &chat_in){
58 this->anonymity = _ttol(chat_in.anonymity);
59 this->premium = _ttol(chat_in.premium);
60 this->chatBuf = chat_in.chatBuf;
61 this->no = _ttol(chat_in.no);
63 if(_tcscmp(chat_in.locale,TEXT("jp")) == 0){
64 this->locale = cuntry::jp;
66 this->locale = cuntry::unknown;
68 this->mail.reserve(chat_in.mailCount);
69 for(UINT_PTR index = 0;index < chat_in.mailCount ;index++){
71 this->mail.push_back(chat_in.mail[index]);
74 this->name = chat_in.name;
76 this->listenerData = &listenerList.Register(chat_in.user_id);
79 this->vpos = _ttol(chat_in.vpos);
80 this->thread = _ttol(chat_in.thread);
81 this->date = _ttol(chat_in.date);
91 //
\83R
\83\81\83\93\83g
\83\8a\83X
\83g
\83N
\83\89\83X
92 //////////////////////////////////////////////////////////////////////////
94 //
\91I
\91ð
\8ds
\8eæ
\93¾
\97p
\83t
\83@
\83\93\83N
\83V
\83\87\83i
\83\8b
95 struct GetCurSelFunc_t{
103 BOOL operator() (CChatData &target){
105 return target.viewData.selectFlag;
110 CCommentList::CCommentList(){}
112 CCommentList::~CCommentList(){}
114 INT_PTR CCommentList::GetCurSel(){
115 GetCurSelFunc_t functa;
116 auto end = this->end();
117 auto ite = this->begin();
119 for(;ite != end && ite->viewData.selectFlag == FALSE;++ite,++count);
121 return ite != end ? count : ERR;
124 CCommentList::iterator CCommentList::GetCurSelItem(){
125 auto rslt = std::find_if(chatList.begin(),chatList.end(),GetCurSelFunc_t());
131 VOID CCommentList::SetCurSel(INT_PTR cursel){
132 if(cursel < 0)goto end;
134 auto curselItem = this->GetCurSelItem();
136 if(curselItem != this->end()){
137 curselItem->viewData.selectFlag = FALSE;
140 iterator data = chatList.begin();
141 std::advance(data,cursel);
142 data->viewData.selectFlag = TRUE;
150 CCommentList::reference CCommentList::GetChatAt(UINT_PTR no){
152 iterator data = chatList.begin();
153 std::advance(data,no);
158 UINT_PTR CCommentList::Size(){
160 return chatList.size();
163 BOOL CCommentList::empty(){
165 return chatList.empty();
170 CCommentList::iterator CCommentList::begin(){
172 return chatList.begin();
175 CCommentList::iterator CCommentList::end(){
177 return chatList.end();
181 CCommentList::reverse_iterator CCommentList::rbegein(){
183 return chatList.rbegin();
189 CCommentList::reverse_iterator CCommentList::rend(){
191 return chatList.rend();
194 VOID CCommentList::OnDestroy(){
200 VOID CCommentList::OnConnect(){
204 CCommentList::reference CCommentList::back(){
206 return chatList.back();
209 VOID CListenerList::BkColorCollect(CListenerColorCollector &target){
211 iterator end = m_listenerList.end();
212 std::for_each(m_listenerList.begin(), end,target);
215 CListenerList::reference CListenerList::Register(LPCTSTR user_id){
217 ListenerPre listenerPre(user_id);
219 iterator begin = m_listenerList.begin();
220 iterator end = m_listenerList.end();
222 iterator rslt = std::find_if(begin,end,listenerPre);
228 ListenerData insertData(user_id);
231 m_listenerList.push_back(insertData);
233 return m_listenerList.back();