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 "PPageDVD.h"
00028
00029 struct
00030 {
00031 LCID lcid;
00032 TCHAR name[64];
00033 }
00034 LCIDNameList[] =
00035 {
00036 {0x0000, _T("Default")},
00037 {0x0436, _T("Afrikaans")},
00038 {0x041c, _T("Albanian")},
00039 {0x0401, _T("Arabic (Saudi Arabia)")},
00040 {0x0801, _T("Arabic (Iraq)")},
00041 {0x0c01, _T("Arabic (Egypt)")},
00042 {0x1001, _T("Arabic (Libya)")},
00043 {0x1401, _T("Arabic (Algeria)")},
00044 {0x1801, _T("Arabic (Morocco)")},
00045 {0x1c01, _T("Arabic (Tunisia)")},
00046 {0x2001, _T("Arabic (Oman)")},
00047 {0x2401, _T("Arabic (Yemen)")},
00048 {0x2801, _T("Arabic (Syria)")},
00049 {0x2c01, _T("Arabic (Jordan)")},
00050 {0x3001, _T("Arabic (Lebanon)")},
00051 {0x3401, _T("Arabic (Kuwait)")},
00052 {0x3801, _T("Arabic (U.A.E.)")},
00053 {0x3c01, _T("Arabic (Bahrain)")},
00054 {0x4001, _T("Arabic (Qatar)")},
00055 {0x042b, _T("Armenian")},
00056 {0x042c, _T("Azeri (Latin)")},
00057 {0x082c, _T("Azeri (Cyrillic)")},
00058 {0x042d, _T("Basque")},
00059 {0x0423, _T("Belarusian")},
00060 {0x0402, _T("Bulgarian")},
00061 {0x0455, _T("Burmese")},
00062 {0x0403, _T("Catalan")},
00063 {0x0404, _T("Chinese (Taiwan)")},
00064 {0x0804, _T("Chinese (PRC)")},
00065 {0x0c04, _T("Chinese (Hong Kong SAR, PRC)")},
00066 {0x1004, _T("Chinese (Singapore)")},
00067 {0x1404, _T("Chinese (Macau SAR)")},
00068 {0x041a, _T("Croatian")},
00069 {0x0405, _T("Czech")},
00070 {0x0406, _T("Danish")},
00071 {0x0465, _T("Divehi")},
00072 {0x0413, _T("Dutch (Netherlands)")},
00073 {0x0813, _T("Dutch (Belgium)")},
00074 {0x0409, _T("English (United States)")},
00075 {0x0809, _T("English (United Kingdom)")},
00076 {0x0c09, _T("English (Australian)")},
00077 {0x1009, _T("English (Canadian)")},
00078 {0x1409, _T("English (New Zealand)")},
00079 {0x1809, _T("English (Ireland)")},
00080 {0x1c09, _T("English (South Africa)")},
00081 {0x2009, _T("English (Jamaica)")},
00082 {0x2409, _T("English (Caribbean)")},
00083 {0x2809, _T("English (Belize)")},
00084 {0x2c09, _T("English (Trinidad)")},
00085 {0x3009, _T("English (Zimbabwe)")},
00086 {0x3409, _T("English (Philippines)")},
00087 {0x0425, _T("Estonian")},
00088 {0x0438, _T("Faeroese")},
00089 {0x0429, _T("Farsi")},
00090 {0x040b, _T("Finnish")},
00091 {0x040c, _T("French (Standard)")},
00092 {0x080c, _T("French (Belgian)")},
00093 {0x0c0c, _T("French (Canadian)")},
00094 {0x100c, _T("French (Switzerland)")},
00095 {0x140c, _T("French (Luxembourg)")},
00096 {0x180c, _T("French (Monaco)")},
00097 {0x0456, _T("Galician")},
00098 {0x0437, _T("Georgian")},
00099 {0x0407, _T("German (Standard)")},
00100 {0x0807, _T("German (Switzerland)")},
00101 {0x0c07, _T("German (Austria)")},
00102 {0x1007, _T("German (Luxembourg)")},
00103 {0x1407, _T("German (Liechtenstein)")},
00104 {0x0408, _T("Greek")},
00105 {0x0447, _T("Gujarati")},
00106 {0x040d, _T("Hebrew")},
00107 {0x0439, _T("Hindi")},
00108 {0x040e, _T("Hungarian")},
00109 {0x040f, _T("Icelandic")},
00110 {0x0421, _T("Indonesian")},
00111 {0x0410, _T("Italian (Standard)")},
00112 {0x0810, _T("Italian (Switzerland)")},
00113 {0x0411, _T("Japanese")},
00114 {0x044b, _T("Kannada")},
00115 {0x0457, _T("Konkani")},
00116 {0x0412, _T("Korean")},
00117 {0x0812, _T("Korean (Johab)")},
00118 {0x0440, _T("Kyrgyz")},
00119 {0x0426, _T("Latvian")},
00120 {0x0427, _T("Lithuanian")},
00121 {0x0827, _T("Lithuanian (Classic)")},
00122 {0x042f, _T("FYRO Macedonian")},
00123 {0x043e, _T("Malay (Malaysian)")},
00124 {0x083e, _T("Malay (Brunei Darussalam)")},
00125 {0x044e, _T("Marathi")},
00126 {0x0450, _T("Mongolian")},
00127 {0x0414, _T("Norwegian (Bokmal)")},
00128 {0x0814, _T("Norwegian (Nynorsk)")},
00129 {0x0415, _T("Polish")},
00130 {0x0416, _T("Portuguese (Brazil)")},
00131 {0x0816, _T("Portuguese (Portugal)")},
00132 {0x0446, _T("Punjabi")},
00133 {0x0418, _T("Romanian")},
00134 {0x0419, _T("Russian")},
00135 {0x044f, _T("Sanskrit")},
00136 {0x0c1a, _T("Serbian (Cyrillic)")},
00137 {0x081a, _T("Serbian (Latin)")},
00138 {0x041b, _T("Slovak")},
00139 {0x0424, _T("Slovenian")},
00140 {0x040a, _T("Spanish (Spain, Traditional Sort)")},
00141 {0x080a, _T("Spanish (Mexican)")},
00142 {0x0c0a, _T("Spanish (Spain, International Sort)")},
00143 {0x100a, _T("Spanish (Guatemala)")},
00144 {0x140a, _T("Spanish (Costa Rica)")},
00145 {0x180a, _T("Spanish (Panama)")},
00146 {0x1c0a, _T("Spanish (Dominican Republic)")},
00147 {0x200a, _T("Spanish (Venezuela)")},
00148 {0x240a, _T("Spanish (Colombia)")},
00149 {0x280a, _T("Spanish (Peru)")},
00150 {0x2c0a, _T("Spanish (Argentina)")},
00151 {0x300a, _T("Spanish (Ecuador)")},
00152 {0x340a, _T("Spanish (Chile)")},
00153 {0x380a, _T("Spanish (Uruguay)")},
00154 {0x3c0a, _T("Spanish (Paraguay)")},
00155 {0x400a, _T("Spanish (Bolivia)")},
00156 {0x440a, _T("Spanish (El Salvador)")},
00157 {0x480a, _T("Spanish (Honduras)")},
00158 {0x4c0a, _T("Spanish (Nicaragua)")},
00159 {0x500a, _T("Spanish (Puerto Rico)")},
00160 {0x0430, _T("Sutu")},
00161 {0x0441, _T("Swahili (Kenya)")},
00162 {0x041d, _T("Swedish")},
00163 {0x081d, _T("Swedish (Finland)")},
00164 {0x045a, _T("Syriac")},
00165 {0x0449, _T("Tamil")},
00166 {0x0444, _T("Tatar (Tatarstan)")},
00167 {0x044a, _T("Telugu")},
00168 {0x041e, _T("Thai")},
00169 {0x041f, _T("Turkish")},
00170 {0x0422, _T("Ukrainian")},
00171 {0x0420, _T("Urdu (Pakistan)")},
00172 {0x0820, _T("Urdu (India)")},
00173 {0x0443, _T("Uzbek (Latin)")},
00174 {0x0843, _T("Uzbek (Cyrillic)")},
00175 {0x042a, _T("Vietnamese")}
00176 };
00177
00178
00179
00180
00181 IMPLEMENT_DYNAMIC(CPPageDVD, CPPageBase)
00182 CPPageDVD::CPPageDVD()
00183 : CPPageBase(CPPageDVD::IDD, CPPageDVD::IDD)
00184 , m_iDVDLocation(0)
00185 , m_iDVDLangType(0)
00186 , m_dvdpath(_T(""))
00187 , m_fAutoSpeakerConf(FALSE)
00188 {
00189 }
00190
00191 CPPageDVD::~CPPageDVD()
00192 {
00193 }
00194
00195 void CPPageDVD::DoDataExchange(CDataExchange* pDX)
00196 {
00197 __super::DoDataExchange(pDX);
00198 DDX_Radio(pDX, IDC_LOCRADIO1, m_iDVDLocation);
00199 DDX_Radio(pDX, IDC_LANGRADIO1, m_iDVDLangType);
00200 DDX_Control(pDX, IDC_LIST1, m_lcids);
00201 DDX_Text(pDX, IDC_DVDPATH, m_dvdpath);
00202 DDX_Control(pDX, IDC_DVDPATH, m_dvdpathctrl);
00203 DDX_Control(pDX, IDC_BUTTON1, m_dvdpathselctrl);
00204 DDX_Check(pDX, IDC_CHECK1, m_fAutoSpeakerConf);
00205 }
00206
00207 void CPPageDVD::UpdateLCIDList()
00208 {
00209 UpdateData();
00210
00211 LCID lcid = m_iDVDLangType == 0 ? m_idMenuLang
00212 : m_iDVDLangType == 1 ? m_idAudioLang
00213 : m_idSubtitlesLang;
00214
00215 for(int i = 0; i < m_lcids.GetCount(); i++)
00216 {
00217 if(m_lcids.GetItemData(i) == lcid)
00218 {
00219 m_lcids.SetCurSel(i);
00220 m_lcids.SetTopIndex(i);
00221 break;
00222 }
00223 }
00224 }
00225
00226 BEGIN_MESSAGE_MAP(CPPageDVD, CPPageBase)
00227 ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
00228 ON_CONTROL_RANGE(BN_CLICKED, IDC_LANGRADIO1, IDC_LANGRADIO3, OnBnClickedLangradio123)
00229 ON_LBN_SELCHANGE(IDC_LIST1, OnLbnSelchangeList1)
00230 ON_UPDATE_COMMAND_UI(IDC_DVDPATH, OnUpdateDVDPath)
00231 ON_UPDATE_COMMAND_UI(IDC_BUTTON1, OnUpdateDVDPath)
00232 END_MESSAGE_MAP()
00233
00234
00235
00236
00237 BOOL CPPageDVD::OnInitDialog()
00238 {
00239 __super::OnInitDialog();
00240
00241 AppSettings& s = AfxGetAppSettings();
00242
00243 m_iDVDLocation = s.fUseDVDPath ? 1 : 0;
00244 m_dvdpath = s.sDVDPath;
00245 m_iDVDLangType = 0;
00246
00247 m_idMenuLang = s.idMenuLang;
00248 m_idAudioLang = s.idAudioLang;
00249 m_idSubtitlesLang = s.idSubtitlesLang;
00250 m_fAutoSpeakerConf = s.fAutoSpeakerConf;
00251
00252 UpdateData(FALSE);
00253
00254 for(int i = 0; i < countof(LCIDNameList); i++)
00255 {
00256 m_lcids.AddString(LCIDNameList[i].name);
00257 m_lcids.SetItemData(i, LCIDNameList[i].lcid);
00258 }
00259
00260 UpdateLCIDList();
00261
00262 return TRUE;
00263
00264 }
00265
00266 BOOL CPPageDVD::OnApply()
00267 {
00268 UpdateData();
00269
00270 AppSettings& s = AfxGetAppSettings();
00271
00272 s.sDVDPath = m_dvdpath;
00273 s.fUseDVDPath = (m_iDVDLocation == 1);
00274 s.idMenuLang = m_idMenuLang;
00275 s.idAudioLang = m_idAudioLang;
00276 s.idSubtitlesLang = m_idSubtitlesLang;
00277 s.fAutoSpeakerConf = !!m_fAutoSpeakerConf;
00278
00279 return __super::OnApply();
00280 }
00281
00282 void CPPageDVD::OnBnClickedButton1()
00283 {
00284 TCHAR path[MAX_PATH];
00285
00286 BROWSEINFO bi;
00287 bi.hwndOwner = m_hWnd;
00288 bi.pidlRoot = NULL;
00289 bi.pszDisplayName = path;
00290 bi.lpszTitle = _T("Select the path for the DVD:");
00291 bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_VALIDATE | BIF_USENEWUI | BIF_NONEWFOLDERBUTTON;
00292 bi.lpfn = NULL;
00293 bi.lParam = 0;
00294 bi.iImage = 0;
00295
00296 LPITEMIDLIST iil;
00297 if(iil = SHBrowseForFolder(&bi))
00298 {
00299 SHGetPathFromIDList(iil, path);
00300 m_dvdpath = path;
00301
00302 UpdateData(FALSE);
00303
00304 SetModified();
00305 }
00306 }
00307
00308 void CPPageDVD::OnBnClickedLangradio123(UINT nID)
00309 {
00310 UpdateLCIDList();
00311 }
00312
00313 void CPPageDVD::OnLbnSelchangeList1()
00314 {
00315 LCID& lcid = m_iDVDLangType == 0 ? m_idMenuLang
00316 : m_iDVDLangType == 1 ? m_idAudioLang
00317 : m_idSubtitlesLang;
00318
00319 lcid = m_lcids.GetItemData(m_lcids.GetCurSel());
00320
00321 SetModified();
00322 }
00323
00324 void CPPageDVD::OnUpdateDVDPath(CCmdUI* pCmdUI)
00325 {
00326 UpdateData();
00327 pCmdUI->Enable(m_iDVDLocation == 1);
00328 }