Index: src/plugin/PluginSettings.cpp |
=================================================================== |
--- a/src/plugin/PluginSettings.cpp |
+++ b/src/plugin/PluginSettings.cpp |
@@ -2,17 +2,13 @@ |
#include <Wbemidl.h> |
#include <time.h> |
-#include "PluginIniFileW.h" |
-#include "PluginIniFile.h" |
#include "PluginSettings.h" |
#include "PluginClient.h" |
-#include "PluginChecksum.h" |
#include "PluginSystem.h" |
#ifdef SUPPORT_FILTER |
#include "PluginFilter.h" |
#endif |
#include "PluginMutex.h" |
-#include "PluginHttpRequest.h" |
#include "../shared/Utils.h" |
#include <memory> |
@@ -24,9 +20,9 @@ |
namespace |
{ |
- std::wstring CreateDomainWhitelistingFilter(CString domain) |
+ std::wstring CreateDomainWhitelistingFilter(const CString domain) |
{ |
- return L"@@||" + domain + L"^$document"; |
+ return std::wstring(L"@@||") + domain.GetString() + std::wstring(L"^$document"); |
} |
} |
@@ -66,89 +62,19 @@ |
#endif |
CPluginSettings* CPluginSettings::s_instance = NULL; |
-bool CPluginSettings::s_isLightOnly = false; |
CComAutoCriticalSection CPluginSettings::s_criticalSectionLocal; |
-#ifdef SUPPORT_WHITELIST |
-CComAutoCriticalSection CPluginSettings::s_criticalSectionDomainHistory; |
-#endif |
-CPluginSettings::CPluginSettings() : |
- m_settingsVersion("1"), m_isDirty(false), m_isFirstRun(false), m_isFirstRunUpdate(false), m_dwMainProcessId(0), m_dwMainThreadId(0), m_dwWorkingThreadId(0), |
- m_isDirtyTab(false), m_isPluginEnabledTab(true), m_tabNumber("1") |
+CPluginSettings::CPluginSettings() : m_dwWorkingThreadId(0), m_isPluginEnabledTab(true) |
{ |
- |
- CPluginSettings *lightInstance = s_instance; |
s_instance = NULL; |
- m_settingsFile = std::auto_ptr<CPluginIniFileW>(new CPluginIniFileW(GetDataPath(SETTINGS_INI_FILE), false)); |
- m_settingsFileTab = std::auto_ptr<CPluginIniFileW>(new CPluginIniFileW(GetDataPath(SETTINGS_INI_FILE_TAB), true)); |
- |
m_WindowsBuildNumber = 0; |
- Clear(); |
- ClearTab(); |
#ifdef SUPPORT_WHITELIST |
ClearWhitelist(); |
#endif |
- |
- // Check existence of settings file |
- bool isFileExisting = false; |
- { |
- CPluginSettingsLock lock; |
- if (lock.IsLocked()) |
- { |
- std::ifstream is; |
- is.open(GetDataPath(SETTINGS_INI_FILE), std::ios_base::in); |
- if (!is.is_open()) |
- { |
- TCHAR pf[MAX_PATH]; |
- SHGetSpecialFolderPath( |
- 0, |
- pf, |
- CSIDL_PROGRAM_FILESX86, |
- FALSE ); |
- is.open(GetDataPath(SETTINGS_INI_FILE), std::ios_base::in); |
- if (!is.is_open()) |
- { |
- m_isDirty = true; |
- } |
- else |
- { |
- is.close(); |
- isFileExisting = true; |
- |
- } |
- |
- } |
- else |
- { |
- is.close(); |
- |
- isFileExisting = true; |
- } |
- } |
- } |
- |
- // Read or convert file |
- if (isFileExisting) |
- { |
- Read(false); |
- } |
- else |
- { |
- m_isDirty = true; |
- } |
- |
- if (s_isLightOnly) |
- { |
- this->SetMainProcessId(lightInstance->m_dwMainProcessId); |
- this->SetMainThreadId(lightInstance->m_dwMainThreadId); |
- this->SetMainUiThreadId(lightInstance->m_dwMainUiThreadId); |
- this->SetWorkingThreadId(lightInstance->m_dwWorkingThreadId); |
- } |
- Write(); |
} |
@@ -164,14 +90,13 @@ |
s_criticalSectionLocal.Lock(); |
{ |
- if ((!s_instance) || (s_isLightOnly)) |
+ if (!s_instance) |
{ |
s_instance = new CPluginSettings(); |
#ifdef USE_CONSOLE |
CONSOLE("Fetching Available Subscription\n"); |
#endif |
CPluginSettings::GetInstance()->m_subscriptions = CPluginClient::GetInstance()->FetchAvailableSubscriptions(); |
- s_isLightOnly = false; |
} |
instance = s_instance; |
@@ -196,76 +121,6 @@ |
} |
-bool CPluginSettings::Read(bool bDebug) |
-{ |
- bool isRead = true; |
- |
- DEBUG_SETTINGS(L"Settings::Read") |
- { |
- if (bDebug) |
- { |
- DEBUG_GENERAL(L"*** Loading settings:" + m_settingsFile->GetFilePath()); |
- } |
- |
- CPluginSettingsLock lock; |
- if (lock.IsLocked()) |
- { |
- isRead = m_settingsFile->Read(); |
- if (isRead) |
- { |
- if (m_settingsFile->IsValidChecksum()) |
- { |
- m_properties = m_settingsFile->GetSectionData("Settings"); |
- } |
- else |
- { |
- DEBUG_SETTINGS("Settings:Invalid checksum - Deleting file") |
- |
- Clear(); |
- |
- DEBUG_ERROR_LOG(m_settingsFile->GetLastError(), PLUGIN_ERROR_SETTINGS, PLUGIN_ERROR_SETTINGS_FILE_READ_CHECKSUM, "Settings::Read - Checksum") |
- isRead = false; |
- m_isDirty = true; |
- } |
- } |
- else if (m_settingsFile->GetLastError() == ERROR_FILE_NOT_FOUND) |
- { |
- DEBUG_ERROR_LOG(m_settingsFile->GetLastError(), PLUGIN_ERROR_SETTINGS, PLUGIN_ERROR_SETTINGS_FILE_READ, "Settings::Read") |
- m_isDirty = true; |
- } |
- else |
- { |
- DEBUG_ERROR_LOG(m_settingsFile->GetLastError(), PLUGIN_ERROR_SETTINGS, PLUGIN_ERROR_SETTINGS_FILE_READ, "Settings::Read") |
- } |
- } |
- else |
- { |
- isRead = false; |
- } |
- } |
- |
- // Write file in case it is dirty |
- if (isRead) |
- { |
- isRead = Write(); |
- } |
- |
- return isRead; |
-} |
- |
- |
-void CPluginSettings::Clear() |
-{ |
- // Default settings |
- s_criticalSectionLocal.Lock(); |
- { |
- m_properties.clear(); |
- |
- m_properties[SETTING_PLUGIN_VERSION] = IEPLUGIN_VERSION; |
- m_properties[SETTING_LANGUAGE] = "en"; |
- } |
- s_criticalSectionLocal.Unlock(); |
-} |
CString CPluginSettings::GetDataPath(const CString& filename) |
{ |
@@ -295,220 +150,6 @@ |
} |
-CString CPluginSettings::GetTempPath(const CString& filename) |
-{ |
- CString tempPath; |
- |
- LPWSTR pwszCacheDir = NULL; |
- |
- HRESULT hr = ::IEGetWriteableFolderPath(FOLDERID_InternetCache, &pwszCacheDir); |
- if (SUCCEEDED(hr)) |
- { |
- tempPath = pwszCacheDir; |
- } |
- // Not implemented in IE6 |
- else if (hr == E_NOTIMPL) |
- { |
- TCHAR path[MAX_PATH] = _T(""); |
- |
- if (::SHGetSpecialFolderPath(NULL, path, CSIDL_INTERNET_CACHE, TRUE)) |
- { |
- tempPath = path; |
- } |
- else |
- { |
- DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_SYSINFO, PLUGIN_ERROR_SYSINFO_GET_SPECIAL_FOLDER_TEMP, "Settings::GetTempPath failed"); |
- } |
- } |
- // Other error |
- else |
- { |
- DEBUG_ERROR_LOG(hr, PLUGIN_ERROR_SYSINFO, PLUGIN_ERROR_SYSINFO_TEMP_PATH, "Settings::GetTempPath failed"); |
- } |
- |
- ::CoTaskMemFree(pwszCacheDir); |
- |
- return tempPath + "\\" + filename; |
-} |
- |
-CString CPluginSettings::GetTempFile(const CString& prefix, const CString& extension) |
-{ |
- TCHAR nameBuffer[MAX_PATH] = _T(""); |
- |
- CString tempPath; |
- |
- DWORD dwRetVal = ::GetTempFileName(GetTempPath(), prefix, 0, nameBuffer); |
- if (dwRetVal == 0) |
- { |
- DEBUG_ERROR_LOG(::GetLastError(), PLUGIN_ERROR_SYSINFO, PLUGIN_ERROR_SYSINFO_TEMP_FILE, "Settings::GetTempFileName failed"); |
- |
- tempPath = GetDataPath(); |
- } |
- else |
- { |
- tempPath = nameBuffer; |
- if (!extension.IsEmpty()) |
- { |
- int pos = tempPath.ReverseFind(_T('.')); |
- if (pos >= 0) |
- { |
- tempPath = tempPath.Left(pos+1) + extension; |
- } |
- } |
- } |
- |
- return tempPath; |
-} |
- |
- |
-bool CPluginSettings::Has(const CString& key) const |
-{ |
- bool hasKey; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- hasKey = m_properties.find(key) != m_properties.end(); |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- return hasKey; |
-} |
- |
- |
-void CPluginSettings::Remove(const CString& key) |
-{ |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::iterator it = m_properties.find(key); |
- if (it != m_properties.end()) |
- { |
- m_properties.erase(it); |
- m_isDirty = true; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
-} |
- |
- |
-CString CPluginSettings::GetString(const CString& key, const CString& defaultValue) const |
-{ |
- CString val = defaultValue; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::const_iterator it = m_properties.find(key); |
- if (it != m_properties.end()) |
- { |
- val = it->second; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- DEBUG_SETTINGS("Settings::GetString key:" + key + " value:" + val) |
- |
- return val; |
-} |
- |
- |
-void CPluginSettings::SetString(const CString& key, const CString& value) |
-{ |
- if (value.IsEmpty()) return; |
- |
- DEBUG_SETTINGS("Settings::SetString key:" + key + " value:" + value) |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::iterator it = m_properties.find(key); |
- if (it != m_properties.end() && it->second != value) |
- { |
- it->second = value; |
- m_isDirty = true; |
- } |
- else if (it == m_properties.end()) |
- { |
- m_properties[key] = value; |
- m_isDirty = true; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
-} |
- |
- |
-int CPluginSettings::GetValue(const CString& key, int defaultValue) const |
-{ |
- int val = defaultValue; |
- |
- CString sValue; |
- sValue.Format(L"%d", defaultValue); |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::const_iterator it = m_properties.find(key); |
- if (it != m_properties.end()) |
- { |
- sValue = it->second; |
- val = _wtoi(it->second); |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- DEBUG_SETTINGS("Settings::GetValue key:" + key + " value:" + sValue) |
- |
- return val; |
-} |
- |
- |
-void CPluginSettings::SetValue(const CString& key, int value) |
-{ |
- CString sValue; |
- sValue.Format(L"%d", value); |
- |
- DEBUG_SETTINGS("Settings::SetValue key:" + key + " value:" + sValue) |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::iterator it = m_properties.find(key); |
- if (it != m_properties.end() && it->second != sValue) |
- { |
- it->second = sValue; |
- m_isDirty = true; |
- } |
- else if (it == m_properties.end()) |
- { |
- m_properties[key] = sValue; |
- m_isDirty = true; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
-} |
- |
- |
-bool CPluginSettings::GetBool(const CString& key, bool defaultValue) const |
-{ |
- bool value = defaultValue; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::const_iterator it = m_properties.find(key); |
- if (it != m_properties.end()) |
- { |
- if (it->second == "true") value = true; |
- if (it->second == "false") value = false; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- DEBUG_SETTINGS("Settings::GetBool key:" + key + " value:" + (value ? "true":"false")) |
- |
- return value; |
-} |
- |
- |
-void CPluginSettings::SetBool(const CString& key, bool value) |
-{ |
- SetString(key, value ? "true":"false"); |
-} |
- |
bool CPluginSettings::IsPluginEnabled() const |
{ |
@@ -527,117 +168,6 @@ |
return filterList; |
} |
- |
-bool CPluginSettings::Write(bool isDebug) |
-{ |
- bool isWritten = true; |
- |
- if (!m_isDirty) |
- { |
- return isWritten; |
- } |
- |
- if (isDebug) |
- { |
- DEBUG_GENERAL(L"*** Writing changed settings") |
- } |
- |
- CPluginSettingsLock lock; |
- if (lock.IsLocked()) |
- { |
- m_settingsFile->Clear(); |
- |
- // Properties |
- CPluginIniFileW::TSectionData settings; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- for (TProperties::iterator it = m_properties.begin(); it != m_properties.end(); ++it) |
- { |
- settings[it->first] = it->second; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- m_settingsFile->UpdateSection("Settings", settings); |
- |
- // Write file |
- isWritten = m_settingsFile->Write(); |
- if (!isWritten) |
- { |
- DEBUG_ERROR_LOG(m_settingsFile->GetLastError(), PLUGIN_ERROR_SETTINGS, PLUGIN_ERROR_SETTINGS_FILE_WRITE, "Settings::Write") |
- } |
- |
- m_isDirty = false; |
- |
- IncrementTabVersion(SETTING_TAB_SETTINGS_VERSION); |
- } |
- else |
- { |
- isWritten = false; |
- } |
- |
- return isWritten; |
-} |
- |
- |
-bool CPluginSettings::IsMainProcess(DWORD dwProcessId) const |
-{ |
- if (dwProcessId == 0) |
- { |
- dwProcessId = ::GetCurrentProcessId(); |
- } |
- return m_dwMainProcessId == dwProcessId; |
-} |
- |
-void CPluginSettings::SetMainProcessId() |
-{ |
- m_dwMainProcessId = ::GetCurrentProcessId(); |
-} |
- |
-void CPluginSettings::SetMainProcessId(DWORD id) |
-{ |
- m_dwMainProcessId = id; |
-} |
- |
- |
-bool CPluginSettings::IsMainUiThread(DWORD dwThreadId) const |
-{ |
- if (dwThreadId == 0) |
- { |
- dwThreadId = ::GetCurrentThreadId(); |
- } |
- return m_dwMainUiThreadId == dwThreadId; |
-} |
- |
-void CPluginSettings::SetMainUiThreadId() |
-{ |
- m_dwMainUiThreadId = ::GetCurrentThreadId(); |
-} |
- |
-void CPluginSettings::SetMainUiThreadId(DWORD id) |
-{ |
- m_dwMainUiThreadId = id; |
-} |
-bool CPluginSettings::IsMainThread(DWORD dwThreadId) const |
-{ |
- if (dwThreadId == 0) |
- { |
- dwThreadId = ::GetCurrentThreadId(); |
- } |
- return m_dwMainThreadId == dwThreadId; |
-} |
- |
-void CPluginSettings::SetMainThreadId() |
-{ |
- m_dwMainThreadId = ::GetCurrentThreadId(); |
-} |
- |
-void CPluginSettings::SetMainThreadId(DWORD id) |
-{ |
- m_dwMainThreadId = id; |
-} |
- |
bool CPluginSettings::IsWorkingThread(DWORD dwThreadId) const |
{ |
if (dwThreadId == 0) |
@@ -667,311 +197,18 @@ |
return m_isFirstRun; |
} |
-void CPluginSettings::SetFirstRunUpdate() |
-{ |
- m_isFirstRunUpdate = true; |
-} |
- |
-bool CPluginSettings::IsFirstRunUpdate() const |
-{ |
- return m_isFirstRunUpdate; |
-} |
- |
-bool CPluginSettings::IsFirstRunAny() const |
-{ |
- return m_isFirstRun || m_isFirstRunUpdate; |
-} |
- |
-// ============================================================================ |
-// Tab settings |
-// ============================================================================ |
- |
-void CPluginSettings::ClearTab() |
-{ |
- s_criticalSectionLocal.Lock(); |
- { |
- m_isPluginEnabledTab = true; |
- |
- m_errorsTab.clear(); |
- |
- m_propertiesTab.clear(); |
- |
- m_propertiesTab[SETTING_TAB_PLUGIN_ENABLED] = "true"; |
- } |
- s_criticalSectionLocal.Unlock(); |
-} |
- |
- |
-bool CPluginSettings::ReadTab(bool bDebug) |
-{ |
- bool isRead = true; |
- |
- DEBUG_SETTINGS(L"SettingsTab::Read tab") |
- |
- if (bDebug) |
- { |
- DEBUG_GENERAL(L"*** Loading tab settings:" + m_settingsFileTab->GetFilePath()); |
- } |
- |
- isRead = m_settingsFileTab->Read(); |
- if (isRead) |
- { |
- ClearTab(); |
- |
- if (m_settingsFileTab->IsValidChecksum()) |
- { |
- s_criticalSectionLocal.Lock(); |
- { |
- m_propertiesTab = m_settingsFileTab->GetSectionData("Settings"); |
- |
- m_errorsTab = m_settingsFileTab->GetSectionData("Errors"); |
- |
- TProperties::iterator it = m_propertiesTab.find(SETTING_TAB_PLUGIN_ENABLED); |
- if (it != m_propertiesTab.end()) |
- { |
- m_isPluginEnabledTab = it->second != "false"; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- } |
- else |
- { |
- DEBUG_SETTINGS("SettingsTab:Invalid checksum - Deleting file") |
- |
- DEBUG_ERROR_LOG(m_settingsFileTab->GetLastError(), PLUGIN_ERROR_SETTINGS_TAB, PLUGIN_ERROR_SETTINGS_FILE_READ_CHECKSUM, "SettingsTab::Read - Checksum") |
- isRead = false; |
- m_isDirtyTab = true; |
- } |
- } |
- else if (m_settingsFileTab->GetLastError() == ERROR_FILE_NOT_FOUND) |
- { |
- m_isDirtyTab = true; |
- } |
- else |
- { |
- DEBUG_ERROR_LOG(m_settingsFileTab->GetLastError(), PLUGIN_ERROR_SETTINGS_TAB, PLUGIN_ERROR_SETTINGS_FILE_READ, "SettingsTab::Read") |
- } |
- |
- |
- // Write file in case it is dirty or does not exist |
- WriteTab(); |
- |
- return isRead; |
-} |
- |
-bool CPluginSettings::WriteTab(bool isDebug) |
-{ |
- bool isWritten = true; |
- |
- if (!m_isDirtyTab) |
- { |
- return isWritten; |
- } |
- |
- if (isDebug) |
- { |
- DEBUG_GENERAL(L"*** Writing changed tab settings") |
- } |
- |
- m_settingsFileTab->Clear(); |
- |
- // Properties & errors |
- CPluginIniFileW::TSectionData settings; |
- CPluginIniFileW::TSectionData errors; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- for (TProperties::iterator it = m_propertiesTab.begin(); it != m_propertiesTab.end(); ++it) |
- { |
- settings[it->first] = it->second; |
- } |
- |
- for (TProperties::iterator it = m_errorsTab.begin(); it != m_errorsTab.end(); ++it) |
- { |
- errors[it->first] = it->second; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- m_settingsFileTab->UpdateSection("Settings", settings); |
- m_settingsFileTab->UpdateSection("Errors", errors); |
- |
- // Write file |
- isWritten = m_settingsFileTab->Write(); |
- if (!isWritten) |
- { |
- DEBUG_ERROR_LOG(m_settingsFileTab->GetLastError(), PLUGIN_ERROR_SETTINGS_TAB, PLUGIN_ERROR_SETTINGS_FILE_WRITE, "SettingsTab::Write") |
- } |
- |
- m_isDirtyTab = !isWritten; |
- |
- return isWritten; |
-} |
- |
- |
-void CPluginSettings::EraseTab() |
-{ |
- ClearTab(); |
- |
- m_isDirtyTab = true; |
- |
- WriteTab(); |
-} |
- |
- |
-bool CPluginSettings::IncrementTabCount() |
-{ |
- int tabCount = 1; |
- |
- |
- if (s_isLightOnly) |
- { |
- return false; |
- } |
- |
- CPluginSettingsTabLock lock; |
- if (lock.IsLocked()) |
- { |
- SYSTEMTIME systemTime; |
- ::GetSystemTime(&systemTime); |
- |
- CString today; |
- today.Format(L"%d-%d-%d", systemTime.wYear, systemTime.wMonth, systemTime.wDay); |
- |
- ReadTab(false); |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::iterator it = m_propertiesTab.find(SETTING_TAB_COUNT); |
- if (it != m_propertiesTab.end()) |
- { |
- tabCount = _wtoi(it->second) + 1; |
- } |
- |
- it = m_propertiesTab.find(SETTING_TAB_START_TIME); |
- |
- //Is this a first IE instance? |
- HWND ieWnd = FindWindow(L"IEFrame", NULL); |
- if (ieWnd != NULL) |
- { |
- ieWnd = FindWindowEx(NULL, ieWnd, L"IEFrame", NULL); |
- |
- } |
- if ((it != m_propertiesTab.end() && it->second != today)) |
- { |
- tabCount = 1; |
- } |
- m_tabNumber.Format(L"%d", tabCount); |
- |
- m_propertiesTab[SETTING_TAB_COUNT] = m_tabNumber; |
- m_propertiesTab[SETTING_TAB_START_TIME] = today; |
- |
- // Main tab? |
- if (tabCount == 1) |
- { |
- m_propertiesTab[SETTING_TAB_DICTIONARY_VERSION] = "1"; |
- m_propertiesTab[SETTING_TAB_SETTINGS_VERSION] = "1"; |
-#ifdef SUPPORT_WHITELIST |
- m_propertiesTab[SETTING_TAB_WHITELIST_VERSION] = "1"; |
-#endif |
-#ifdef SUPPORT_FILTER |
- m_propertiesTab[SETTING_TAB_FILTER_VERSION] = "1"; |
-#endif |
-#ifdef SUPPORT_CONFIG |
- m_propertiesTab[SETTING_TAB_CONFIG_VERSION] = "1"; |
-#endif |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- m_isDirtyTab = true; |
- |
- WriteTab(false); |
- } |
- |
- return tabCount == 1; |
-} |
- |
- |
-CString CPluginSettings::GetTabNumber() const |
-{ |
- CString tabNumber; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- tabNumber = m_tabNumber; |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- return tabNumber; |
-} |
- |
- |
-bool CPluginSettings::DecrementTabCount() |
-{ |
- int tabCount = 0; |
- |
- CPluginSettingsTabLock lock; |
- if (lock.IsLocked()) |
- { |
- ReadTab(false); |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::iterator it = m_propertiesTab.find(SETTING_TAB_COUNT); |
- if (it != m_propertiesTab.end()) |
- { |
- tabCount = max(_wtoi(it->second) - 1, 0); |
- |
- if (tabCount > 0) |
- { |
- m_tabNumber.Format(L"%d", tabCount); |
- |
- m_propertiesTab[SETTING_TAB_COUNT] = m_tabNumber; |
- } |
- else |
- { |
- it = m_propertiesTab.find(SETTING_TAB_START_TIME); |
- if (it != m_propertiesTab.end()) |
- { |
- m_propertiesTab.erase(it); |
- } |
- |
- it = m_propertiesTab.find(SETTING_TAB_COUNT); |
- if (it != m_propertiesTab.end()) |
- { |
- m_propertiesTab.erase(it); |
- } |
- } |
- |
- m_isDirtyTab = true; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- WriteTab(false); |
- } |
- |
- return tabCount == 0; |
-} |
- |
- |
void CPluginSettings::TogglePluginEnabled() |
{ |
CPluginSettingsTabLock lock; |
if (lock.IsLocked()) |
{ |
- ReadTab(false); |
- |
s_criticalSectionLocal.Lock(); |
{ |
+ //TODO: Query if plugin is enabled from the AdblockPlusEngine |
m_isPluginEnabledTab = m_isPluginEnabledTab ? false : true; |
- m_propertiesTab[SETTING_TAB_PLUGIN_ENABLED] = m_isPluginEnabledTab ? "true" : "false"; |
- m_isDirtyTab = true; |
+ //TODO: Set plugin enabled/disabled in AdblockPlusEngine |
} |
s_criticalSectionLocal.Unlock(); |
- |
- WriteTab(false); |
} |
} |
void CPluginSettings::SetPluginDisabled() |
@@ -979,17 +216,12 @@ |
CPluginSettingsTabLock lock; |
if (lock.IsLocked()) |
{ |
- ReadTab(false); |
- |
s_criticalSectionLocal.Lock(); |
{ |
m_isPluginEnabledTab = false; |
- m_propertiesTab[SETTING_TAB_PLUGIN_ENABLED] = "false"; |
- m_isDirtyTab = true; |
+ //TODO: Set plugin disabled in AdblockPlusEngine |
} |
s_criticalSectionLocal.Unlock(); |
- |
- WriteTab(false); |
} |
} |
void CPluginSettings::SetPluginEnabled() |
@@ -997,235 +229,34 @@ |
CPluginSettingsTabLock lock; |
if (lock.IsLocked()) |
{ |
- ReadTab(false); |
- |
s_criticalSectionLocal.Lock(); |
{ |
m_isPluginEnabledTab = true; |
- m_propertiesTab[SETTING_TAB_PLUGIN_ENABLED] = "true"; |
- m_isDirtyTab = true; |
+ //TODO: Set plugin enabled in AdblockPlusEngine |
} |
s_criticalSectionLocal.Unlock(); |
- |
- WriteTab(false); |
} |
} |
bool CPluginSettings::GetPluginEnabled() const |
{ |
+ //TODO: Query AdblockPlusEngine |
return m_isPluginEnabledTab; |
} |
+bool CPluginSettings::GetStatusBarAsked() |
+{ |
+ return CPluginClient::GetInstance()->GetPref(L"statusbarasked", false); |
+} |
+ |
+void CPluginSettings::SetStatusBarAsked() |
+{ |
+ CPluginClient::GetInstance()->SetPref(L"statusbarasked", true); |
+} |
+ |
void CPluginSettings::AddError(const CString& error, const CString& errorCode) |
{ |
DEBUG_SETTINGS(L"SettingsTab::AddError error:" + error + " code:" + errorCode) |
- |
- CPluginSettingsTabLock lock; |
- if (lock.IsLocked()) |
- { |
- ReadTab(false); |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- if (m_errorsTab.find(error) == m_errorsTab.end()) |
- { |
- m_errorsTab[error] = errorCode; |
- m_isDirtyTab = true; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- WriteTab(false); |
- } |
-} |
- |
- |
-CString CPluginSettings::GetErrorList() const |
-{ |
- CString errors; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- for (TProperties::const_iterator it = m_errorsTab.begin(); it != m_errorsTab.end(); ++it) |
- { |
- if (!errors.IsEmpty()) |
- { |
- errors += ','; |
- } |
- |
- errors += it->first + '.' + it->second; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- return errors; |
-} |
- |
- |
-void CPluginSettings::RemoveErrors() |
-{ |
- CPluginSettingsTabLock lock; |
- if (lock.IsLocked()) |
- { |
- ReadTab(false); |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- if (m_errorsTab.size() > 0) |
- { |
- m_isDirtyTab = true; |
- } |
- m_errorsTab.clear(); |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- WriteTab(false); |
- } |
-} |
- |
- |
-bool CPluginSettings::GetForceConfigurationUpdateOnStart() const |
-{ |
- bool isUpdating = false; |
- |
- CPluginSettingsTabLock lock; |
- if (lock.IsLocked()) |
- { |
- s_criticalSectionLocal.Lock(); |
- { |
- isUpdating = m_propertiesTab.find(SETTING_TAB_UPDATE_ON_START) != m_propertiesTab.end(); |
- } |
- s_criticalSectionLocal.Unlock(); |
- } |
- |
- return isUpdating; |
-} |
- |
- |
-void CPluginSettings::ForceConfigurationUpdateOnStart(bool isUpdating) |
-{ |
- CPluginSettingsTabLock lock; |
- if (lock.IsLocked()) |
- { |
- ReadTab(false); |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::iterator it = m_propertiesTab.find(SETTING_TAB_UPDATE_ON_START); |
- |
- if (isUpdating && it == m_propertiesTab.end()) |
- { |
- m_propertiesTab[SETTING_TAB_UPDATE_ON_START] = "true"; |
- m_propertiesTab[SETTING_TAB_UPDATE_ON_START_REMOVE] = "false"; |
- |
- m_isDirtyTab = true; |
- } |
- else if (!isUpdating) |
- { |
- // OK to remove? |
- TProperties::iterator itRemove = m_propertiesTab.find(SETTING_TAB_UPDATE_ON_START_REMOVE); |
- |
- if (itRemove == m_propertiesTab.end() || itRemove->second == "true") |
- { |
- if (it != m_propertiesTab.end()) |
- { |
- m_propertiesTab.erase(it); |
- } |
- |
- if (itRemove != m_propertiesTab.end()) |
- { |
- m_propertiesTab.erase(itRemove); |
- } |
- |
- m_isDirtyTab = true; |
- } |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- WriteTab(false); |
- } |
-} |
- |
-void CPluginSettings::RemoveForceConfigurationUpdateOnStart() |
-{ |
- CPluginSettingsTabLock lock; |
- if (lock.IsLocked()) |
- { |
- ReadTab(false); |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- // OK to remove? |
- TProperties::iterator itRemove = m_propertiesTab.find(SETTING_TAB_UPDATE_ON_START_REMOVE); |
- |
- if (itRemove != m_propertiesTab.end()) |
- { |
- m_propertiesTab.erase(itRemove); |
- m_isDirtyTab = true; |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- WriteTab(false); |
- } |
-} |
- |
-void CPluginSettings::RefreshTab() |
-{ |
- CPluginSettingsTabLock lock; |
- if (lock.IsLocked()) |
- { |
- ReadTab(); |
- } |
-} |
- |
- |
-int CPluginSettings::GetTabVersion(const CString& key) const |
-{ |
- int version = 0; |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- TProperties::const_iterator it = m_propertiesTab.find(key); |
- if (it != m_propertiesTab.end()) |
- { |
- version = _wtoi(it->second); |
- } |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- return version; |
-} |
- |
-void CPluginSettings::IncrementTabVersion(const CString& key) |
-{ |
- CPluginSettingsTabLock lock; |
- if (lock.IsLocked()) |
- { |
- ReadTab(false); |
- |
- s_criticalSectionLocal.Lock(); |
- { |
- int version = 1; |
- |
- TProperties::iterator it = m_propertiesTab.find(key); |
- if (it != m_propertiesTab.end()) |
- { |
- version = _wtoi(it->second) + 1; |
- } |
- |
- CString versionString; |
- versionString.Format(L"%d", version); |
- |
- m_propertiesTab[key] = versionString; |
- } |
- s_criticalSectionLocal.Unlock(); |
- |
- m_isDirtyTab = true; |
- |
- WriteTab(false); |
- } |
} |
@@ -1341,7 +372,6 @@ |
void CPluginSettings::SetSubscription(const std::wstring& url) |
{ |
CPluginClient::GetInstance()->SetSubscription(url); |
- RefreshFilterlist(); |
RefreshWhitelist(); |
} |
@@ -1355,9 +385,5 @@ |
} |
-void CPluginSettings::RefreshFilterlist() |
-{ |
- CPluginClient::GetInstance()->UpdateAllSubscriptions(); |
-} |
#endif // SUPPORT_WHITELIST |