/* * $Id$ * * (C) 2006-2010 see AUTHORS * * This file is part of mplayerc. * * Mplayerc is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * Mplayerc is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ #include "stdafx.h" #include "resource.h" #include "MpcAudioRendererSettingsWnd.h" #include "../../../DSUtil/DSUtil.h" #include "../../../apps/mplayerc/internal_filter_config.h" // ==>>> Resource identifier from "resource.h" present in mplayerc project! #define ResStr(id) CString(MAKEINTRESOURCE(id)) #define LEFT_SPACING 25 #define VERTICAL_SPACING 25 CMpcAudioRendererSettingsWnd::CMpcAudioRendererSettingsWnd(void) { } bool CMpcAudioRendererSettingsWnd::OnConnect(const CInterfaceList& pUnks) { ASSERT(!m_pMAR); m_pMAR.Release(); POSITION pos = pUnks.GetHeadPosition(); while(pos && !(m_pMAR = pUnks.GetNext(pos))) { ; } if(!m_pMAR) { return false; } return true; } void CMpcAudioRendererSettingsWnd::OnDisconnect() { m_pMAR.Release(); } bool CALLBACK DSEnumProc(LPGUID lpGUID, LPCTSTR lpszDesc, LPCTSTR lpszDrvName, LPVOID lpContext ) { CComboBox *pCombo = (CComboBox*)lpContext; ASSERT ( pCombo ); LPGUID lpTemp = NULL; if (lpGUID != NULL) // NULL only for "Primary Sound Driver". { if ((lpTemp = (LPGUID)malloc(sizeof(GUID))) == NULL) { return(TRUE); } memcpy(lpTemp, lpGUID, sizeof(GUID)); } pCombo->AddString ( lpszDesc ); free(lpTemp); return(TRUE); } bool CMpcAudioRendererSettingsWnd::OnActivate() { int nPosY = 10; m_grpDefault.Create (_T(""), WS_VISIBLE|WS_CHILD | BS_GROUPBOX, CRect (10, nPosY, 350, nPosY+300), this, (UINT)IDC_STATIC); nPosY += VERTICAL_SPACING; m_cbWasapiMode.Create (ResStr (IDS_ARS_WASAPI_MODE), WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX|BS_LEFTTEXT, CRect (LEFT_SPACING, nPosY, 325, nPosY+15), this, IDC_PP_WASAPI_MODE); nPosY += VERTICAL_SPACING; m_cbMuteFastForward.Create (ResStr (IDS_ARS_MUTE_FAST_FORWARD), WS_VISIBLE|WS_CHILD|BS_AUTOCHECKBOX|BS_LEFTTEXT, CRect (LEFT_SPACING, nPosY, 325, nPosY+15), this, IDC_PP_MUTE_FAST_FORWARD); nPosY += VERTICAL_SPACING + 5; m_txtSoundDevice.Create (ResStr (IDS_ARS_SOUND_DEVICE), WS_VISIBLE|WS_CHILD, CRect (LEFT_SPACING, nPosY, 100, nPosY+15), this, (UINT)IDC_STATIC); m_cbSoundDevice.Create (WS_VISIBLE|WS_CHILD|CBS_DROPDOWNLIST|WS_VSCROLL, CRect (110, nPosY-4, 325, nPosY+90), this, IDC_PP_SOUND_DEVICE); SetClassLongPtr(GetDlgItem(IDC_PP_SOUND_DEVICE)->m_hWnd, GCLP_HCURSOR, (long) AfxGetApp()->LoadStandardCursor(IDC_HAND)); DirectSoundEnumerate((LPDSENUMCALLBACK)DSEnumProc, (VOID*)&m_cbSoundDevice); if ( m_cbSoundDevice.GetCount() > 0 ) { int idx = m_cbSoundDevice.FindString(0, m_pMAR->GetSoundDevice()); if( idx < 0) { m_cbSoundDevice.SetCurSel(0); } else { m_cbSoundDevice.SetCurSel(m_cbSoundDevice.FindString(0, m_pMAR->GetSoundDevice())); } } m_cbWasapiMode.SetCheck(m_pMAR->GetWasapiMode()); m_cbMuteFastForward.SetCheck(m_pMAR->GetMuteFastForward()); for(CWnd* pWnd = GetWindow(GW_CHILD); pWnd; pWnd = pWnd->GetNextWindow()) { pWnd->SetFont(&m_font, FALSE); } return true; } void CMpcAudioRendererSettingsWnd::OnDeactivate() { } bool CMpcAudioRendererSettingsWnd::OnApply() { OnDeactivate(); if(m_pMAR) { m_pMAR->SetWasapiMode(m_cbWasapiMode.GetCheck()); m_pMAR->SetMuteFastForward(m_cbMuteFastForward.GetCheck()); CString str; int idx = m_cbSoundDevice.GetCurSel(); if( !(idx < 0) ) { m_cbSoundDevice.GetLBText( idx, str ); m_pMAR->SetSoundDevice(str); } m_pMAR->Apply(); } return true; } BEGIN_MESSAGE_MAP(CMpcAudioRendererSettingsWnd, CInternalPropertyPageWnd) END_MESSAGE_MAP()