PPageDVD.cpp
上传用户:tangyu_668
上传日期:2014-02-27
资源大小:678k
文件大小:8k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2006 Gabest
  3.  * http://www.gabest.org
  4.  *
  5.  *  This Program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2, or (at your option)
  8.  *  any later version.
  9.  *   
  10.  *  This Program is distributed in the hope that it will be useful,
  11.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13.  *  GNU General Public License for more details.
  14.  *   
  15.  *  You should have received a copy of the GNU General Public License
  16.  *  along with GNU Make; see the file COPYING.  If not, write to
  17.  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
  18.  *  http://www.gnu.org/copyleft/gpl.html
  19.  *
  20.  */
  21. // PPageDVD.cpp : implementation file
  22. //
  23. #include "stdafx.h"
  24. #include "mplayerc.h"
  25. #include "PPageDVD.h"
  26. struct
  27. {
  28. LCID lcid;
  29. LPCSTR name;
  30. LCIDNameList[] =
  31. {
  32. {0x0000, "Default"},
  33. {0x0436, "Afrikaans"},
  34. {0x041c, "Albanian"},
  35. {0x0401, "Arabic (Saudi Arabia)"},
  36. {0x0801, "Arabic (Iraq)"},
  37. {0x0c01, "Arabic (Egypt)"},
  38. {0x1001, "Arabic (Libya)"},
  39. {0x1401, "Arabic (Algeria)"},
  40. {0x1801, "Arabic (Morocco)"},
  41. {0x1c01, "Arabic (Tunisia)"},
  42. {0x2001, "Arabic (Oman)"},
  43. {0x2401, "Arabic (Yemen)"},
  44. {0x2801, "Arabic (Syria)"},
  45. {0x2c01, "Arabic (Jordan)"},
  46. {0x3001, "Arabic (Lebanon)"},
  47. {0x3401, "Arabic (Kuwait)"},
  48. {0x3801, "Arabic (U.A.E.)"},
  49. {0x3c01, "Arabic (Bahrain)"},
  50. {0x4001, "Arabic (Qatar)"},
  51. {0x042b, "Armenian"},
  52. {0x042c, "Azeri (Latin)"},
  53. {0x082c, "Azeri (Cyrillic)"},
  54. {0x042d, "Basque"},
  55. {0x0423, "Belarusian"},
  56. {0x0402, "Bulgarian"},
  57. {0x0455, "Burmese"},
  58. {0x0403, "Catalan"},
  59. {0x0404, "Chinese (Taiwan)"},
  60. {0x0804, "Chinese (PRC)"},
  61. {0x0c04, "Chinese (Hong Kong SAR, PRC)"},
  62. {0x1004, "Chinese (Singapore)"},
  63. {0x1404, "Chinese (Macau SAR)"},
  64. {0x041a, "Croatian"},
  65. {0x0405, "Czech"},
  66. {0x0406, "Danish"},
  67. {0x0465, "Divehi"},
  68. {0x0413, "Dutch (Netherlands)"},
  69. {0x0813, "Dutch (Belgium)"},
  70. {0x0409, "English (United States)"},
  71. {0x0809, "English (United Kingdom)"},
  72. {0x0c09, "English (Australian)"},
  73. {0x1009, "English (Canadian)"},
  74. {0x1409, "English (New Zealand)"},
  75. {0x1809, "English (Ireland)"},
  76. {0x1c09, "English (South Africa)"},
  77. {0x2009, "English (Jamaica)"},
  78. {0x2409, "English (Caribbean)"},
  79. {0x2809, "English (Belize)"},
  80. {0x2c09, "English (Trinidad)"},
  81. {0x3009, "English (Zimbabwe)"},
  82. {0x3409, "English (Philippines)"},
  83. {0x0425, "Estonian"},
  84. {0x0438, "Faeroese"},
  85. {0x0429, "Farsi"},
  86. {0x040b, "Finnish"},
  87. {0x040c, "French (Standard)"},
  88. {0x080c, "French (Belgian)"},
  89. {0x0c0c, "French (Canadian)"},
  90. {0x100c, "French (Switzerland)"},
  91. {0x140c, "French (Luxembourg)"},
  92. {0x180c, "French (Monaco)"},
  93. {0x0456, "Galician"},
  94. {0x0437, "Georgian"},
  95. {0x0407, "German (Standard)"},
  96. {0x0807, "German (Switzerland)"},
  97. {0x0c07, "German (Austria)"},
  98. {0x1007, "German (Luxembourg)"},
  99. {0x1407, "German (Liechtenstein)"},
  100. {0x0408, "Greek"},
  101. {0x0447, "Gujarati"},
  102. {0x040d, "Hebrew"},
  103. {0x0439, "Hindi"},
  104. {0x040e, "Hungarian"},
  105. {0x040f, "Icelandic"},
  106. {0x0421, "Indonesian"},
  107. {0x0410, "Italian (Standard)"},
  108. {0x0810, "Italian (Switzerland)"},
  109. {0x0411, "Japanese"},
  110. {0x044b, "Kannada"},
  111. {0x0457, "Konkani"},
  112. {0x0412, "Korean"},
  113. {0x0812, "Korean (Johab)"},
  114. {0x0440, "Kyrgyz"},
  115. {0x0426, "Latvian"},
  116. {0x0427, "Lithuanian"},
  117. {0x0827, "Lithuanian (Classic)"},
  118. {0x042f, "FYRO Macedonian"},
  119. {0x043e, "Malay (Malaysian)"},
  120. {0x083e, "Malay (Brunei Darussalam)"},
  121. {0x044e, "Marathi"},
  122. {0x0450, "Mongolian"},
  123. {0x0414, "Norwegian (Bokmal)"},
  124. {0x0814, "Norwegian (Nynorsk)"},
  125. {0x0415, "Polish"},
  126. {0x0416, "Portuguese (Brazil)"},
  127. {0x0816, "Portuguese (Portugal)"},
  128. {0x0446, "Punjabi"},
  129. {0x0418, "Romanian"},
  130. {0x0419, "Russian"},
  131. {0x044f, "Sanskrit"},
  132. {0x0c1a, "Serbian (Cyrillic)"},
  133. {0x081a, "Serbian (Latin)"},
  134. {0x041b, "Slovak"},
  135. {0x0424, "Slovenian"},
  136. {0x040a, "Spanish (Spain, Traditional Sort)"},
  137. {0x080a, "Spanish (Mexican)"},
  138. {0x0c0a, "Spanish (Spain, International Sort)"},
  139. {0x100a, "Spanish (Guatemala)"},
  140. {0x140a, "Spanish (Costa Rica)"},
  141. {0x180a, "Spanish (Panama)"},
  142. {0x1c0a, "Spanish (Dominican Republic)"},
  143. {0x200a, "Spanish (Venezuela)"},
  144. {0x240a, "Spanish (Colombia)"},
  145. {0x280a, "Spanish (Peru)"},
  146. {0x2c0a, "Spanish (Argentina)"},
  147. {0x300a, "Spanish (Ecuador)"},
  148. {0x340a, "Spanish (Chile)"},
  149. {0x380a, "Spanish (Uruguay)"},
  150. {0x3c0a, "Spanish (Paraguay)"},
  151. {0x400a, "Spanish (Bolivia)"},
  152. {0x440a, "Spanish (El Salvador)"},
  153. {0x480a, "Spanish (Honduras)"},
  154. {0x4c0a, "Spanish (Nicaragua)"},
  155. {0x500a, "Spanish (Puerto Rico)"},
  156. {0x0430, "Sutu"},
  157. {0x0441, "Swahili (Kenya)"},
  158. {0x041d, "Swedish"},
  159. {0x081d, "Swedish (Finland)"},
  160. {0x045a, "Syriac"},
  161. {0x0449, "Tamil"},
  162. {0x0444, "Tatar (Tatarstan)"},
  163. {0x044a, "Telugu"},
  164. {0x041e, "Thai"},
  165. {0x041f, "Turkish"},
  166. {0x0422, "Ukrainian"},
  167. {0x0420, "Urdu (Pakistan)"},
  168. {0x0820, "Urdu (India)"},
  169. {0x0443, "Uzbek (Latin)"},
  170. {0x0843, "Uzbek (Cyrillic)"},
  171. {0x042a, "Vietnamese"}
  172. };
  173. // CPPageDVD dialog
  174. IMPLEMENT_DYNAMIC(CPPageDVD, CPPageBase)
  175. CPPageDVD::CPPageDVD()
  176. : CPPageBase(CPPageDVD::IDD, CPPageDVD::IDD)
  177. , m_iDVDLocation(0)
  178. , m_iDVDLangType(0)
  179. , m_dvdpath(_T(""))
  180. , m_fAutoSpeakerConf(FALSE)
  181. {
  182. }
  183. CPPageDVD::~CPPageDVD()
  184. {
  185. }
  186. void CPPageDVD::DoDataExchange(CDataExchange* pDX)
  187. {
  188. __super::DoDataExchange(pDX);
  189. DDX_Radio(pDX, IDC_RADIO1, m_iDVDLocation);
  190. DDX_Radio(pDX, IDC_RADIO3, m_iDVDLangType);
  191. DDX_Control(pDX, IDC_LIST1, m_lcids);
  192. DDX_Text(pDX, IDC_DVDPATH, m_dvdpath);
  193. DDX_Control(pDX, IDC_DVDPATH, m_dvdpathctrl);
  194. DDX_Control(pDX, IDC_BUTTON1, m_dvdpathselctrl);
  195. DDX_Check(pDX, IDC_CHECK1, m_fAutoSpeakerConf);
  196. }
  197. void CPPageDVD::UpdateLCIDList()
  198. {
  199. UpdateData();
  200. LCID lcid = m_iDVDLangType == 0 ? m_idMenuLang
  201. : m_iDVDLangType == 1 ? m_idAudioLang
  202. : m_idSubtitlesLang;
  203. for(int i = 0; i < m_lcids.GetCount(); i++)
  204. {
  205. if(m_lcids.GetItemData(i) == lcid)
  206. {
  207. m_lcids.SetCurSel(i);
  208. m_lcids.SetTopIndex(i);
  209. break;
  210. }
  211. }
  212. }
  213. BEGIN_MESSAGE_MAP(CPPageDVD, CPPageBase)
  214. ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
  215. ON_CONTROL_RANGE(BN_CLICKED, IDC_RADIO3, IDC_RADIO5, OnBnClickedLangradio123)
  216. ON_LBN_SELCHANGE(IDC_LIST1, OnLbnSelchangeList1)
  217. ON_UPDATE_COMMAND_UI(IDC_DVDPATH, OnUpdateDVDPath)
  218. ON_UPDATE_COMMAND_UI(IDC_BUTTON1, OnUpdateDVDPath)
  219. END_MESSAGE_MAP()
  220. // CPPageDVD message handlers
  221. BOOL CPPageDVD::OnInitDialog()
  222. {
  223. __super::OnInitDialog();
  224. AppSettings& s = AfxGetAppSettings();
  225. m_iDVDLocation = s.fUseDVDPath ? 1 : 0;
  226. m_dvdpath = s.sDVDPath;
  227. m_iDVDLangType = 0;
  228. m_idMenuLang = s.idMenuLang;
  229. m_idAudioLang = s.idAudioLang;
  230. m_idSubtitlesLang = s.idSubtitlesLang;
  231. m_fAutoSpeakerConf = s.fAutoSpeakerConf;
  232. UpdateData(FALSE);
  233. for(int i = 0; i < countof(LCIDNameList); i++)
  234. {
  235. m_lcids.AddString(CString(LCIDNameList[i].name));
  236. m_lcids.SetItemData(i, LCIDNameList[i].lcid);
  237. }
  238. UpdateLCIDList();
  239. return TRUE;  // return TRUE unless you set the focus to a control
  240. // EXCEPTION: OCX Property Pages should return FALSE
  241. }
  242. BOOL CPPageDVD::OnApply()
  243. {
  244. UpdateData();
  245. AppSettings& s = AfxGetAppSettings();
  246. s.sDVDPath = m_dvdpath;
  247. s.fUseDVDPath = (m_iDVDLocation == 1);
  248. s.idMenuLang = m_idMenuLang;
  249. s.idAudioLang = m_idAudioLang;
  250. s.idSubtitlesLang = m_idSubtitlesLang;
  251. s.fAutoSpeakerConf = !!m_fAutoSpeakerConf;
  252. return __super::OnApply();
  253. }
  254. void CPPageDVD::OnBnClickedButton1()
  255. {
  256. TCHAR path[MAX_PATH];
  257. BROWSEINFO bi;
  258. bi.hwndOwner = m_hWnd;
  259. bi.pidlRoot = NULL;
  260. bi.pszDisplayName = path;
  261. bi.lpszTitle = _T("Select the path for the DVD:");
  262. bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_VALIDATE | BIF_USENEWUI | BIF_NONEWFOLDERBUTTON;
  263. bi.lpfn = NULL;
  264. bi.lParam = 0;
  265. bi.iImage = 0; 
  266. LPITEMIDLIST iil;
  267. if(iil = SHBrowseForFolder(&bi))
  268. {
  269. SHGetPathFromIDList(iil, path);
  270. m_dvdpath = path;
  271. UpdateData(FALSE);
  272. SetModified();
  273. }
  274. }
  275. void CPPageDVD::OnBnClickedLangradio123(UINT nID)
  276. {
  277. UpdateLCIDList();
  278. }
  279. void CPPageDVD::OnLbnSelchangeList1()
  280. {
  281. LCID& lcid = m_iDVDLangType == 0 ? m_idMenuLang
  282. : m_iDVDLangType == 1 ? m_idAudioLang
  283. : m_idSubtitlesLang;
  284. lcid = m_lcids.GetItemData(m_lcids.GetCurSel());
  285. SetModified();
  286. }
  287. void CPPageDVD::OnUpdateDVDPath(CCmdUI* pCmdUI)
  288. {
  289. UpdateData();
  290. pCmdUI->Enable(m_iDVDLocation == 1);
  291. }