From 66526765714b08969548a414d3fa87dbe333242d Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Sat, 28 Jul 2012 19:25:08 +0000 Subject: "!Deprecated" folders moved from root directory to plugins git-svn-id: http://svn.miranda-ng.org/main/trunk@1230 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- .../!NotAdopted/XSoundNotify/SettingsDialog.cpp | 124 +++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100644 plugins/!NotAdopted/XSoundNotify/SettingsDialog.cpp (limited to 'plugins/!NotAdopted/XSoundNotify/SettingsDialog.cpp') diff --git a/plugins/!NotAdopted/XSoundNotify/SettingsDialog.cpp b/plugins/!NotAdopted/XSoundNotify/SettingsDialog.cpp new file mode 100644 index 0000000000..69b64d776f --- /dev/null +++ b/plugins/!NotAdopted/XSoundNotify/SettingsDialog.cpp @@ -0,0 +1,124 @@ +#include "SettingsDialog.h" +//#include "DebugLogger.hpp" + +template +T * GetComboBoxData(CComboBox & ctrl) +{ + return (T*)(ctrl.GetItemData(ctrl.GetCurSel())); +} + +SettingsDialog::SettingsDialog(SoundNotifyDataStorage & storage) : _dataStorage(storage) +{ + +} + +BOOL SettingsDialog::PreTranslateMessage(MSG* pMsg) +{ + return ::IsDialogMessage(m_hWnd, pMsg); +} + +LRESULT SettingsDialog::onInitDialog(UINT, WPARAM, LPARAM, BOOL&) +{ + _userCombo = GetDlgItem(IDC_COMBO_USERS); + _protoCombo = GetDlgItem(IDC_COMBO_PROTO); + _chooseButton = GetDlgItem(IDC_BUTTON_CHOOSE_SOUND); + _resetButton = GetDlgItem(IDC_BUTTON_RESET_SOUND); + _playButton = GetDlgItem(IDC_BUTTON_TEST_PLAY); + _soundLabel = GetDlgItem(IDC_LABEL_SOUND); + + auto & protocols = _dataStorage.getData(); + for (auto it = protocols.begin(), end = protocols.end(); it != end; ++it) + addProtocolItem(*it); + + _userCombo.EnableWindow(0); + GetDlgItem(IDC_BUTTON_CHOOSE_SOUND).EnableWindow(0); + GetDlgItem(IDC_BUTTON_RESET_SOUND).EnableWindow(0); + GetDlgItem(IDC_BUTTON_TEST_PLAY).EnableWindow(0); + return TRUE; +} + +LRESULT SettingsDialog::onOk(WORD, WORD wID, HWND, BOOL&) +{ + EndDialog(wID); + return 0; +} + +LRESULT SettingsDialog::onCancel(WORD, WORD wID, HWND, BOOL&) +{ + EndDialog(wID); + return 0; +} + +LRESULT SettingsDialog::onSelectProtocol(WORD, WORD, HWND, BOOL&) +{ + _userCombo.ResetContent(); + auto data = GetComboBoxData(_protoCombo); + for (auto it = data->second.begin(), end = data->second.end(); it != end; ++it) + { + int id = _userCombo.AddString(it->first.c_str()); + _userCombo.SetItemData(id, (DWORD_PTR)(&(*it))); + } + _userCombo.EnableWindow(TRUE); + _playButton.EnableWindow(FALSE); + _resetButton.EnableWindow(FALSE); + _chooseButton.EnableWindow(FALSE); + _soundLabel.SetWindowText(TEXT("")); + return 0; +} + +LRESULT SettingsDialog::onSelectUser(WORD, WORD, HWND, BOOL &) +{ + auto user = GetComboBoxData(_userCombo); + _chooseButton.EnableWindow(TRUE); + + BOOL soundSelected = !user->second->soundPath().empty(); + _resetButton.EnableWindow(soundSelected); + _playButton.EnableWindow(soundSelected); + setSoundLabelText(user->second->soundPath().c_str()); + + return 0; +} + +LRESULT SettingsDialog::onChooseSound(WORD, WORD, HWND , BOOL&) +{ + CFileDialog fileDlg(1, 0, 0, OFN_FILEMUSTEXIST, TEXT("WAV files\0*.wav\0\0")); + if (fileDlg.DoModal() != IDOK) + return 0; + + setSoundLabelText(fileDlg.m_szFileName); + auto user = GetComboBoxData(_userCombo); + user->second->setSound(xsn_string(fileDlg.m_szFileName)); + _resetButton.EnableWindow(TRUE); + _playButton.EnableWindow(TRUE); + return 0; +} + +LRESULT SettingsDialog::onResetSound(WORD, WORD wID, HWND , BOOL&) +{ + auto user = GetComboBoxData(_userCombo); + user->second->setSound(xsn_string()); + _resetButton.EnableWindow(FALSE); + _playButton.EnableWindow(FALSE); + _soundLabel.SetWindowText(TEXT("")); + return 0; +} + +LRESULT SettingsDialog::onTestPlay(WORD, WORD wID, HWND , BOOL&) +{ + auto user = GetComboBoxData(_userCombo); + PlaySound(user->second->soundPath().c_str(), nullptr, SND_FILENAME | SND_ASYNC); + return 0; +} + +void SettingsDialog::setSoundLabelText(LPCTSTR text) +{ + _soundLabel.SetWindowText(PathFindFileName(text)); +} + +void SettingsDialog::addProtocolItem(ProtocolTable::value_type & value) +{ + wchar_t protocol[30]; + mbstowcs(protocol, value.first.c_str(), 30); + int idx = _protoCombo.AddString(protocol); + _protoCombo.SetItemData(idx, (DWORD_PTR)(&value)); +} -- cgit v1.2.3