Index: src/plugin/PluginClass.cpp |
=================================================================== |
--- a/src/plugin/PluginClass.cpp |
+++ b/src/plugin/PluginClass.cpp |
@@ -1229,9 +1229,6 @@ |
CPluginSystem* system = CPluginSystem::GetInstance(); |
- CString url; |
- int navigationErrorId = 0; |
- |
// Create menu parent window |
HWND hMenuWnd = ::CreateWindowEx( |
NULL, |
@@ -1260,7 +1257,7 @@ |
switch (nCommand) |
{ |
- case ID_PLUGIN_ENABLE: |
+ case ID_MENU_DISABLE: |
{ |
CPluginSettings* settings = CPluginSettings::GetInstance(); |
@@ -1283,32 +1280,50 @@ |
s_criticalSectionLocal.Unlock(); |
} |
break; |
+ case ID_MENU_SETTINGS: |
+ { |
+ CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); |
+ if (browser) |
+ { |
+ VARIANT vFlags; |
+ vFlags.vt = VT_I4; |
+ vFlags.intVal = navOpenInNewTab; |
+ |
+ BSTR urlToNavigate = BString(UserSettingsFileUrl()); |
+ HRESULT hr = browser->Navigate(urlToNavigate, &vFlags, NULL, NULL, NULL); |
+ if (FAILED(hr)) |
+ { |
+ vFlags.intVal = navOpenInNewWindow; |
+ |
+ hr = browser->Navigate(urlToNavigate, &vFlags, NULL, NULL, NULL); |
+ if (FAILED(hr)) |
+ { |
+ DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_SETTINGS, "Navigation::Failed") |
+ } |
+ } |
+ } |
+ break; |
+ } |
+ case ID_MENU_DISABLE_ON_SITE: |
+ { |
+ CPluginSettings* settings = CPluginSettings::GetInstance(); |
+ CString urlString = GetTab()->GetDocumentUrl(); |
+ if (client->IsWhitelistedUrl(std::wstring(urlString))) |
+ { |
+ settings->RemoveWhiteListedDomain(ExtractDomain(urlString)); |
+ } |
+ else |
+ { |
+ settings->AddWhiteListedDomain(ExtractDomain(urlString)); |
+ } |
+ GetBrowser()->Refresh(); |
+ } |
default: |
break; |
} |
// Invalidate and redraw the control |
UpdateStatusBar(); |
- |
- CComQIPtr<IWebBrowser2> browser = GetBrowser(); |
- if (!url.IsEmpty() && browser) |
- { |
- VARIANT vFlags; |
- vFlags.vt = VT_I4; |
- vFlags.intVal = navOpenInNewTab; |
- |
- HRESULT hr = browser->Navigate(CComBSTR(url), &vFlags, NULL, NULL, NULL); |
- if (FAILED(hr)) |
- { |
- vFlags.intVal = navOpenInNewWindow; |
- |
- hr = browser->Navigate(CComBSTR(url), &vFlags, NULL, NULL, NULL); |
- if (FAILED(hr)) |
- { |
- DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, navigationErrorId, "Navigation::Failed") |
- } |
- } |
- } |
} |
@@ -1348,45 +1363,51 @@ |
#ifdef SUPPORT_WHITELIST |
{ |
- // White list domain |
- ctext = dictionary->Lookup("menu", "disable-on-site"); |
+ ctext = dictionary->Lookup("menu", "menu-disable-on-site"); |
+ // Is domain in white list? |
+ ReplaceString(ctext, L"?1?", ExtractDomain(url).GetString()); |
+ if (client->IsWhitelistedUrl(std::wstring(GetTab()->GetDocumentUrl()))) |
+ { |
+ fmii.fState = MFS_CHECKED | MFS_ENABLED; |
+ } |
+ else |
+ { |
+ fmii.fState = MFS_UNCHECKED | MFS_ENABLED; |
+ } |
fmii.fMask = MIIM_STRING | MIIM_STATE; |
- fmii.fState = MFS_DISABLED; |
fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |
fmii.cch = ctext.size(); |
- UINT index = WM_WHITELIST_DOMAIN; |
- |
- ::SetMenuItemInfoW(hMenu, ID_WHITELISTDOMAIN, FALSE, &fmii); |
+ ::SetMenuItemInfoW(hMenu, ID_MENU_DISABLE_ON_SITE, FALSE, &fmii); |
} |
#else |
{ |
- ::DeleteMenu(hMenu, ID_WHITELISTDOMAIN, FALSE); |
+ ::DeleteMenu(hMenu, ID_MENU_DISABLE_ON_SITE, FALSE); |
} |
#endif // SUPPORT_WHITELIST |
// Plugin enable |
+ ctext = dictionary->Lookup("menu", "menu-disable"); |
if (settings->GetPluginEnabled()) |
{ |
- ctext = dictionary->Lookup("menu", "disable"); |
+ fmii.fState = MFS_UNCHECKED | MFS_ENABLED; |
} |
else |
{ |
- ctext = dictionary->Lookup("menu", "enable"); |
+ fmii.fState = MFS_CHECKED | MFS_ENABLED; |
} |
fmii.fMask = MIIM_STATE | MIIM_STRING; |
- fmii.fState = client ? MFS_ENABLED : MFS_DISABLED; |
fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |
fmii.cch = ctext.size(); |
- ::SetMenuItemInfoW(hMenu, ID_PLUGIN_ENABLE, FALSE, &fmii); |
+ ::SetMenuItemInfoW(hMenu, ID_MENU_DISABLE, FALSE, &fmii); |
// Settings |
- ctext = dictionary->Lookup("menu", "settings"); |
+ ctext = dictionary->Lookup("menu", "menu-settings"); |
fmii.fMask = MIIM_STATE | MIIM_STRING; |
fmii.fState = MFS_ENABLED; |
fmii.dwTypeData = const_cast<LPWSTR>(ctext.c_str()); |
fmii.cch = ctext.size(); |
- ::SetMenuItemInfoW(hMenu, ID_SETTINGS, FALSE, &fmii); |
+ ::SetMenuItemInfoW(hMenu, ID_MENU_SETTINGS, FALSE, &fmii); |
return true; |
} |
@@ -1578,12 +1599,7 @@ |
#endif // SUPPORT_WHITELIST |
else |
{ |
- //Deativate adblock icon if adblock limit reached |
CPluginSettings* settings = CPluginSettings::GetInstance(); |
- if (!settings->GetPluginEnabled()) { |
- hIcon = GetIcon(ICON_PLUGIN_DEACTIVATED); |
- return hIcon; |
- } |
hIcon = GetIcon(ICON_PLUGIN_ENABLED); |
} |
@@ -1705,7 +1721,6 @@ |
pClass->GetTab()->SetDocumentUrl(strURL); |
} |
-#ifdef SUPPORT_SHOW_PLUGIN_MENU |
// Create menu |
HMENU hMenu = pClass->CreatePluginMenu(strURL); |
if (!hMenu) |
@@ -1727,27 +1742,6 @@ |
} |
pClass->DisplayPluginMenu(hMenu, -1, pt, TPM_LEFTALIGN|TPM_BOTTOMALIGN); |
-#else |
- CComQIPtr<IWebBrowser2> browser = GetAsyncBrowser(); |
- if (browser) |
- { |
- VARIANT vFlags; |
- vFlags.vt = VT_I4; |
- vFlags.intVal = navOpenInNewTab; |
- |
- HRESULT hr = browser->Navigate(BString(UserSettingsFileUrl()), &vFlags, NULL, NULL, NULL); |
- if (FAILED(hr)) |
- { |
- vFlags.intVal = navOpenInNewWindow; |
- |
- hr = browser->Navigate(BString(UserSettingsFileUrl()), &vFlags, NULL, NULL, NULL); |
- if (FAILED(hr)) |
- { |
- DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_NAVIGATION, PLUGIN_ERROR_NAVIGATION_SETTINGS, "Navigation::Failed") |
- } |
- } |
- } |
-#endif |
} |
break; |
case WM_DESTROY: |