/* * $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 "OpenDlg.h" #include "OpenFileDlg.h" // COpenDlg dialog //IMPLEMENT_DYNAMIC(COpenDlg, CResizableDialog) COpenDlg::COpenDlg(CWnd* pParent /*=NULL*/) : CResizableDialog(COpenDlg::IDD, pParent) , m_path(_T("")) , m_path2(_T("")) , m_fMultipleFiles(false) , m_fAppendPlaylist(FALSE) { } COpenDlg::~COpenDlg() { } void COpenDlg::DoDataExchange(CDataExchange* pDX) { __super::DoDataExchange(pDX); DDX_Control(pDX, IDC_COMBO1, m_mrucombo); DDX_CBString(pDX, IDC_COMBO1, m_path); DDX_Control(pDX, IDC_COMBO2, m_mrucombo2); DDX_CBString(pDX, IDC_COMBO2, m_path2); DDX_Control(pDX, IDC_STATIC1, m_label2); DDX_Check(pDX, IDC_CHECK1, m_fAppendPlaylist); } BEGIN_MESSAGE_MAP(COpenDlg, CResizableDialog) ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedBrowsebutton) ON_BN_CLICKED(IDC_BUTTON2, OnBnClickedBrowsebutton2) ON_BN_CLICKED(IDOK, OnBnClickedOk) ON_UPDATE_COMMAND_UI(IDC_STATIC1, OnUpdateDub) ON_UPDATE_COMMAND_UI(IDC_COMBO2, OnUpdateDub) ON_UPDATE_COMMAND_UI(IDC_BUTTON2, OnUpdateDub) END_MESSAGE_MAP() // COpenDlg message handlers BOOL COpenDlg::OnInitDialog() { __super::OnInitDialog(); CRecentFileList& MRU = AfxGetAppSettings().MRU; MRU.ReadList(); m_mrucombo.ResetContent(); for(int i = 0; i < MRU.GetSize(); i++) if(!MRU[i].IsEmpty()) m_mrucombo.AddString(MRU[i]); CorrectComboListWidth(m_mrucombo, GetFont()); CRecentFileList& MRUDub = AfxGetAppSettings().MRUDub; MRUDub.ReadList(); m_mrucombo2.ResetContent(); for(int i = 0; i < MRUDub.GetSize(); i++) if(!MRUDub[i].IsEmpty()) m_mrucombo2.AddString(MRUDub[i]); CorrectComboListWidth(m_mrucombo2, GetFont()); if(m_mrucombo.GetCount() > 0) m_mrucombo.SetCurSel(0); AddAnchor(m_mrucombo, TOP_LEFT, TOP_RIGHT); AddAnchor(m_mrucombo2, TOP_LEFT, TOP_RIGHT); AddAnchor(IDC_BUTTON1, TOP_RIGHT); AddAnchor(IDC_BUTTON2, TOP_RIGHT); AddAnchor(IDOK, TOP_RIGHT); AddAnchor(IDCANCEL, TOP_RIGHT); AddAnchor(IDC_STATIC1, TOP_LEFT, TOP_RIGHT); CRect r; GetWindowRect(r); CSize s = r.Size(); SetMinTrackSize(s); s.cx = 1000; SetMaxTrackSize(s); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } static CString GetFileName(CString str) { CPath p = str; p.StripPath(); return (LPCTSTR)p; } void COpenDlg::OnBnClickedBrowsebutton() { UpdateData(); CString filter; CAtlArray mask; AfxGetAppSettings().Formats.GetFilter(filter, mask); COpenFileDlg fd(mask, true, NULL, m_path, OFN_EXPLORER|OFN_ENABLESIZING|OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_ENABLEINCLUDENOTIFY, filter, this); if(fd.DoModal() != IDOK) return; m_fns.RemoveAll(); POSITION pos = fd.GetStartPosition(); while(pos) { /* CString str = fd.GetNextPathName(pos); POSITION insertpos = m_fns.GetTailPosition(); while(insertpos && GetFileName(str).CompareNoCase(GetFileName(m_fns.GetAt(insertpos))) <= 0) m_fns.GetPrev(insertpos); if(!insertpos) m_fns.AddHead(str); else m_fns.InsertAfter(insertpos, str); */ m_fns.AddTail(fd.GetNextPathName(pos)); } if(m_fns.GetCount() > 1 || m_fns.GetCount() == 1 && (m_fns.GetHead()[m_fns.GetHead().GetLength()-1] == '\\' || m_fns.GetHead()[m_fns.GetHead().GetLength()-1] == '*')) { m_fMultipleFiles = true; EndDialog(IDOK); return; } m_mrucombo.SetWindowText(fd.GetPathName()); } void COpenDlg::OnBnClickedBrowsebutton2() { UpdateData(); CString filter; CAtlArray mask; AfxGetAppSettings().Formats.GetAudioFilter(filter, mask); COpenFileDlg fd(mask, false, NULL, m_path2, OFN_EXPLORER|OFN_ENABLESIZING|OFN_HIDEREADONLY|OFN_ENABLEINCLUDENOTIFY, filter, this); if(fd.DoModal() != IDOK) return; m_mrucombo2.SetWindowText(fd.GetPathName()); } void COpenDlg::OnBnClickedOk() { UpdateData(); m_fns.RemoveAll(); m_fns.AddTail(m_path); if(m_mrucombo2.IsWindowEnabled()) m_fns.AddTail(m_path2); m_fMultipleFiles = false; OnOK(); } void COpenDlg::OnUpdateDub(CCmdUI* pCmdUI) { m_mrucombo.GetWindowText(m_path); pCmdUI->Enable(AfxGetAppSettings().Formats.GetEngine(m_path) == DirectShow); }