PPageDVD.cpp
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:9k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /* 
  2.  * Copyright (C) 2003-2005 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. TCHAR name[64];
  30. LCIDNameList[] =
  31. {
  32. {0x0000, _T("Default")},
  33. {0x0436, _T("Afrikaans")},
  34. {0x041c, _T("Albanian")},
  35. {0x0401, _T("Arabic (Saudi Arabia)")},
  36. {0x0801, _T("Arabic (Iraq)")},
  37. {0x0c01, _T("Arabic (Egypt)")},
  38. {0x1001, _T("Arabic (Libya)")},
  39. {0x1401, _T("Arabic (Algeria)")},
  40. {0x1801, _T("Arabic (Morocco)")},
  41. {0x1c01, _T("Arabic (Tunisia)")},
  42. {0x2001, _T("Arabic (Oman)")},
  43. {0x2401, _T("Arabic (Yemen)")},
  44. {0x2801, _T("Arabic (Syria)")},
  45. {0x2c01, _T("Arabic (Jordan)")},
  46. {0x3001, _T("Arabic (Lebanon)")},
  47. {0x3401, _T("Arabic (Kuwait)")},
  48. {0x3801, _T("Arabic (U.A.E.)")},
  49. {0x3c01, _T("Arabic (Bahrain)")},
  50. {0x4001, _T("Arabic (Qatar)")},
  51. {0x042b, _T("Armenian")},
  52. {0x042c, _T("Azeri (Latin)")},
  53. {0x082c, _T("Azeri (Cyrillic)")},
  54. {0x042d, _T("Basque")},
  55. {0x0423, _T("Belarusian")},
  56. {0x0402, _T("Bulgarian")},
  57. {0x0455, _T("Burmese")},
  58. {0x0403, _T("Catalan")},
  59. {0x0404, _T("Chinese (Taiwan)")},
  60. {0x0804, _T("Chinese (PRC)")},
  61. {0x0c04, _T("Chinese (Hong Kong SAR, PRC)")},
  62. {0x1004, _T("Chinese (Singapore)")},
  63. {0x1404, _T("Chinese (Macau SAR)")},
  64. {0x041a, _T("Croatian")},
  65. {0x0405, _T("Czech")},
  66. {0x0406, _T("Danish")},
  67. {0x0465, _T("Divehi")},
  68. {0x0413, _T("Dutch (Netherlands)")},
  69. {0x0813, _T("Dutch (Belgium)")},
  70. {0x0409, _T("English (United States)")},
  71. {0x0809, _T("English (United Kingdom)")},
  72. {0x0c09, _T("English (Australian)")},
  73. {0x1009, _T("English (Canadian)")},
  74. {0x1409, _T("English (New Zealand)")},
  75. {0x1809, _T("English (Ireland)")},
  76. {0x1c09, _T("English (South Africa)")},
  77. {0x2009, _T("English (Jamaica)")},
  78. {0x2409, _T("English (Caribbean)")},
  79. {0x2809, _T("English (Belize)")},
  80. {0x2c09, _T("English (Trinidad)")},
  81. {0x3009, _T("English (Zimbabwe)")},
  82. {0x3409, _T("English (Philippines)")},
  83. {0x0425, _T("Estonian")},
  84. {0x0438, _T("Faeroese")},
  85. {0x0429, _T("Farsi")},
  86. {0x040b, _T("Finnish")},
  87. {0x040c, _T("French (Standard)")},
  88. {0x080c, _T("French (Belgian)")},
  89. {0x0c0c, _T("French (Canadian)")},
  90. {0x100c, _T("French (Switzerland)")},
  91. {0x140c, _T("French (Luxembourg)")},
  92. {0x180c, _T("French (Monaco)")},
  93. {0x0456, _T("Galician")},
  94. {0x0437, _T("Georgian")},
  95. {0x0407, _T("German (Standard)")},
  96. {0x0807, _T("German (Switzerland)")},
  97. {0x0c07, _T("German (Austria)")},
  98. {0x1007, _T("German (Luxembourg)")},
  99. {0x1407, _T("German (Liechtenstein)")},
  100. {0x0408, _T("Greek")},
  101. {0x0447, _T("Gujarati")},
  102. {0x040d, _T("Hebrew")},
  103. {0x0439, _T("Hindi")},
  104. {0x040e, _T("Hungarian")},
  105. {0x040f, _T("Icelandic")},
  106. {0x0421, _T("Indonesian")},
  107. {0x0410, _T("Italian (Standard)")},
  108. {0x0810, _T("Italian (Switzerland)")},
  109. {0x0411, _T("Japanese")},
  110. {0x044b, _T("Kannada")},
  111. {0x0457, _T("Konkani")},
  112. {0x0412, _T("Korean")},
  113. {0x0812, _T("Korean (Johab)")},
  114. {0x0440, _T("Kyrgyz")},
  115. {0x0426, _T("Latvian")},
  116. {0x0427, _T("Lithuanian")},
  117. {0x0827, _T("Lithuanian (Classic)")},
  118. {0x042f, _T("FYRO Macedonian")},
  119. {0x043e, _T("Malay (Malaysian)")},
  120. {0x083e, _T("Malay (Brunei Darussalam)")},
  121. {0x044e, _T("Marathi")},
  122. {0x0450, _T("Mongolian")},
  123. {0x0414, _T("Norwegian (Bokmal)")},
  124. {0x0814, _T("Norwegian (Nynorsk)")},
  125. {0x0415, _T("Polish")},
  126. {0x0416, _T("Portuguese (Brazil)")},
  127. {0x0816, _T("Portuguese (Portugal)")},
  128. {0x0446, _T("Punjabi")},
  129. {0x0418, _T("Romanian")},
  130. {0x0419, _T("Russian")},
  131. {0x044f, _T("Sanskrit")},
  132. {0x0c1a, _T("Serbian (Cyrillic)")},
  133. {0x081a, _T("Serbian (Latin)")},
  134. {0x041b, _T("Slovak")},
  135. {0x0424, _T("Slovenian")},
  136. {0x040a, _T("Spanish (Spain, Traditional Sort)")},
  137. {0x080a, _T("Spanish (Mexican)")},
  138. {0x0c0a, _T("Spanish (Spain, International Sort)")},
  139. {0x100a, _T("Spanish (Guatemala)")},
  140. {0x140a, _T("Spanish (Costa Rica)")},
  141. {0x180a, _T("Spanish (Panama)")},
  142. {0x1c0a, _T("Spanish (Dominican Republic)")},
  143. {0x200a, _T("Spanish (Venezuela)")},
  144. {0x240a, _T("Spanish (Colombia)")},
  145. {0x280a, _T("Spanish (Peru)")},
  146. {0x2c0a, _T("Spanish (Argentina)")},
  147. {0x300a, _T("Spanish (Ecuador)")},
  148. {0x340a, _T("Spanish (Chile)")},
  149. {0x380a, _T("Spanish (Uruguay)")},
  150. {0x3c0a, _T("Spanish (Paraguay)")},
  151. {0x400a, _T("Spanish (Bolivia)")},
  152. {0x440a, _T("Spanish (El Salvador)")},
  153. {0x480a, _T("Spanish (Honduras)")},
  154. {0x4c0a, _T("Spanish (Nicaragua)")},
  155. {0x500a, _T("Spanish (Puerto Rico)")},
  156. {0x0430, _T("Sutu")},
  157. {0x0441, _T("Swahili (Kenya)")},
  158. {0x041d, _T("Swedish")},
  159. {0x081d, _T("Swedish (Finland)")},
  160. {0x045a, _T("Syriac")},
  161. {0x0449, _T("Tamil")},
  162. {0x0444, _T("Tatar (Tatarstan)")},
  163. {0x044a, _T("Telugu")},
  164. {0x041e, _T("Thai")},
  165. {0x041f, _T("Turkish")},
  166. {0x0422, _T("Ukrainian")},
  167. {0x0420, _T("Urdu (Pakistan)")},
  168. {0x0820, _T("Urdu (India)")},
  169. {0x0443, _T("Uzbek (Latin)")},
  170. {0x0843, _T("Uzbek (Cyrillic)")},
  171. {0x042a, _T("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_LOCRADIO1, m_iDVDLocation);
  190. DDX_Radio(pDX, IDC_LANGRADIO1, 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_LANGRADIO1, IDC_LANGRADIO3, 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(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. }