/*
* $Id$
*
* (C) 2003-2006 Gabest
* (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 "mplayerc.h"
#include "SelectMediaType.h"
#include "../../DSUtil/DSUtil.h"
// CSelectMediaType dialog
IMPLEMENT_DYNAMIC(CSelectMediaType, CCmdUIDialog)
CSelectMediaType::CSelectMediaType(CAtlArray& guids, GUID guid, CWnd* pParent /*=NULL*/)
: CCmdUIDialog(CSelectMediaType::IDD, pParent)
, m_guids(guids), m_guid(guid)
{
m_guidstr = CStringFromGUID(guid);
}
CSelectMediaType::~CSelectMediaType()
{
}
void CSelectMediaType::DoDataExchange(CDataExchange* pDX)
{
__super::DoDataExchange(pDX);
DDX_CBString(pDX, IDC_COMBO1, m_guidstr);
DDX_Control(pDX, IDC_COMBO1, m_guidsctrl);
}
BEGIN_MESSAGE_MAP(CSelectMediaType, CCmdUIDialog)
ON_CBN_EDITCHANGE(IDC_COMBO1, OnCbnEditchangeCombo1)
ON_UPDATE_COMMAND_UI(IDOK, OnUpdateOK)
END_MESSAGE_MAP()
// CSelectMediaType message handlers
BOOL CSelectMediaType::OnInitDialog()
{
CCmdUIDialog::OnInitDialog();
for(int i = 0; i < m_guids.GetCount(); i++) {
m_guidsctrl.AddString(GetMediaTypeName(m_guids[i]));
}
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CSelectMediaType::OnCbnEditchangeCombo1()
{
UpdateData();
int i = m_guidsctrl.FindStringExact(0, m_guidstr);
if(i >= 0) {
DWORD sel = m_guidsctrl.GetEditSel();
m_guidsctrl.SetCurSel(i);
m_guidsctrl.SetEditSel(sel,sel);
}
}
void CSelectMediaType::OnUpdateOK(CCmdUI* pCmdUI)
{
UpdateData();
pCmdUI->Enable(!m_guidstr.IsEmpty() && (m_guidsctrl.GetCurSel() >= 0 || GUIDFromCString(m_guidstr) != GUID_NULL));
}
void CSelectMediaType::OnOK()
{
UpdateData();
int i = m_guidsctrl.GetCurSel();
m_guid = i >= 0 ? m_guids[i] : GUIDFromCString(m_guidstr);
CCmdUIDialog::OnOK();
}