2 * @file PropDirColors.cpp
4 * @brief Implementation of PropDirColors propertysheet
8 #include "PropDirColors.h"
9 #include "OptionsCustomColors.h"
10 #include "OptionsDef.h"
11 #include "OptionsMgr.h"
12 #include "OptionsPanel.h"
19 * @brief Default constructor.
21 PropDirColors::PropDirColors(COptionsMgr *optionsMgr)
22 : OptionsPanel(optionsMgr, PropDirColors::IDD)
28 void PropDirColors::DoDataExchange(CDataExchange* pDX)
30 CDialog::DoDataExchange(pDX);
31 //{{AFX_DATA_MAP(PropDirColors)
32 DDX_Check(pDX, IDC_USE_DIR_COMPARE_COLORS, m_bUseColors);
33 DDX_Control(pDX, IDC_DIR_ITEM_EQUAL_COLOR, m_cDirItemEqual);
34 DDX_Control(pDX, IDC_DIR_ITEM_EQUAL_TEXT_COLOR, m_cDirItemEqualText);
35 DDX_Control(pDX, IDC_DIR_ITEM_DIFF_COLOR, m_cDirItemDiff);
36 DDX_Control(pDX, IDC_DIR_ITEM_DIFF_TEXT_COLOR, m_cDirItemDiffText);
37 DDX_Control(pDX, IDC_DIR_ITEM_NOTEXISTALL_COLOR, m_cDirItemNotExistAll);
38 DDX_Control(pDX, IDC_DIR_ITEM_NOTEXISTALL_TEXT_COLOR, m_cDirItemNotExistAllText);
39 DDX_Control(pDX, IDC_DIR_ITEM_FILTERED_COLOR, m_cDirItemFiltered);
40 DDX_Control(pDX, IDC_DIR_ITEM_FILTERED_TEXT_COLOR, m_cDirItemFilteredText);
41 DDX_Control(pDX, IDC_DIR_MARGIN_COLOR, m_cDirMargin);
46 BEGIN_MESSAGE_MAP(PropDirColors, CDialog)
47 //{{AFX_MSG_MAP(PropDirColors)
48 ON_BN_CLICKED(IDC_DIR_ITEM_EQUAL_COLOR, OnDirItemEqualColor)
49 ON_BN_CLICKED(IDC_DIR_ITEM_EQUAL_TEXT_COLOR, OnDirItemEqualTextColor)
50 ON_BN_CLICKED(IDC_DIR_ITEM_DIFF_COLOR, OnDirItemDiffColor)
51 ON_BN_CLICKED(IDC_DIR_ITEM_DIFF_TEXT_COLOR, OnDirItemDiffTextColor)
52 ON_BN_CLICKED(IDC_DIR_ITEM_NOTEXISTALL_COLOR, OnDirItemNotExistAllColor)
53 ON_BN_CLICKED(IDC_DIR_ITEM_NOTEXISTALL_TEXT_COLOR, OnDirItemNotExistAllTextColor)
54 ON_BN_CLICKED(IDC_DIR_ITEM_FILTERED_COLOR, OnDirItemFilteredColor)
55 ON_BN_CLICKED(IDC_DIR_ITEM_FILTERED_TEXT_COLOR, OnDirItemFilteredTextColor)
56 ON_BN_CLICKED(IDC_DIR_MARGIN_COLOR, OnDirMargniColor)
61 * @brief Reads options values from storage to UI.
62 * (Property sheet calls this before displaying all property pages)
64 void PropDirColors::ReadOptions()
66 m_bUseColors = GetOptionsMgr()->GetBool(OPT_DIRCLR_USE_COLORS) ? true : false;
67 SerializeColors(READ_OPTIONS);
71 * @brief Writes options values from UI to storage.
72 * (Property sheet calls this after displaying all property pages)
74 void PropDirColors::WriteOptions()
76 GetOptionsMgr()->SaveOption(OPT_DIRCLR_USE_COLORS, m_bUseColors);
77 SerializeColors(WRITE_OPTIONS);
81 * @brief Let user browse common color dialog, and select a color
83 void PropDirColors::BrowseColor(CColorButton & colorButton)
85 CColorDialog dialog(colorButton.GetColor());
86 Options::CustomColors::Load(GetOptionsMgr(), m_cCustColors.data());
87 dialog.m_cc.lpCustColors = m_cCustColors.data();
89 if (dialog.DoModal() == IDOK)
90 colorButton.SetColor(dialog.GetColor());
91 Options::CustomColors::Save(GetOptionsMgr(), m_cCustColors.data());
95 * @brief User wants to change equal color
97 void PropDirColors::OnDirItemEqualColor()
99 BrowseColor(m_cDirItemEqual);
103 * @brief User wants to change equal text color
105 void PropDirColors::OnDirItemEqualTextColor()
107 BrowseColor(m_cDirItemEqualText);
111 * @brief User wants to change diff color
113 void PropDirColors::OnDirItemDiffColor()
115 BrowseColor(m_cDirItemDiff);
119 * @brief User wants to change diff text color
121 void PropDirColors::OnDirItemDiffTextColor()
123 BrowseColor(m_cDirItemDiffText);
127 * @brief User wants to change not-exist-all color
129 void PropDirColors::OnDirItemNotExistAllColor()
131 BrowseColor(m_cDirItemNotExistAll);
135 * @brief User wants to change not-exist-all text color
137 void PropDirColors::OnDirItemNotExistAllTextColor()
139 BrowseColor(m_cDirItemNotExistAllText);
143 * @brief User wants to change filtered color
145 void PropDirColors::OnDirItemFilteredColor()
147 BrowseColor(m_cDirItemFiltered);
151 * @brief User wants to change filtered text color
153 void PropDirColors::OnDirItemFilteredTextColor()
155 BrowseColor(m_cDirItemFilteredText);
159 * @brief User wants to change background color
161 void PropDirColors::OnDirMargniColor()
163 BrowseColor(m_cDirMargin);
166 void PropDirColors::SerializeColors(OPERATION op)
168 SerializeColor(op, m_cDirItemEqual, OPT_DIRCLR_ITEM_EQUAL);
169 SerializeColor(op, m_cDirItemEqualText, OPT_DIRCLR_ITEM_EQUAL_TEXT);
171 SerializeColor(op, m_cDirItemDiff, OPT_DIRCLR_ITEM_DIFF);
172 SerializeColor(op, m_cDirItemDiffText, OPT_DIRCLR_ITEM_DIFF_TEXT);
174 SerializeColor(op, m_cDirItemNotExistAll, OPT_DIRCLR_ITEM_NOT_EXIST_ALL);
175 SerializeColor(op, m_cDirItemNotExistAllText, OPT_DIRCLR_ITEM_NOT_EXIST_ALL_TEXT);
177 SerializeColor(op, m_cDirItemFiltered, OPT_DIRCLR_ITEM_FILTERED);
178 SerializeColor(op, m_cDirItemFilteredText, OPT_DIRCLR_ITEM_FILTERED_TEXT);
180 SerializeColor(op, m_cDirMargin, OPT_DIRCLR_MARGIN);
183 void PropDirColors::SerializeColor(OPERATION op, CColorButton & btn, const String& optionName)
188 GetOptionsMgr()->SaveOption(optionName, (unsigned)btn.GetColor());
192 // Set colors for buttons, do NOT invalidate
193 btn.SetColor(GetOptionsMgr()->GetInt(optionName), false);