#pragma once


// Диалоговое окно CSettingsDlg

class CSettingsDlg : public CDialogEx
{
		DECLARE_DYNAMIC(CSettingsDlg)
		HKEY m_hkeyRegKey;
		CString m_strRegKeyName;

		static const LPCTSTR KEY_USELONGBIN;
		static const LPCTSTR KEY_FRONTANALYSE;
		static const LPCTSTR KEY_FRONTALIASING;
		static const LPCTSTR KEY_FRONTLEVELS;
		static const LPCTSTR KEY_IGNORECRC;
		static const LPCTSTR KEY_WORKLOG;
		static const LPCTSTR KEY_TUNESCATTER;
		static const LPCTSTR KEY_DELTAIMPULSE;
		static const LPCTSTR KEY_SOLIDFILE;
		static const LPCTSTR KEY_VALTRUE;
		static const LPCTSTR KEY_VALFALSE;

	public:
		BOOL bUseLongBinFormat;
		BOOL bFrontAnalyse;
		BOOL bFrontAliasing;
		BOOL bFrontLevels;
		BOOL bIgnoreCRC;
		BOOL bWorkLog;
		BOOL bSolidFile;
		int nTuneImpScatter;    // разброс длительностей импульсов настроечной последовательности в сэмплах
		int nProgressScale;     // шаг, через сколько обновлять значение прогрессбара
		int nTimerValue;        // через сколько миллисекунд обновлять UI
		double dDeltaImp;
	protected:
		CString m_strDeltaImp;

	public:
		CSettingsDlg(CWnd *pParent = nullptr);   // стандартный конструктор
		virtual ~CSettingsDlg() override;

// Данные диалогового окна
#ifdef AFX_DESIGN_TIME
		enum { IDD = IDD_SETTINGS_DIALOG };
#endif
		void ConfigSettings();
		void LoadSettings();
		void SaveSettings();

	protected:
		void        SetCheckbox();

		void Init();
		void Done();
		bool SaveStringValue(LPCTSTR sName, CString &strValue);
		bool LoadStringValue(LPCTSTR sName, CString &strValue);

		virtual void DoDataExchange(CDataExchange *pDX) override;    // поддержка DDX/DDV
		virtual BOOL OnInitDialog() override;
		virtual void OnOK() override;

		afx_msg void OnBnClickedCheckFrontAnalyse();
		DECLARE_MESSAGE_MAP()
};

extern CSettingsDlg g_Settings;

