diff options
author | Casimir666 <casimir666@users.sourceforge.net> | 2006-06-25 01:37:43 +0400 |
---|---|---|
committer | Casimir666 <casimir666@users.sourceforge.net> | 2006-06-25 01:37:43 +0400 |
commit | 0868305e78da2b0742c2ce349efa041d5622ae21 (patch) | |
tree | 663fd93132c7927910ba7c13188d6332b2e3e5b2 /src/apps/mplayerc/OpenDlg.cpp | |
parent | 43c8656956a0460fc4551e3ea7a39b9f3094a3e3 (diff) |
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@14 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/apps/mplayerc/OpenDlg.cpp')
-rw-r--r-- | src/apps/mplayerc/OpenDlg.cpp | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/src/apps/mplayerc/OpenDlg.cpp b/src/apps/mplayerc/OpenDlg.cpp new file mode 100644 index 000000000..e5e41b2f5 --- /dev/null +++ b/src/apps/mplayerc/OpenDlg.cpp @@ -0,0 +1,195 @@ +/*
+ * Copyright (C) 2003-2006 Gabest
+ * http://www.gabest.org
+ *
+ * This Program 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 2, or (at your option)
+ * any later version.
+ *
+ * This Program 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 GNU Make; see the file COPYING. If not, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+// OpenDlg.cpp : implementation file
+//
+
+#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<CString> 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<CString> 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);
+}
|