// PropsSounds.cpp : implementation file
//

#include "stdafx.h"
#include "PumpKIN.h"
#include "PropsSounds.h"
#include "PumpKINDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPropsSounds property page

IMPLEMENT_DYNCREATE(CPropsSounds, CPropertyPage)

CPropsSounds::CPropsSounds() : CPropertyPage(CPropsSounds::IDD)
{
	//{{AFX_DATA_INIT(CPropsSounds)
	m_Abort = _T("");
	m_Success = _T("");
	m_Request = _T("");
	//}}AFX_DATA_INIT
}

CPropsSounds::~CPropsSounds()
{
}

void CPropsSounds::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPropsSounds)
	DDX_Control(pDX, IDC_RING_PLAY, m_RequestPlayCtl);
	DDX_Control(pDX, IDC_RING_BROWSE, m_RequestBrowseCtl);
	DDX_Control(pDX, IDC_RING, m_RequestCtl);
	DDX_Control(pDX, IDC_FINISHED_PLAY, m_SuccessPlayCtl);
	DDX_Control(pDX, IDC_FINISHED_BROWSE, m_SuccessBrowseCtl);
	DDX_Control(pDX, IDC_FINISHED, m_SuccessCtl);
	DDX_Control(pDX, IDC_ABORTED_PLAY, m_AbortPlayCtl);
	DDX_Control(pDX, IDC_ABORTED_BROWSE, m_AbortBrowseCtl);
	DDX_Control(pDX, IDC_ABORTED, m_AbortCtl);
	DDX_CBString(pDX, IDC_ABORTED, m_Abort);
	DDX_CBString(pDX, IDC_FINISHED, m_Success);
	DDX_CBString(pDX, IDC_RING, m_Request);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPropsSounds, CPropertyPage)
	//{{AFX_MSG_MAP(CPropsSounds)
	ON_BN_CLICKED(IDC_ABORTED_BROWSE, OnAbortedBrowse)
	ON_BN_CLICKED(IDC_FINISHED_BROWSE, OnFinishedBrowse)
	ON_BN_CLICKED(IDC_RING_BROWSE, OnRingBrowse)
	ON_BN_CLICKED(IDC_ABORTED_PLAY, OnAbortedPlay)
	ON_BN_CLICKED(IDC_FINISHED_PLAY, OnFinishedPlay)
	ON_BN_CLICKED(IDC_RING_PLAY, OnRingPlay)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPropsSounds message handlers

BOOL CPropsSounds::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
HICON hP = AfxGetApp()->LoadIcon(IDI_PLAY);
HICON hB = AfxGetApp()->LoadIcon(IDI_BROWSE);
	m_RequestPlayCtl.SetIcon(hP);
	m_SuccessPlayCtl.SetIcon(hP);
	m_AbortPlayCtl.SetIcon(hP);
	m_RequestBrowseCtl.SetIcon(hB);
	m_SuccessBrowseCtl.SetIcon(hB);
	m_AbortBrowseCtl.SetIcon(hB);
	
CPumpKINDlg* pd = (CPumpKINDlg*)AfxGetMainWnd();
//	ASSERT_KINDOF(CPumpKINDlg,pd);
	m_bnw=&pd->m_bnw;

	m_bnw->FillInCombo(&m_RequestCtl);
	m_bnw->FillInCombo(&m_SuccessCtl);
	m_bnw->FillInCombo(&m_AbortCtl);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPropsSounds::OnAbortedBrowse() 
{
	Browse(m_AbortCtl);
}
void CPropsSounds::OnFinishedBrowse() 
{
	Browse(m_SuccessCtl);
}
void CPropsSounds::OnRingBrowse() 
{
	Browse(m_RequestCtl);
}

void CPropsSounds::OnAbortedPlay() 
{
	Play(m_AbortCtl);
}

void CPropsSounds::OnFinishedPlay() 
{
	Play(m_SuccessCtl);
}

void CPropsSounds::OnRingPlay() 
{
	Play(m_RequestCtl);
}

void CPropsSounds::Browse(CComboBox& ctl)
{
CString f;
	ctl.GetWindowText(f);
CString filter;
	filter.LoadString(IDS_FILTER_WAV);
CFileDialog fd(TRUE,NULL,(LPCTSTR)f,
			   OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_HIDEREADONLY
			   |OFN_LONGNAMES|OFN_NOCHANGEDIR|OFN_PATHMUSTEXIST,
			   filter,this);
CString title;
	title.LoadString(IDS_TITLE_WAV);
	fd.m_ofn.lpstrTitle=(LPCTSTR)title;
	if(fd.DoModal()==IDOK)
		ctl.SetWindowText(fd.GetPathName());
}

void CPropsSounds::Play(CComboBox& ctl)
{
CString s;
	ctl.GetWindowText(s);
CBellsNWhistles::Whistling w = m_bnw->StartSound(s);
	if(w){
		Sleep(5000);
		m_bnw->StopSound(w);
	}
}
