00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "stdafx.h"
00026 #include "mplayerc.h"
00027 #include "MainFrm.h"
00028 #include "PPagePlayback.h"
00029
00030
00031
00032 IMPLEMENT_DYNAMIC(CPPagePlayback, CPPageBase)
00033 CPPagePlayback::CPPagePlayback()
00034 : CPPageBase(CPPagePlayback::IDD, CPPagePlayback::IDD)
00035 , m_iLoopForever(0)
00036 , m_nLoops(0)
00037 , m_fRewind(FALSE)
00038 , m_iZoomLevel(0)
00039 , m_iRememberZoomLevel(FALSE)
00040 , m_fSetFullscreenRes(FALSE)
00041 , m_nVolume(0)
00042 , m_nBalance(0)
00043 , m_fAutoloadAudio(FALSE)
00044 , m_fAutoloadSubtitles(FALSE)
00045 , m_fEnableWorkerThreadForOpening(FALSE)
00046 , m_fReportFailedPins(FALSE)
00047 {
00048 }
00049
00050 CPPagePlayback::~CPPagePlayback()
00051 {
00052 }
00053
00054 void CPPagePlayback::DoDataExchange(CDataExchange* pDX)
00055 {
00056 __super::DoDataExchange(pDX);
00057 DDX_Control(pDX, IDC_SLIDER2, m_volumectrl);
00058 DDX_Control(pDX, IDC_SLIDER3, m_balancectrl);
00059 DDX_Slider(pDX, IDC_SLIDER2, m_nVolume);
00060 DDX_Slider(pDX, IDC_SLIDER3, m_nBalance);
00061 DDX_Radio(pDX, IDC_RADIO1, m_iLoopForever);
00062 DDX_Control(pDX, IDC_EDIT1, m_loopnumctrl);
00063 DDX_Text(pDX, IDC_EDIT1, m_nLoops);
00064 DDX_Check(pDX, IDC_CHECK1, m_fRewind);
00065 DDX_CBIndex(pDX, IDC_COMBO1, m_iZoomLevel);
00066 DDX_Check(pDX, IDC_CHECK5, m_iRememberZoomLevel);
00067 DDX_Check(pDX, IDC_CHECK4, m_fSetFullscreenRes);
00068 DDX_Control(pDX, IDC_COMBO2, m_dispmodecombo);
00069 DDX_Check(pDX, IDC_CHECK2, m_fAutoloadAudio);
00070 DDX_Check(pDX, IDC_CHECK3, m_fAutoloadSubtitles);
00071 DDX_Check(pDX, IDC_CHECK9, m_fEnableWorkerThreadForOpening);
00072 DDX_Check(pDX, IDC_CHECK6, m_fReportFailedPins);
00073 }
00074
00075
00076
00077 BEGIN_MESSAGE_MAP(CPPagePlayback, CPPageBase)
00078 ON_WM_HSCROLL()
00079 ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO1, IDC_RADIO2, OnBnClickedRadio12)
00080 ON_UPDATE_COMMAND_UI(IDC_EDIT1, OnUpdateLoopNum)
00081 ON_UPDATE_COMMAND_UI(IDC_STATIC1, OnUpdateLoopNum)
00082 ON_UPDATE_COMMAND_UI(IDC_COMBO1, OnUpdateAutoZoomCombo)
00083 ON_UPDATE_COMMAND_UI(IDC_COMBO2, OnUpdateDispModeCombo)
00084 END_MESSAGE_MAP()
00085
00086
00087
00088
00089 BOOL CPPagePlayback::OnInitDialog()
00090 {
00091 __super::OnInitDialog();
00092
00093 AppSettings& s = AfxGetAppSettings();
00094
00095 m_volumectrl.SetRange(1, 100);
00096 m_volumectrl.SetTicFreq(10);
00097 m_balancectrl.SetRange(0, 200);
00098 m_balancectrl.SetTicFreq(20);
00099 m_nVolume = s.nVolume;
00100 m_nBalance = s.nBalance+100;
00101 m_iLoopForever = s.fLoopForever?1:0;
00102 m_nLoops = s.nLoops;
00103 m_fRewind = s.fRewind;
00104 m_iZoomLevel = s.iZoomLevel;
00105 m_iRememberZoomLevel = s.fRememberZoomLevel;
00106
00107 m_fSetFullscreenRes = s.dmFullscreenRes.fValid;
00108 int iSel = -1;
00109 dispmode dm, dmtoset = s.dmFullscreenRes;
00110 if(!dmtoset.fValid) GetCurDispMode(dmtoset);
00111 for(int i = 0, j = 0; GetDispMode(i, dm); i++)
00112 {
00113 if(dm.bpp <= 8) continue;
00114
00115 m_dms.Add(dm);
00116
00117 CString str;
00118 str.Format(_T("%dx%d %dbpp %dHz"), dm.size.cx, dm.size.cy, dm.bpp, dm.freq);
00119 m_dispmodecombo.AddString(str);
00120
00121 if(iSel < 0 && dmtoset.fValid && dm.size == dmtoset.size
00122 && dm.bpp == dmtoset.bpp && dm.freq == dmtoset.freq)
00123 iSel = j;
00124
00125 j++;
00126 }
00127 m_dispmodecombo.SetCurSel(iSel);
00128
00129 m_fAutoloadAudio = s.fAutoloadAudio;
00130 m_fAutoloadSubtitles = s.fAutoloadSubtitles;
00131 m_fEnableWorkerThreadForOpening = s.fEnableWorkerThreadForOpening;
00132 m_fReportFailedPins = s.fReportFailedPins;
00133
00134 UpdateData(FALSE);
00135
00136 return TRUE;
00137
00138 }
00139
00140 BOOL CPPagePlayback::OnApply()
00141 {
00142 UpdateData();
00143
00144 AppSettings& s = AfxGetAppSettings();
00145
00146 s.nVolume = m_nVolume;
00147 s.nBalance = m_nBalance-100;
00148 s.fLoopForever = !!m_iLoopForever;
00149 s.nLoops = m_nLoops;
00150 s.fRewind = !!m_fRewind;
00151 s.iZoomLevel = m_iZoomLevel;
00152 s.fRememberZoomLevel = !!m_iRememberZoomLevel;
00153 int iSel = m_dispmodecombo.GetCurSel();
00154 if((s.dmFullscreenRes.fValid = !!m_fSetFullscreenRes) && iSel >= 0 && iSel < m_dms.GetCount())
00155 s.dmFullscreenRes = m_dms[m_dispmodecombo.GetCurSel()];
00156 s.fAutoloadAudio = !!m_fAutoloadAudio;
00157 s.fAutoloadSubtitles = !!m_fAutoloadSubtitles;
00158 s.fEnableWorkerThreadForOpening = !!m_fEnableWorkerThreadForOpening;
00159 s.fReportFailedPins = !!m_fReportFailedPins;
00160
00161 return __super::OnApply();
00162 }
00163
00164 LRESULT CPPagePlayback::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
00165 {
00166 if(message == WM_HSCROLL || message == WM_VSCROLL)
00167 {
00168 SetModified();
00169 }
00170
00171 return __super::DefWindowProc(message, wParam, lParam);
00172 }
00173
00174 void CPPagePlayback::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
00175 {
00176 if(*pScrollBar == m_volumectrl)
00177 {
00178 UpdateData();
00179 ((CMainFrame*)GetParentFrame())->m_wndToolBar.Volume = m_nVolume;
00180 }
00181 else if(*pScrollBar == m_balancectrl)
00182 {
00183 UpdateData();
00184 ((CMainFrame*)GetParentFrame())->SetBalance(m_nBalance-100);
00185 }
00186
00187 SetModified();
00188
00189 __super::OnHScroll(nSBCode, nPos, pScrollBar);
00190 }
00191
00192 void CPPagePlayback::OnBnClickedRadio12(UINT nID)
00193 {
00194 SetModified();
00195 }
00196
00197 void CPPagePlayback::OnUpdateLoopNum(CCmdUI* pCmdUI)
00198 {
00199 pCmdUI->Enable(!!IsDlgButtonChecked(IDC_RADIO1));
00200 }
00201
00202 void CPPagePlayback::OnUpdateAutoZoomCombo(CCmdUI* pCmdUI)
00203 {
00204 pCmdUI->Enable(!!IsDlgButtonChecked(IDC_CHECK5));
00205 }
00206
00207 void CPPagePlayback::OnUpdateDispModeCombo(CCmdUI* pCmdUI)
00208 {
00209 pCmdUI->Enable(!!IsDlgButtonChecked(IDC_CHECK4));
00210 }