| OLD | NEW |
| 1 #include "PluginStdAfx.h" | 1 #include "PluginStdAfx.h" |
| 2 #include "PluginUserSettings.h" | 2 #include "PluginUserSettings.h" |
| 3 #include <algorithm> | 3 #include <algorithm> |
| 4 #include "PluginSettings.h" | 4 #include "PluginSettings.h" |
| 5 #include "PluginClient.h" | 5 #include "PluginClient.h" |
| 6 #include "PluginIniFileW.h" | 6 #include "PluginIniFileW.h" |
| 7 #include "PluginDictionary.h" | 7 #include "PluginDictionary.h" |
| 8 | 8 |
| 9 static const CString s_GetMessage = L"GetMessage"; | 9 static const CString s_GetMessage = L"GetMessage"; |
| 10 static const CString s_GetLanguageCount = L"GetLanguageCount"; | 10 static const CString s_GetLanguageCount = L"GetLanguageCount"; |
| 11 static const CString s_GetLanguageByIndex = L"GetLanguageByIndex"; | 11 static const CString s_GetLanguageByIndex = L"GetLanguageByIndex"; |
| 12 static const CString s_GetLanguageTitleByIndex = L"GetLanguageTitleByIndex"; | 12 static const CString s_GetLanguageTitleByIndex = L"GetLanguageTitleByIndex"; |
| 13 static const CString s_SetLanguage = L"SetLanguage"; | 13 static const CString s_SetLanguage = L"SetLanguage"; |
| 14 static const CString s_GetLanguage = L"GetLanguage"; | 14 static const CString s_GetLanguage = L"GetLanguage"; |
| 15 static const CString s_GetWhitelistDomains = L"GetWhitelistDomains"; | 15 static const CString s_GetWhitelistDomains = L"GetWhitelistDomains"; |
| 16 static const CString s_AddWhitelistDomain = L"AddWhitelistDomain"; | 16 static const CString s_AddWhitelistDomain = L"AddWhitelistDomain"; |
| 17 static const CString s_RemoveWhitelistDomain = L"RemoveWhitelistDomain"; | 17 static const CString s_RemoveWhitelistDomain = L"RemoveWhitelistDomain"; |
| 18 | 18 |
| 19 static const CString s_Methods[] = {s_GetMessage, s_GetLanguageCount, s_GetLangu
ageByIndex, s_GetLanguageTitleByIndex, s_SetLanguage, s_GetLanguage, s_GetWhitel
istDomains, s_AddWhitelistDomain, s_RemoveWhitelistDomain}; | 19 static const CString s_Methods[] = {s_GetMessage, s_GetLanguageCount, s_GetLangu
ageByIndex, s_GetLanguageTitleByIndex, s_SetLanguage, s_GetLanguage, s_GetWhitel
istDomains, s_AddWhitelistDomain, s_RemoveWhitelistDomain}; |
| 20 | 20 |
| 21 CPluginUserSettings::CPluginUserSettings() | 21 CPluginUserSettings::CPluginUserSettings() |
| 22 { | 22 { |
| 23 } | 23 } |
| 24 | 24 |
| 25 | 25 |
| 26 STDMETHODIMP CPluginUserSettings::QueryInterface(REFIID riid, void **ppvObj) | 26 STDMETHODIMP CPluginUserSettings::QueryInterface(REFIID riid, void **ppvObj) |
| 27 { | 27 { |
| 28 if (IID_IUnknown == riid || IID_IDispatch == riid) | 28 if (IID_IUnknown == riid || IID_IDispatch == riid) |
| 29 { | 29 { |
| 30 *ppvObj = (LPVOID)this; | 30 *ppvObj = (LPVOID)this; |
| 31 return NOERROR; | 31 return NOERROR; |
| 32 } | 32 } |
| 33 | 33 |
| 34 return E_NOINTERFACE; | 34 return E_NOINTERFACE; |
| 35 } | 35 } |
| 36 | 36 |
| 37 | 37 |
| 38 /* | 38 /* |
| 39 Since CPluginUserSettings is not allocated on the heap, 'AddRef' and 'Release' d
on't need reference counting, | 39 Since CPluginUserSettings is not allocated on the heap, 'AddRef' and 'Release' d
on't need reference counting, |
| 40 because CPluginUserSettings won't be deleted when reference counter == 0 | 40 because CPluginUserSettings won't be deleted when reference counter == 0 |
| 41 */ | 41 */ |
| 42 | 42 |
| 43 ULONG __stdcall CPluginUserSettings::AddRef() | 43 ULONG __stdcall CPluginUserSettings::AddRef() |
| 44 { | 44 { |
| 45 return 1; | 45 return 1; |
| 46 } | 46 } |
| 47 | 47 |
| 48 | 48 |
| 49 ULONG __stdcall CPluginUserSettings::Release() | 49 ULONG __stdcall CPluginUserSettings::Release() |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 } | 125 } |
| 126 | 126 |
| 127 | 127 |
| 128 STDMETHODIMP CPluginUserSettings::Invoke(DISPID dispidMember, REFIID riid, LCID
lcid, WORD wFlags, DISPPARAMS* pDispparams, VARIANT* pVarResult, | 128 STDMETHODIMP CPluginUserSettings::Invoke(DISPID dispidMember, REFIID riid, LCID
lcid, WORD wFlags, DISPPARAMS* pDispparams, VARIANT* pVarResult, |
| 129 EXCEPINFO* pExcepinfo, UINT* pArgErr) | 129 EXCEPINFO* pExcepinfo, UINT* pArgErr) |
| 130 { | 130 { |
| 131 if (!pDispparams) | 131 if (!pDispparams) |
| 132 return E_POINTER; | 132 return E_POINTER; |
| 133 | 133 |
| 134 if (!pExcepinfo) | 134 if (!pExcepinfo) |
| 135 return E_POINTER; | 135 return E_POINTER; |
| 136 | 136 |
| 137 if (pDispparams->cNamedArgs) | 137 if (pDispparams->cNamedArgs) |
| 138 return DISP_E_NONAMEDARGS; | 138 return DISP_E_NONAMEDARGS; |
| 139 | 139 |
| 140 CPluginSettings* settings = CPluginSettings::GetInstance(); | 140 CPluginSettings* settings = CPluginSettings::GetInstance(); |
| 141 | 141 |
| 142 if (dispidMember < 0 || dispidMember >= countof(s_Methods)) | 142 if (dispidMember < 0 || dispidMember >= countof(s_Methods)) |
| 143 return DISP_E_BADINDEX; | 143 return DISP_E_BADINDEX; |
| 144 | 144 |
| 145 const CString& method = s_Methods[dispidMember]; | 145 const CString& method = s_Methods[dispidMember]; |
| 146 | 146 |
| 147 if (s_GetMessage == method) | 147 if (s_GetMessage == method) |
| 148 { | 148 { |
| 149 if (1 != pDispparams->cArgs) | 149 if (1 != pDispparams->cArgs) |
| 150 return DISP_E_BADPARAMCOUNT; | 150 return DISP_E_BADPARAMCOUNT; |
| 151 | 151 |
| 152 if (VT_BSTR != pDispparams->rgvarg[0].vt) | 152 if (VT_BSTR != pDispparams->rgvarg[0].vt) |
| 153 return DISP_E_TYPEMISMATCH; | 153 return DISP_E_TYPEMISMATCH; |
| 154 | 154 |
| 155 if (pVarResult) | 155 if (pVarResult) |
| 156 { | 156 { |
| 157 CComBSTR key = pDispparams->rgvarg[0].bstrVal; | 157 CComBSTR key = pDispparams->rgvarg[0].bstrVal; |
| 158 CStringW message = sGetMessage((BSTR)key); | 158 CStringW message = sGetMessage((BSTR)key); |
| 159 | 159 |
| 160 pVarResult->vt = VT_BSTR; | 160 pVarResult->vt = VT_BSTR; |
| 161 pVarResult->bstrVal = SysAllocString(message); | 161 pVarResult->bstrVal = SysAllocString(message); |
| 162 } | 162 } |
| 163 } | 163 } |
| 164 else if (s_GetLanguageCount == method) | 164 else if (s_GetLanguageCount == method) |
| 165 { | 165 { |
| 166 if (pDispparams->cArgs) | 166 if (pDispparams->cArgs) |
| 167 return DISP_E_BADPARAMCOUNT; | 167 return DISP_E_BADPARAMCOUNT; |
| 168 | 168 |
| 169 if (pVarResult) | 169 if (pVarResult) |
| 170 { | 170 { |
| 171 std::map<CString, CString> languageList = settings->GetFilterLanguageTitle
List(); | 171 std::map<CString, CString> languageList = settings->GetFilterLanguageTitle
List(); |
| 172 | 172 |
| 173 pVarResult->vt = VT_I4; | 173 pVarResult->vt = VT_I4; |
| 174 pVarResult->lVal = languageList.size(); | 174 pVarResult->lVal = languageList.size(); |
| 175 } | 175 } |
| 176 } | 176 } |
| 177 else if (s_GetLanguageByIndex == method) | 177 else if (s_GetLanguageByIndex == method) |
| 178 { | 178 { |
| 179 if (1 != pDispparams->cArgs) | 179 if (1 != pDispparams->cArgs) |
| 180 return DISP_E_BADPARAMCOUNT; | 180 return DISP_E_BADPARAMCOUNT; |
| 181 | 181 |
| 182 if (VT_I4 != pDispparams->rgvarg[0].vt) | 182 if (VT_I4 != pDispparams->rgvarg[0].vt) |
| 183 return DISP_E_TYPEMISMATCH; | 183 return DISP_E_TYPEMISMATCH; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 198 { | 198 { |
| 199 if (curIndx == indx) | 199 if (curIndx == indx) |
| 200 { | 200 { |
| 201 language = it->first; | 201 language = it->first; |
| 202 break; | 202 break; |
| 203 } | 203 } |
| 204 | 204 |
| 205 curIndx++; | 205 curIndx++; |
| 206 } | 206 } |
| 207 | 207 |
| 208 pVarResult->vt = VT_BSTR; | 208 pVarResult->vt = VT_BSTR; |
| 209 pVarResult->bstrVal = SysAllocString(language); | 209 pVarResult->bstrVal = SysAllocString(language); |
| 210 } | 210 } |
| 211 } | 211 } |
| 212 else if (s_GetLanguageTitleByIndex == method) | 212 else if (s_GetLanguageTitleByIndex == method) |
| 213 { | 213 { |
| 214 if (1 != pDispparams->cArgs) | 214 if (1 != pDispparams->cArgs) |
| 215 return DISP_E_BADPARAMCOUNT; | 215 return DISP_E_BADPARAMCOUNT; |
| 216 | 216 |
| 217 if (VT_I4 != pDispparams->rgvarg[0].vt) | 217 if (VT_I4 != pDispparams->rgvarg[0].vt) |
| 218 return DISP_E_TYPEMISMATCH; | 218 return DISP_E_TYPEMISMATCH; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 233 { | 233 { |
| 234 if (curIndx == indx) | 234 if (curIndx == indx) |
| 235 { | 235 { |
| 236 languageTitle = it->second; | 236 languageTitle = it->second; |
| 237 break; | 237 break; |
| 238 } | 238 } |
| 239 | 239 |
| 240 curIndx++; | 240 curIndx++; |
| 241 } | 241 } |
| 242 | 242 |
| 243 pVarResult->vt = VT_BSTR; | 243 pVarResult->vt = VT_BSTR; |
| 244 pVarResult->bstrVal = SysAllocString(languageTitle); | 244 pVarResult->bstrVal = SysAllocString(languageTitle); |
| 245 } | 245 } |
| 246 } | 246 } |
| 247 else if (s_SetLanguage == method) | 247 else if (s_SetLanguage == method) |
| 248 { | 248 { |
| 249 if (1 != pDispparams->cArgs) | 249 if (1 != pDispparams->cArgs) |
| 250 return DISP_E_BADPARAMCOUNT; | 250 return DISP_E_BADPARAMCOUNT; |
| 251 | 251 |
| 252 if (VT_BSTR != pDispparams->rgvarg[0].vt) | 252 if (VT_BSTR != pDispparams->rgvarg[0].vt) |
| 253 return DISP_E_TYPEMISMATCH; | 253 return DISP_E_TYPEMISMATCH; |
| 254 | 254 |
| 255 CComBSTR url = pDispparams->rgvarg[0].bstrVal; | 255 CComBSTR url = pDispparams->rgvarg[0].bstrVal; |
| 256 | 256 |
| 257 settings->SetSubscription((BSTR)url); | 257 settings->SetSubscription((BSTR)url); |
| 258 } | 258 } |
| 259 else if (s_GetLanguage == method) | 259 else if (s_GetLanguage == method) |
| 260 { | 260 { |
| 261 if (pDispparams->cArgs) | 261 if (pDispparams->cArgs) |
| 262 return DISP_E_BADPARAMCOUNT; | 262 return DISP_E_BADPARAMCOUNT; |
| 263 | 263 |
| 264 if (pVarResult) | 264 if (pVarResult) |
| 265 { | 265 { |
| 266 CString url = settings->GetSubscription(); | 266 CString url = settings->GetSubscription(); |
| 267 | 267 |
| 268 pVarResult->vt = VT_BSTR; | 268 pVarResult->vt = VT_BSTR; |
| 269 pVarResult->bstrVal = SysAllocString(url); | 269 pVarResult->bstrVal = SysAllocString(url); |
| 270 } | 270 } |
| 271 } | 271 } |
| 272 else if (s_GetWhitelistDomains == method) | 272 else if (s_GetWhitelistDomains == method) |
| 273 { | 273 { |
| 274 if (pDispparams->cArgs) | 274 if (pDispparams->cArgs) |
| 275 return DISP_E_BADPARAMCOUNT; | 275 return DISP_E_BADPARAMCOUNT; |
| 276 | 276 |
| 277 if (pVarResult) | 277 if (pVarResult) |
| 278 { | 278 { |
| 279 std::vector<std::string> whiteList = settings->GetWhiteListedDomainList(); | 279 std::vector<std::string> whiteList = settings->GetWhiteListedDomainList(); |
| 280 CString sWhiteList; | 280 CString sWhiteList; |
| 281 for (int i = 0; i < whiteList.size(); i++) | 281 for (size_t i = 0; i < whiteList.size(); i++) |
| 282 { | 282 { |
| 283 if (!sWhiteList.IsEmpty()) | 283 if (!sWhiteList.IsEmpty()) |
| 284 { | 284 { |
| 285 sWhiteList += ','; | 285 sWhiteList += ','; |
| 286 } | 286 } |
| 287 sWhiteList += CString(CA2W(whiteList[i].c_str(), CP_UTF8)); | 287 sWhiteList += CString(CA2W(whiteList[i].c_str(), CP_UTF8)); |
| 288 } | 288 } |
| 289 | 289 |
| 290 pVarResult->vt = VT_BSTR; | 290 pVarResult->vt = VT_BSTR; |
| 291 pVarResult->bstrVal = SysAllocString(sWhiteList); | 291 pVarResult->bstrVal = SysAllocString(sWhiteList); |
| 292 } | 292 } |
| 293 } | 293 } |
| 294 else if (s_AddWhitelistDomain == method) | 294 else if (s_AddWhitelistDomain == method) |
| 295 { | 295 { |
| 296 if (1 != pDispparams->cArgs) | 296 if (1 != pDispparams->cArgs) |
| 297 return DISP_E_BADPARAMCOUNT; | 297 return DISP_E_BADPARAMCOUNT; |
| 298 | 298 |
| 299 if (VT_BSTR != pDispparams->rgvarg[0].vt) | 299 if (VT_BSTR != pDispparams->rgvarg[0].vt) |
| 300 return DISP_E_TYPEMISMATCH; | 300 return DISP_E_TYPEMISMATCH; |
| 301 | 301 |
| 302 CComBSTR domain = pDispparams->rgvarg[0].bstrVal; | 302 CComBSTR domain = pDispparams->rgvarg[0].bstrVal; |
| 303 if (domain.Length()) | 303 if (domain.Length()) |
| 304 { | 304 { |
| 305 settings->AddWhiteListedDomain((BSTR)domain); | 305 settings->AddWhiteListedDomain((BSTR)domain); |
| 306 } | 306 } |
| 307 } | 307 } |
| 308 else if (s_RemoveWhitelistDomain == method) | 308 else if (s_RemoveWhitelistDomain == method) |
| 309 { | 309 { |
| 310 if (1 != pDispparams->cArgs) | 310 if (1 != pDispparams->cArgs) |
| 311 return DISP_E_BADPARAMCOUNT; | 311 return DISP_E_BADPARAMCOUNT; |
| 312 | 312 |
| 313 if (VT_BSTR != pDispparams->rgvarg[0].vt) | 313 if (VT_BSTR != pDispparams->rgvarg[0].vt) |
| 314 return DISP_E_TYPEMISMATCH; | 314 return DISP_E_TYPEMISMATCH; |
| 315 | 315 |
| 316 CComBSTR domain = pDispparams->rgvarg[0].bstrVal; | 316 CComBSTR domain = pDispparams->rgvarg[0].bstrVal; |
| 317 if (settings->IsWhiteListedDomain((BSTR)domain)) | 317 if (settings->IsWhiteListedDomain((BSTR)domain)) |
| 318 { | 318 { |
| 319 settings->AddWhiteListedDomain((BSTR)domain); | 319 settings->AddWhiteListedDomain((BSTR)domain); |
| 320 CPluginClient::GetInstance()->ClearWhiteListCache(); | 320 CPluginClient::GetInstance()->ClearWhiteListCache(); |
| 321 } | 321 } |
| 322 } | 322 } |
| 323 else | 323 else |
| 324 return DISP_E_MEMBERNOTFOUND; | 324 return DISP_E_MEMBERNOTFOUND; |
| 325 | 325 |
| 326 return S_OK; | 326 return S_OK; |
| 327 } | 327 } |
| 328 | 328 |
| OLD | NEW |