OSDN Git Service

refactor
[winmerge-jp/winmerge-jp.git] / Src / Common / IniOptionsMgr.h
1 /**
2  * @file IniOptionsMgr.h
3  *
4  * @brief Implementation of Ini file Options management class.
5  *
6  */
7 #pragma once
8
9 #include <Windows.h>
10 #include "OptionsMgr.h"
11
12 class COptionsMgr;
13
14 /**
15  * @brief Ini-based implementation of OptionsMgr interface (q.v.).
16  */
17 class CIniOptionsMgr : public COptionsMgr
18 {
19 public:
20         CIniOptionsMgr();
21         virtual ~CIniOptionsMgr();
22
23         static bool CheckIfIniFileExist();
24
25         static LPCWSTR GetFilePath();
26
27         virtual int InitOption(const String& name, const varprop::VariantValue& defaultValue) override;
28         virtual int InitOption(const String& name, const String& defaultValue) override;
29         virtual int InitOption(const String& name, const TCHAR* defaultValue) override;
30         virtual int InitOption(const String& name, int defaultValue, bool serializable = true) override;
31         virtual int InitOption(const String& name, bool defaultValue) override;
32
33         virtual int SaveOption(const String& name) override;
34         virtual int SaveOption(const String& name, const varprop::VariantValue& value) override;
35         virtual int SaveOption(const String& name, const String& value) override;
36         virtual int SaveOption(const String& name, const TCHAR* value) override;
37         virtual int SaveOption(const String& name, int value) override;
38         virtual int SaveOption(const String& name, bool value) override;
39
40         virtual int RemoveOption(const String& name) override;
41
42         virtual void SetSerializing(bool serializing = true) override { m_serializing = serializing; }
43
44 private:
45         CRITICAL_SECTION m_cs;
46         bool m_serializing;
47         static LPCWSTR lpFilePath;
48
49         String ReadValueFromFile(const String& name);
50         int ParseValue(const String& strName, String& textValue, varprop::VariantValue& value);
51
52         void SplitName(const String& strName, String& strPath, String& strValue) const;
53 };