| 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,7 +20,7 @@ |
| namespace |
| { |
| - std::wstring CreateDomainWhitelistingFilter(CString domain) |
| + std::wstring CreateDomainWhitelistingFilter(const CString domain) |
| { |
| return L"@@||" + domain + 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 |