Index: src/ch/OptionsDlg.cpp =================================================================== diff -u -r19b135b50b55b75d008526a799344bda9a62dc22 -r58de8d7360813537b384eff808c031f9e63db4de --- src/ch/OptionsDlg.cpp (.../OptionsDlg.cpp) (revision 19b135b50b55b75d008526a799344bda9a62dc22) +++ src/ch/OptionsDlg.cpp (.../OptionsDlg.cpp) (revision 58de8d7360813537b384eff808c031f9e63db4de) @@ -26,6 +26,7 @@ #include #include "structs.h" #include "CfgProperties.h" +#include "../libchengine/TConfigSerializers.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -40,7 +41,8 @@ COptionsDlg::COptionsDlg(CWnd* pParent /*=nullptr*/) :ictranslate::CLanguageDialog(IDD_OPTIONS_DIALOG, pParent, &m_bLock), - m_spLog(logger::MakeLogger(GetLogFileData(), L"OptionsDlg")) + m_spLog(logger::MakeLogger(GetLogFileData(), L"OptionsDlg")), + m_autoRun(GetApp().GetAppName(), chcore::PathFromString(GetApp().GetFullProgramPath())) { } @@ -104,7 +106,7 @@ m_ctlProperties.Init(); // copy shortcut and recent paths - chcore::TConfig& rConfig = GetConfig(); + chengine::TConfig& rConfig = GetConfig(); m_cvRecent.clear(); GetPropValue(rConfig, m_cvRecent); @@ -132,7 +134,7 @@ { COptionsDlg* pDlg=static_cast(lpParam); - chcore::TBufferSizes tBufferSizes(pDlg->GetBoolProp(iIndex - iParam - 1), + chengine::TBufferSizes tBufferSizes(pDlg->GetBoolProp(iIndex - iParam - 1), pDlg->GetUintProp(iIndex - iParam + 7), pDlg->GetUintProp(iIndex - iParam), pDlg->GetUintProp(iIndex - iParam + 1), @@ -143,7 +145,7 @@ pDlg->GetUintProp(iIndex - iParam + 9), pDlg->GetUintProp(iIndex - iParam + 10)); - CBufferSizeDlg dlg(&tBufferSizes, (chcore::TBufferSizes::EBufferType)iParam); + CBufferSizeDlg dlg(&tBufferSizes, (chengine::TBufferSizes::EBufferType)iParam); if (dlg.DoModal() == IDOK) { tBufferSizes = dlg.GetBufferSizes(); @@ -236,8 +238,9 @@ PROP_SEPARATOR(IDS_PROGRAM_STRING); PROP_BOOL(IDS_CLIPBOARDMONITORING_STRING, GetPropValue(GetConfig())); PROP_UINT(IDS_CLIPBOARDINTERVAL_STRING, GetPropValue(GetConfig())); - PROP_BOOL(IDS_AUTORUNPROGRAM_STRING, GetPropValue(GetConfig())); + PROP_BOOL(IDS_AUTORUNPROGRAM_STRING, IsAutorunEnabled()); + PROP_COMBO(IDS_CFG_CHECK_FOR_UPDATES_FREQUENCY, IDS_UPDATE_FREQUENCIES, GetPropValue(GetConfig())); PROP_COMBO(IDS_CFG_UPDATECHANNEL, IDS_CFGUPDATECHANNELITEMS_STRING, GetPropValue(GetConfig())); PROP_COMBO(IDS_CFG_USE_SECURE_CONNECTION, IDS_SECURE_CONNECTION_TYPES, GetPropValue(GetConfig())); @@ -363,13 +366,13 @@ // counter int iPosition=0; - chcore::TConfig& rConfig = GetConfig(); + chengine::TConfig& rConfig = GetConfig(); rConfig.DelayNotifications(); SKIP_SEPARATOR(iPosition); SetPropValue(rConfig, GetBoolProp(iPosition++)); SetPropValue(rConfig, GetUintProp(iPosition++)); - SetPropValue(rConfig, GetBoolProp(iPosition++)); + EnableAutorun(GetBoolProp(iPosition++)); SetPropValue(rConfig, GetIndexProp(iPosition++)); SetPropValue(rConfig, GetBoolProp(iPosition++)); @@ -532,6 +535,33 @@ return strText; } +bool COptionsDlg::IsAutorunEnabled() const +{ + try + { + return m_autoRun.IsAutorunEnabled(); + } + catch (const std::exception& e) + { + LOG_ERROR(m_spLog) << L"Failed to determine if autorun is enabled. Assuming it is not. Error: " << e.what(); + return false; + } +} + +bool COptionsDlg::EnableAutorun(bool bEnable) +{ + try + { + m_autoRun.SetAutorun(bEnable); + return true; + } + catch (const std::exception& e) + { + LOG_ERROR(m_spLog) << L"Failed to change autorun to '" << bEnable << "'. Error: " << e.what(); + return false; + } +} + bool COptionsDlg::GetBoolProp(int iPosition) { int iSel = 0;