From 409aafc01755afbdfae7528ae8f65ad962aac502 Mon Sep 17 00:00:00 2001 From: qwerty2501 Date: Fri, 10 Feb 2012 01:40:23 +0900 Subject: [PATCH] =?utf8?q?ncv=E3=81=8B=E3=82=89=E3=83=AA=E3=82=B9=E3=83=8A?= =?utf8?q?=E3=83=BC=E3=83=87=E3=83=BC=E3=82=BF=E3=82=92=E8=AA=AD=E3=81=BF?= =?utf8?q?=E5=8F=96=E3=82=8B=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- nlite.suo | Bin 164352 -> 167424 bytes nlite/nlite.h | 1 + nlite/nlite_chatData.cpp | 8 +++- nlite/nlite_chatData.h | 4 +- nlite/nlite_include.h | 2 +- nlite/nlite_property.cpp | 107 +++++++++++++++++++++++++++++++++++++++++++---- nlite/nlite_property.h | 23 ++++++++++ 7 files changed, 132 insertions(+), 13 deletions(-) diff --git a/nlite.suo b/nlite.suo index 9250c4edf5f289cbf1c489884ac01ac157dbb654..167ec282d066f072c0eb52aa5231df72dcb7cf7e 100644 GIT binary patch delta 3972 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 delta 3159 zcmaJ@e^gX;7N2|P%>d&7ZxBXQq;Uj7L>kZ#h-gGIR!fP~`lB=IfTJN25{^n_I1+LQ z5vTbk*W-hAlQ=GVIvrPWa?NA1-x*Rz|LA+peRJn~ z-}m0n{qeo`Id*FtO`5Lh2!-rHoC0H68P0`B_9uLX#fHU8=}I%GYJPZaR=)I{a2|x4 z!^6YOqTU%~q-*L=!y-Tgg(6y^P_X+NCNh%{#{5xDki(vj-V~mPe4j7cyBf`sSu6rT zwncaU=#lM_XB7XjDKlu(@c`d=!;|nt>tt< zXoy*VUc@rqiD7@-9ZSB;(8QeEG~~Ddf+Q}ygsyD6I*ps_*Gcu+&A=ZJ6P?iL@6;pMad=$BCC2NR?9)%UXuM0L5+TeRR3tRC^=hel+=?1?NGyp z7yqaZ#K1+;^{3TSBxfR*^(H|bxuYS9x>7lYR?~VV6;Hq>sj2;If$TZZz#LN(q}Eq0 z0QKyZ?K7C0f~UsFKQ;fK5tt4*)ZaFOUj)H^O_J z-=l8p)CWAB(|w1MP0ic1Nk)ico0rB(;u{N4_q4dIwfj&^oq%0*X$j9xr3N;3-b7|z7EYQzi1Ca9VCLl&R1pOY-3YVz1=+yCH-tDq_6TUB zeu6|24?&Eqj|Lxjw1D!U2;)@LzXGz!k$`GBKM{JMBMAmw8;q3n2S|_$^l&tc8563Q zSRF&QWY|rn7|@b76;68$AW&xxSg3F^{Dm@B@hYxK(~>hC7I;zs={*e;QtDLrnz^@I z$(jSruIG~Eq%=4KZ0LF#iMeozIj5CUlomuPw?LC812k_ATKL(cvG6!^<{IVdJaA1^ zJiINEK4L8Qh8D3*(@a9GJYQ_7k1VIx^OAY86}2HFK?y|RdE z`oSpIHvzv!N8DyIw}GeQG2l3=;I)VdILssUVMw%O|2i;-1sjf>^CEntmIvEl9FQ*- z3WC>{o_ZBr-OXS_apn0N)!vQEJUs_8CoDVVJ}cW>piRk6eh^FTAAwd@?*N|b@-2`> zU0o0*o7*8=C43fQjqD8O)3I>K((vBZ$0dBxcg3)YYy`VKdw2ueHJ~BQK{!JLK8Rua z?$40TJHe|W?-DSPCYswZ9^!c;hYOM@$qnxC6I{vXoNiqi^1ESvpuow#7v@I*?{UM& zL*%l5FZ3yep1Zc*fL=kxdypcUK71R-Ge@K#4<3MV5!Cq^EM?xE39?lNH&XuRaFF=vNWw*CX$zzvOK;>mC__CZhgC-4)nPnSQ)Y9`HQPHn7Q{Uy|K z*X;qWzS7|l=&`-ls5s7vrFyOa4q9tp6Ug;c%Z|A zgPt@L*vX~sQq;mBWH;EYX;%sKzK^G`)hhn)xqj+4eP>fP|sq6`CrLK9XrRcRdg}Q%( zZDAE<_M$R-8C@#DG&*6%=RJj}rp;!Y9guIOZ|xX9B5a(yoj0f`^WJZ@&8+yFH%F+2AmQF3Q#JVXSlu?|Ao_hF9zNsCRSoPz&(PQ zy0=suesHCEKj!?y)Vl_qcf<9)fcjB9-@mLh*-?%KK=0W&cRKg0AhPc zOach>wve}4IUmWX=*UR4d4Q%7f6GW~YB7RVti_9TZX=$AiEN@UnhMupTOd?24^

  • &C|Wo#(j)8eZ}iy09y#9~yDuNbp}r*v=JK9%g<&v`A0 zFW_S#Cvv;na6eGuB7V2Z8qiF`^{7=D`Kyo8eEVImn(5zmT*)Upuff6)6=s_L1f~b< z8N#-BbNSJnd##wM`bB(_s%lXS(!J*&Qm?h!%2w8mlxQH(nt*eGRkW2psKLC{<$0D3 ztEz3b)s`9ACR0Xc_OzS_Gcql!s+U{J>{T-|1J8;zYwfpH==CQ8pTfbF>^;r-WX>10 z2Gyl-bqiNj7ZuI@6?Gd{(Yw#$Or0<67d47x?^(`A((g9min|l#1Lm$Y+@_x+CXvB` X{cLAtD&I_?o`slyTWS)7;Ku&}mRl|4 diff --git a/nlite/nlite.h b/nlite/nlite.h index c32351a..5bb27b5 100644 --- a/nlite/nlite.h +++ b/nlite/nlite.h @@ -9,6 +9,7 @@ namespace nlite{ class CListenerList; struct Property; struct GeneralProperty; + struct ListenerData; diff --git a/nlite/nlite_chatData.cpp b/nlite/nlite_chatData.cpp index 36112f7..0177243 100644 --- a/nlite/nlite_chatData.cpp +++ b/nlite/nlite_chatData.cpp @@ -76,7 +76,7 @@ VOID CChatData::SetChat(NicoLiveChat &chat_in,ListenerData &listener){ - this->listenerData = &listenerList.Register(listener); + this->listenerData = &listenerList.Register(listener,FALSE); this->vpos = _ttol(chat_in.vpos); @@ -289,7 +289,7 @@ VOID CListenerList::BkColorCollect(CListenerColorCollector &target){ std::for_each(m_listenerList.begin(), end,target); } -CListenerList::reference CListenerList::Register(ListenerData &listener){ +CListenerList::reference CListenerList::Register(ListenerData &listener,BOOL bUpdate){ ListenerPre listenerPre(listener); @@ -307,6 +307,10 @@ CListenerList::reference CListenerList::Register(ListenerData &listener){ return m_listenerList.back(); + } else if(bUpdate == TRUE){ + + *rslt = listener; + } return *rslt; diff --git a/nlite/nlite_chatData.h b/nlite/nlite_chatData.h index a05a2ca..0690b24 100644 --- a/nlite/nlite_chatData.h +++ b/nlite/nlite_chatData.h @@ -101,8 +101,10 @@ namespace nlite{ /// ///ƒ†[ƒU[“o˜^ /// - reference Register(ListenerData &listener); + reference Register(ListenerData &listener,BOOL bUpdate); + + /// ///”wŒiF‚ðŽûW‚·‚é /// diff --git a/nlite/nlite_include.h b/nlite/nlite_include.h index e3012d6..7357f78 100644 --- a/nlite/nlite_include.h +++ b/nlite/nlite_include.h @@ -15,8 +15,8 @@ #include "nlite_exception.h" #include "nlite_commentWrite.h" #include "nlite_nlib.h" -#include "nlite_property.h" #include "nlite_chatData.h" +#include "nlite_property.h" #include "nlite_commentview.h" #include "nlite_appinfo.h" #include "nlite_propertyWindow.h" diff --git a/nlite/nlite_property.cpp b/nlite/nlite_property.cpp index aefe704..ae7a190 100644 --- a/nlite/nlite_property.cpp +++ b/nlite/nlite_property.cpp @@ -95,7 +95,8 @@ namespace nlite{ numberNameFlag(FALSE), autoColorRegisterFlag(FALSE), activeCountTimeFlag(TRUE), - browserType(BT_NOSETTING) + browserType(BT_NOSETTING), + ncvUserSettingReadedFlag(FALSE) {} @@ -152,19 +153,45 @@ namespace nlite{ CreatePropertyFile(); CAtlFile propertyFile; - ULONGLONG nLen; - - if(SUCCEEDED(propertyFile.Create(propertyPath,GENERIC_READ,FILE_SHARE_READ,OPEN_ALWAYS)) == FALSE || SUCCEEDED(propertyFile.GetSize(nLen)) == FALSE){ + CAtlFile ncvUserSettingFile; + ULONGLONG propertyFileSize; + ULONGLONG ncvUserSettingFileSize; + if(SUCCEEDED(propertyFile.Create(propertyPath,GENERIC_READ,FILE_SHARE_READ,OPEN_ALWAYS)) == FALSE || SUCCEEDED(propertyFile.GetSize(propertyFileSize)) == FALSE){ throw Exception(TEXT("Ý’èƒtƒ@ƒCƒ‹‚ªŠJ‚¯‚Ü‚¹‚ñ‚Å‚µ‚½B‚±‚̃Gƒ‰[‚ª‘±‚­‚悤‚Å‚ ‚ê‚΁Aˆê“xÝ’èƒtƒ@ƒCƒ‹‚ðíœ‚µ‚čēxŽŽ‚µ‚Ä‚Ý‚Ä‚­‚¾‚³‚¢"),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__)); + } + + std::vector propertyBuf(static_cast(propertyFileSize / sizeof(char) + (1 * sizeof(char)))); + + + propertyFile.Read(&propertyBuf[0],propertyBuf.size()); + + LPSTR propertyTagStart = strstr(&propertyBuf[0],"<"); + if(propertyTagStart != NULL){ + ReadPropertyXML reader(*this); + reader.Parse(propertyTagStart); } - std::vector buf(static_cast(nLen / sizeof(char) + 1)); - buf[buf.size() -1 ] = '\0'; - propertyFile.Read(&buf[0],buf.size()); - ReadPropertyXML reader(*this); - reader.Parse(&buf[0],buf.size()); + + if(this->gp.ncvUserSettingReadedFlag == FALSE){ + + TCHAR appFolderPath[_MAX_PATH]; + SHGetFolderPathW(0,CSIDL_APPDATA,0,SHGFP_TYPE_CURRENT,appFolderPath); + CString ncvUserSettingPath = appFolderPath; + ncvUserSettingPath += TEXT("\\posite-c\\NiconamaCommentViewer\\UserSetting.xml"); + if(SUCCEEDED(ncvUserSettingFile.Create(ncvUserSettingPath,GENERIC_READ,FILE_SHARE_READ,OPEN_ALWAYS)) == FALSE || SUCCEEDED(ncvUserSettingFile.GetSize(ncvUserSettingFileSize)) == FALSE){ + + throw Exception(TEXT("ƒŠƒXƒi[Ý’èƒtƒ@ƒCƒ‹‚ªŠJ‚¯‚Ü‚¹‚ñ‚Å‚µ‚½B‚±‚̃Gƒ‰[‚ª‘±‚­‚悤‚Å‚ ‚ê‚΁Aˆê“xÝ’èƒtƒ@ƒCƒ‹‚ðíœ‚µ‚čēxŽŽ‚µ‚Ä‚Ý‚Ä‚­‚¾‚³‚¢"),__LINE__,TEXT(__FILE__),TEXT(__FUNCTION__)); + } + std::vector ncvUserSettingBuf(static_cast(ncvUserSettingFileSize / sizeof(char) + (1 * sizeof(char)))); + ncvUserSettingFile.Read(&ncvUserSettingBuf[0],ncvUserSettingBuf.size()); + LPSTR ncvUserSettingStart = strstr(&ncvUserSettingBuf[0],"<"); + if(ncvUserSettingStart != NULL){ + ReadUserSettingXML rusx; + rusx.Parse(ncvUserSettingStart); + } + } return; } @@ -271,6 +298,8 @@ namespace nlite{ NLITE_ATTRIBUTE_WRITE_INT(pWriter,mfp.windowFrontFlag); pWriter->WriteEndElement(); + + //‹¤’ʐݒ菑‚«ž‚Ý NLITE_XMLELLMENT_WRITE(pWriter,gp); NLITE_ATTRIBUTE_WRITE_INT(pWriter,gp.activeCountTimeFlag); NLITE_ATTRIBUTE_WRITE_INT(pWriter,gp.autoColorRegisterFlag); @@ -283,6 +312,8 @@ namespace nlite{ NLITE_ATTRIBUTE_WRITE_INT(pWriter,gp.defaultBrowserFlag); NLITE_ATTRIBUTE_WRITE_INT(pWriter,gp.numberNameFlag); NLITE_ATTRIBUTE_WRITE_INT(pWriter,gp.userCountUpdateFlag); + NLITE_ATTRIBUTE_WRITE_INT(pWriter,gp.ncvUserSettingReadedFlag); + pWriter->WriteEndElement(); pWriter->WriteEndDocument(); @@ -448,6 +479,7 @@ namespace nlite{ NLITE_R_X_P_I(nliteProperty,gp,defaultBrowserFlag); NLITE_R_X_P_I(nliteProperty,gp,numberNameFlag); NLITE_R_X_P_I(nliteProperty,gp,userCountUpdateFlag); + NLITE_R_X_P_I(nliteProperty,gp,ncvUserSettingReadedFlag); break; case Node::MainFrameProperty: NLITE_R_X_P_I(nliteProperty,mfp,windowSize.cx); @@ -468,4 +500,61 @@ end: return; } + + +#define NLITE_READ_USER_STRING(at,l,t) if(_tcscmp(at[0],TEXT(#t)) == 0)l.t = at[1] +#define NLITE_READ_USER_INT(at,l,t) if(_tcscmp(at[0],TEXT(#t))==0)l.t = _tcstol((const wchar_t*)at[1],NULL,10) + + void ReadUserSettingXML::OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs){ + + if(_tcscmp(pszName,TEXT("user")) == 0){ + + this->userNodeFlag = TRUE; + + + for(;papszAttrs[0] != NULL;papszAttrs += 2){ + + NLITE_READ_USER_STRING(papszAttrs,listenerBuff,name); + NLITE_READ_USER_STRING(papszAttrs,listenerBuff,community); + NLITE_READ_USER_INT(papszAttrs,listenerBuff,bgcolor); + NLITE_READ_USER_INT(papszAttrs,listenerBuff,time); + + } + + } + + return; + } + + void ReadUserSettingXML::OnEndElement (const XML_Char *pszName){ + + if(_tcscmp(pszName,TEXT("user")) == 0){ + + listenerList.Register(listenerBuff,TRUE); + this->userNodeFlag = FALSE; + this->listenerBuff.~ListenerData(); + new(&listenerBuff) ListenerData(); + + } + + return; + } + + void ReadUserSettingXML::OnCharacterData (const XML_Char *pszData, int nLength){ + + if(this->userNodeFlag == TRUE){ + + + listenerBuff.user_id.Append(pszData,nLength); + + + + + } + + + + return; + } + } \ No newline at end of file diff --git a/nlite/nlite_property.h b/nlite/nlite_property.h index f2ee46c..e83832e 100644 --- a/nlite/nlite_property.h +++ b/nlite/nlite_property.h @@ -84,6 +84,7 @@ namespace nlite{ BOOL autoColorRegisterFlag; //–¼‘O“o˜^Ž‚ɐF‚ðŽ©“®“I‚ÉŽw’è‚·‚é‚©‚̃tƒ‰ƒO BOOL activeCountTimeFlag; //ƒAƒNƒeƒBƒul”‚ðŽ©“®XV‚·‚é‚©‚̃tƒ‰ƒO BROWSERTYPE browserType; //ƒuƒ‰ƒEƒUƒ^ƒCƒv + BOOL ncvUserSettingReadedFlag; //ncvƒŠƒXƒi[ƒf[ƒ^“ǂݍž‚ݍς݃tƒ‰ƒO /// @@ -196,4 +197,26 @@ namespace nlite{ }; + /// + ///ƒ†[ƒUÝ’èƒtƒ@ƒCƒ‹“ÇŽæƒNƒ‰ƒX + /// + class ReadUserSettingXML:public CXmlParser{ + + private: + ListenerData listenerBuff; + BOOL userNodeFlag; + + + + + + public: + void OnStartElement (const XML_Char *pszName, const XML_Char **papszAttrs); + + void OnEndElement (const XML_Char *pszName); + + void OnCharacterData (const XML_Char *pszData, int nLength); + }; + + } \ No newline at end of file -- 2.11.0