1 #include "StatusControl.h"
3 #include "../resource.h"
7 CStatusControl::CStatusControl(Dasher::CSettingsUser
*pCreateFrom
, CAppSettings
*pAppSettings
)
8 : CSettingsObserver(pCreateFrom
),
9 m_pAppSettings(pAppSettings
),
13 void CStatusControl::HandleEvent(int iParameter
) {
27 LRESULT
CStatusControl::OnInitDialog(UINT uMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
) {
28 m_hEdit
= GetDlgItem(IDC_SPEED_EDIT
);
29 m_hUpDown
= GetDlgItem(IDC_SPEED_SPIN
);
30 m_hCombo
= GetDlgItem(IDC_ALPHABET_COMBO
);
32 RECT r
= { 0,0,0,14 };
34 m_dialogHeight
= r
.bottom
;
36 m_hEdit
.SendMessage(EM_LIMITTEXT
, (WPARAM
)4, (LPARAM
)0);
37 m_hUpDown
.SendMessage(UDM_SETRANGE
, 0, (LPARAM
)MAKELONG(800, 1));
44 LRESULT
CStatusControl::OnSpeedSpinChange(int idCtrl
, LPNMHDR pNMHDR
, BOOL
& bHandled
) {
45 LPNMUPDOWN pUpDown
= reinterpret_cast<LPNMUPDOWN
>(pNMHDR
);
47 if (pUpDown
->hdr
.code
== UDN_DELTAPOS
)
48 UpdateSpeed(pUpDown
->iPos
, pUpDown
->iDelta
);
54 LRESULT
CStatusControl::OnSpeedEditChange(WORD wNotifyCode
, WORD wID
, HWND hWndCtl
, BOOL
& bHandled
) {
56 m_hEdit
.GetWindowText(wideText
);
57 double dNewSpeed
= _tstof(wideText
);
58 m_pAppSettings
->SetLongParameter(LP_MAX_BITRATE
, dNewSpeed
* 100);
62 LRESULT
CStatusControl::OnAlphabetChanged(WORD wNotifyCode
, WORD wID
, HWND hWndCtl
, BOOL
& bHandled
) {
67 LRESULT
CStatusControl::OnSize(UINT message
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
) {
71 m_hCombo
.GetWindowRect(&comboRc
);
72 ScreenToClient(&comboRc
);
73 comboRc
.right
= rc
.right
- rc
.left
;
74 m_hCombo
.MoveWindow(&comboRc
, true);
78 void CStatusControl::PopulateCombo() {
79 int iCount(SendMessage(m_hCombo
, CB_GETCOUNT
, 0, 0));
81 for(int i(0); i
< iCount
; ++i
)
82 SendMessage(m_hCombo
, CB_DELETESTRING
, 0, 0);
84 std::wstring strEntry
;
86 WinUTF8::UTF8string_to_wstring(m_pAppSettings
->GetStringParameter(SP_ALPHABET_ID
), strEntry
);
87 SendMessage(m_hCombo
, CB_ADDSTRING
, 0, (LPARAM
) (LPCTSTR
)strEntry
.c_str());
89 WinUTF8::UTF8string_to_wstring(m_pAppSettings
->GetStringParameter(SP_ALPHABET_1
), strEntry
);
90 if(strEntry
.size() > 0)
91 SendMessage(m_hCombo
, CB_ADDSTRING
, 0, (LPARAM
) (LPCTSTR
)strEntry
.c_str());
93 WinUTF8::UTF8string_to_wstring(m_pAppSettings
->GetStringParameter(SP_ALPHABET_2
), strEntry
);
94 if(strEntry
.size() > 0)
95 SendMessage(m_hCombo
, CB_ADDSTRING
, 0, (LPARAM
) (LPCTSTR
)strEntry
.c_str());
97 WinUTF8::UTF8string_to_wstring(m_pAppSettings
->GetStringParameter(SP_ALPHABET_3
), strEntry
);
98 if(strEntry
.size() > 0)
99 SendMessage(m_hCombo
, CB_ADDSTRING
, 0, (LPARAM
) (LPCTSTR
)strEntry
.c_str());
101 WinUTF8::UTF8string_to_wstring(m_pAppSettings
->GetStringParameter(SP_ALPHABET_4
), strEntry
);
102 if(strEntry
.size() > 0)
103 SendMessage(m_hCombo
, CB_ADDSTRING
, 0, (LPARAM
) (LPCTSTR
)strEntry
.c_str());
105 SendMessage(m_hCombo
, CB_ADDSTRING
, 0, (LPARAM
) (LPCTSTR
)L
"More Alphabets...");
107 SendMessage(m_hCombo
, CB_SETCURSEL
, 0, 0);
110 void CStatusControl::SelectAlphabet() {
111 int iIndex(SendMessage(m_hCombo
, CB_GETCURSEL
, 0, 0));
112 int iLength(SendMessage(m_hCombo
, CB_GETLBTEXTLEN
, iIndex
, 0));
114 TCHAR
*szSelection
= new TCHAR
[iLength
+ 1];
115 SendMessage(m_hCombo
, CB_GETLBTEXT
, iIndex
, (LPARAM
)szSelection
);
117 if(!_tcscmp(szSelection
, L
"More Alphabets...")) {
118 GetParent().SendMessage(WM_COMMAND
, ID_OPTIONS_PREFS
, 0);
121 std::string strNewValue
;
122 WinUTF8::wstring_to_UTF8string(szSelection
, strNewValue
);
124 m_pAppSettings
->SetStringParameter(SP_ALPHABET_ID
, strNewValue
);
127 delete[] szSelection
;
130 void CStatusControl::PopulateSpeed() {
131 int iValue(m_pAppSettings
->GetLongParameter(LP_MAX_BITRATE
));
134 _stprintf(Buffer
, TEXT("%0.2f"), iValue
/ 100.0);
135 SendMessage(m_hEdit
, WM_SETTEXT
, 0, (LPARAM
) (LPCSTR
) Buffer
);
136 SendMessage(m_hUpDown
, UDM_SETPOS
, 0, (LPARAM
) MAKELONG ((short)iValue
, 0));
139 void CStatusControl::UpdateSpeed(int iPos
, int iDelta
) {
140 int iValue(iPos
+ iDelta
);
149 _stprintf(Buffer
, TEXT("%0.2f"), iValue
/ 100.0);
150 SendMessage(m_hEdit
, WM_SETTEXT
, 0, (LPARAM
)(LPCSTR
)Buffer
);
152 m_pAppSettings
->SetLongParameter(LP_MAX_BITRATE
, iValue
);