summaryrefslogtreecommitdiff
path: root/plugins/StartPosition/src/options.cpp
blob: fba92709efe38c5ab9df7f062a34478b9dee5ad3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include "stdafx.h"

StartPositionOptions::StartPositionOptions() :
	setTopPosition(MODULENAME, "CLEnableTop", 1),
	setBottomPosition(MODULENAME, "CLEnableBottom", 0),
	setSidePosition(MODULENAME, "CLEnableSide", 1),
	clistAlign(MODULENAME, "CLAlign", ClistAlign::right),
	setClistWidth(MODULENAME, "CLEnableWidth", 0),
	setClistStartState(MODULENAME, "CLEnableState", 0),
	clistState(MODULENAME, "CLState", ClistState::normal),
	pixelsFromTop(MODULENAME, "CLpixelsTop", 3),
	pixelsFromBottom(MODULENAME, "CLpixelsBottom", 3),
	pixelsFromSide(MODULENAME, "CLpixelsSide", 3),
	clistWidth(MODULENAME, "CLWidth", 180)
{
}

COptionsDlg::COptionsDlg() :
	CPluginDlgBase(g_plugin, IDD_OPTIONS, MODULENAME),
	chkPositionTop(this, IDC_CLTOPENABLE),
	edtPositionTop(this, IDC_CLTOP),
	chkPositionBottom(this, IDC_CLBOTTOMENABLE),
	edtPositionBottom(this, IDC_CLBOTTOM),
	chkPositionSide(this, IDC_CLSIDEENABLE),
	edtPositionSide(this, IDC_CLSIDE),
	chkFromLeft(this, IDC_CLALIGNLEFT),
	chkFromRight(this, IDC_CLALIGNRIGHT),
	chkWidth(this, IDC_CLWIDTHENABLE),
	edtWidth(this, IDC_CLWIDTH),
	chkStartState(this, IDC_CLSTATEENABLE),
	chkStartHidden(this, IDC_CLSTATETRAY),
	chkStartNormal(this, IDC_CLSTATEOPENED)
{
	CreateLink(chkPositionTop, g_plugin.spOptions.setTopPosition);
	CreateLink(chkPositionBottom, g_plugin.spOptions.setBottomPosition);
	CreateLink(chkPositionSide, g_plugin.spOptions.setSidePosition);
	CreateLink(chkWidth, g_plugin.spOptions.setClistWidth);
	CreateLink(chkStartState, g_plugin.spOptions.setClistStartState);

	CreateLink(edtPositionTop, g_plugin.spOptions.pixelsFromTop);
	CreateLink(edtPositionBottom, g_plugin.spOptions.pixelsFromBottom);
	CreateLink(edtPositionSide, g_plugin.spOptions.pixelsFromSide);
	CreateLink(edtWidth, g_plugin.spOptions.clistWidth);

	chkPositionTop.OnChange = Callback(this, &COptionsDlg::onCheck_PositionTop);
	chkPositionBottom.OnChange = Callback(this, &COptionsDlg::onCheck_PositionBottom);
	chkPositionSide.OnChange = Callback(this, &COptionsDlg::onCheck_PositionSide);
	chkWidth.OnChange = Callback(this, &COptionsDlg::onCheck_Width);
	chkStartState.OnChange = Callback(this, &COptionsDlg::onCheck_StartState);
}

void COptionsDlg::OnInitDialog()
{
	if (g_plugin.spOptions.clistState == ClistState::normal)
		chkStartNormal.SetState(true);
	else
		chkStartHidden.SetState(true);

	chkStartHidden.Enable(chkStartState.GetState());
	chkStartNormal.Enable(chkStartState.GetState());

	if (g_plugin.spOptions.clistAlign == ClistAlign::right)
		chkFromRight.SetState(true);
	else
		chkFromLeft.SetState(true);

	chkFromLeft.Enable(chkPositionSide.GetState());
	chkFromRight.Enable(chkPositionSide.GetState());

	edtPositionTop.Enable(chkPositionTop.GetState());
	edtPositionBottom.Enable(chkPositionBottom.GetState());
	edtPositionSide.Enable(chkPositionSide.GetState());
	edtWidth.Enable(chkWidth.GetState());
}

void COptionsDlg::OnApply()
{
	removeOldSettings();

	if (chkStartNormal.GetState())
		g_plugin.spOptions.clistState = ClistState::normal;
	else
		g_plugin.spOptions.clistState = ClistState::hidden;

	if (chkFromRight.GetState())
		g_plugin.spOptions.clistAlign = ClistAlign::right;
	else
		g_plugin.spOptions.clistAlign = ClistAlign::left;
}

void COptionsDlg::removeOldSettings()
{
	g_plugin.delSetting("CLEnable");
	g_plugin.delSetting("CLuseLastWidth");
}

void COptionsDlg::onCheck_PositionTop(CCtrlCheck*)
{
	edtPositionTop.Enable(chkPositionTop.GetState());
}

void COptionsDlg::onCheck_PositionBottom(CCtrlCheck*)
{
	edtPositionBottom.Enable(chkPositionBottom.GetState());
}

void COptionsDlg::onCheck_PositionSide(CCtrlCheck*)
{
	edtPositionSide.Enable(chkPositionSide.GetState());
	chkFromLeft.Enable(chkPositionSide.GetState());
	chkFromRight.Enable(chkPositionSide.GetState());
}

void COptionsDlg::onCheck_Width(CCtrlCheck*)
{
	edtWidth.Enable(chkWidth.GetState());
}

void COptionsDlg::onCheck_StartState(CCtrlCheck*)
{
	chkStartHidden.Enable(chkStartState.GetState());
	chkStartNormal.Enable(chkStartState.GetState());
}