// Copyright (c) 1999 Microsoft Corporation. All Rights Reserved. // AdminDlg.cpp : implementation file // #include "stdafx.h" #include "override.h" #include "COptDlg.h" #include "resource.hm" extern DWORD g_helpIDArray[][2]; extern int g_helpIDArraySize; ///////////////////////////////////////////////////////////////////////////// // COverrideDlg dialog COverrideDlg::COverrideDlg(IMSWebDVD* pDvd) { m_pDvd = pDvd; } ///////////////////////////////////////////////////////////////////////////// // CAdminDlg message handlers LRESULT COverrideDlg::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { HWND ctlAdminPasswd = GetDlgItem(IDC_EDIT_PASSWORD); ::SendMessage(ctlAdminPasswd, EM_LIMITTEXT, MAX_PASSWD, 0); HWND staticRateHigh = GetDlgItem(IDC_STATIC_RATE_HIGH); long lPlayerLevel = -1; HRESULT hr = m_pDvd->GetPlayerParentalLevel(&lPlayerLevel); if (SUCCEEDED(hr)) { TCHAR strRateHigh[MAX_PATH]; LPTSTR strRateHighTmp = LoadStringFromRes(IDS_INI_RATE_HIGH); LPTSTR strPlayerLevel = NULL; switch (lPlayerLevel) { case LEVEL_G: strPlayerLevel = LoadStringFromRes(IDS_INI_RATE_G); break; case LEVEL_PG: strPlayerLevel = LoadStringFromRes(IDS_INI_RATE_PG); break; case LEVEL_PG13: strPlayerLevel = LoadStringFromRes(IDS_INI_RATE_PG13); break; case LEVEL_R: strPlayerLevel = LoadStringFromRes(IDS_INI_RATE_R); break; default: strPlayerLevel = LoadStringFromRes(IDS_INI_RATE_ADULT); break; } wsprintf(strRateHigh, strRateHighTmp, strPlayerLevel); delete[] strRateHighTmp; delete[] strPlayerLevel; ::SetWindowText(staticRateHigh, strRateHigh); } HWND ctlList = GetDlgItem(IDC_COMBO_RATE); if (m_reason == PG_OVERRIDE_CONTENT) { ::EnableWindow(ctlList, FALSE); } else if (m_reason == PG_OVERRIDE_DVDNAV) { #if 0 long contentLevels; HRESULT hr = m_pDvd->GetTitleParentalLevels(1, &contentLevels); if (SUCCEEDED(hr)) { lPlayerLevel = GetPlayerLevelRequired(contentLevels); } else #endif { lPlayerLevel = LEVEL_ADULT; } } COptionsDlg::pg_InitRateList(ctlList, lPlayerLevel); return TRUE; } LRESULT COverrideDlg::OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { USES_CONVERSION; if (!m_pDvd) return 0; HWND ctlPassword = GetDlgItem(IDC_EDIT_PASSWORD); TCHAR szPassword[MAX_PASSWD]; ::GetWindowText(ctlPassword, szPassword, MAX_PASSWD); HRESULT hr = S_OK; if (m_reason == PG_OVERRIDE_CONTENT) { hr = m_pDvd->AcceptParentalLevelChange(VARIANT_TRUE, NULL, T2OLE(szPassword)); if (hr == E_ACCESSDENIED){ DVDMessageBox(m_hWnd, IDS_PASSWORD_INCORRECT); ::SetWindowText(ctlPassword, _T("")); ::SetFocus(ctlPassword); return 1; } } else if (m_reason == PG_OVERRIDE_DVDNAV) { HWND ctlList = GetDlgItem(IDC_COMBO_RATE); long level = (long) ::SendMessage(ctlList, CB_GETCURSEL, 0, 0) ; TCHAR szRate[MAX_RATE]; ::SendMessage(ctlList, CB_GETLBTEXT, level, (LPARAM)szRate); // Setting the player level without saving in the ini file m_pDvd->Stop(); HRESULT hr = m_pDvd->SelectParentalLevel(COptionsDlg::pg_GetLevel(szRate), NULL, T2OLE(szPassword)); if (hr == E_ACCESSDENIED){ DVDMessageBox(m_hWnd, IDS_PASSWORD_INCORRECT); ::SetWindowText(ctlPassword, _T("")); ::SetFocus(ctlPassword); return hr; } if (FAILED(hr)) { ::SetWindowText(ctlPassword, _T("")); ::SetFocus(ctlPassword); DVDMessageBox(m_hWnd, IDS_RATE_CHANGE_FAIL); return hr; } m_pDvd->Play(); } EndDialog(wID); return 0; } /*************************************************************/ /* Name: OnHelp /* Description: Display help message for a control /*************************************************************/ LRESULT COverrideDlg::OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { HELPINFO *lphi = (LPHELPINFO) lParam; HWND hwnd = (HWND) lphi->hItemHandle; DWORD_PTR contextId = lphi->dwContextId; if (contextId != 0) { if (contextId >= HIDOK) ::WinHelp(m_hWnd, TEXT("windows.hlp"), HELP_CONTEXTPOPUP, contextId); else ::WinHelp(m_hWnd, TEXT("dvdplay.hlp"), HELP_CONTEXTPOPUP, contextId); } return 0; } /*************************************************************/ /* Name: OnContextMenu /* Description: Display help message for a control /*************************************************************/ LRESULT COverrideDlg::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { bHandled = TRUE; HWND hwnd = (HWND) wParam; DWORD controlId = ::GetDlgCtrlID(hwnd); POINT pt; pt.x = GET_X_LPARAM(lParam); pt.y = GET_Y_LPARAM(lParam); if (controlId == 0) { ::ScreenToClient(hwnd, &pt); hwnd = ::ChildWindowFromPoint(hwnd, pt); controlId = ::GetDlgCtrlID(hwnd); } for (int i=0; iAcceptParentalLevelChange(VARIANT_FALSE, NULL, L""); EndDialog(wID); DVDMessageBox(m_hWnd, IDS_RATE_TOO_LOW, NULL, MB_OK|MB_HELP); return 0; } long COverrideDlg::GetPlayerLevelRequired(long contentLevels) { if (contentLevels & DVD_PARENTAL_LEVEL_8) return LEVEL_ADULT; else if (contentLevels & DVD_PARENTAL_LEVEL_7) return LEVEL_NC17; else if (contentLevels & DVD_PARENTAL_LEVEL_6) return LEVEL_R; else if (contentLevels & DVD_PARENTAL_LEVEL_5) return LEVEL_R; else if (contentLevels & DVD_PARENTAL_LEVEL_4) return LEVEL_PG13; else if (contentLevels & DVD_PARENTAL_LEVEL_3) return LEVEL_PG; else if (contentLevels & DVD_PARENTAL_LEVEL_2) return LEVEL_PG; else return LEVEL_G; }