/****************************************************************************\ * * introdlg.cpp * * Created: William Taylor (wtaylor) 01/22/01 * * MS Ratings Introduction Property Page * \****************************************************************************/ #include "msrating.h" #include "mslubase.h" #include "parselbl.h" #include "picsrule.h" #include "introdlg.h" // CIntroDialog #include "toffdlg.h" // CTurnOffDialog #include "hint.h" // CHint #include "debug.h" // TraceMsg() #include // Help Context ID's #include // SHWinHelpOnDemandWrap() and MLLoadStringA() extern INT_PTR DoPasswordConfirm(HWND hDlg); extern BOOL PicsOptionsDialog( HWND hwnd, PicsRatingSystemInfo * pPRSI, PicsUser * pPU ); const UINT PASSCONFIRM_FAIL = 0; const UINT PASSCONFIRM_OK = 1; const UINT PASSCONFIRM_NEW = 2; DWORD CIntroDialog::aIds[] = { IDC_SET_RATINGS, IDH_RATINGS_SET_RATINGS_BUTTON, IDC_STATIC1, IDH_IGNORE, IDC_TURN_ONOFF, IDH_RATINGS_TURNON_BUTTON, IDC_INTRO_TEXT, IDH_IGNORE, 0,0 }; CIntroDialog::CIntroDialog() { // Add Construction Here... } LRESULT CIntroDialog::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { CheckGlobalInfoRev(); EnableDlgItems(); bHandled = FALSE; return 1L; // Let the system set the focus } LRESULT CIntroDialog::OnSetRatings(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { HWND hDlg = m_hWnd; UINT_PTR passConfirm = DoPasswordConfirm(hDlg); if (passConfirm == PASSCONFIRM_FAIL) { TraceMsg( TF_WARNING, "CIntroDialog::OnSetRatings() - DoPasswordConfirm() failed." ); return 0L; } if (!gPRSI->fRatingInstalled) { gPRSI->FreshInstall(); if ( ! PicsOptionsDialog( hDlg, gPRSI, GetUserObject() ) ) { if (passConfirm == PASSCONFIRM_NEW) { RemoveSupervisorPassword(); } } MarkChanged(); } else { if ( PicsOptionsDialog( hDlg, gPRSI, GetUserObject() ) ) { MarkChanged(); } } EnableDlgItems(); return 1L; } LRESULT CIntroDialog::OnTurnOnOff(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { HWND hDlg = m_hWnd; if ( DoPasswordConfirm( hDlg ) ) { PicsUser *pUser = ::GetUserObject(); if (pUser != NULL) { pUser->fEnabled = !pUser->fEnabled; if (pUser->fEnabled) { MyMessageBox(hDlg, IDS_NOW_ON, IDS_ENABLE_WARNING, IDS_GENERIC, MB_OK); } else { CRegKey keyRatings; if ( keyRatings.Open( HKEY_LOCAL_MACHINE, szRATINGS ) == ERROR_SUCCESS ) { DWORD dwFlag; // $REVIEW - Should we call RemoveSupervisorPassword() or not delete the Key at all? // Delete the supervisor key so that we don't load // ratings by other components and we "quick" know it is off. keyRatings.DeleteValue( szRatingsSupervisorKeyName ); if ( keyRatings.QueryValue( dwFlag, szTURNOFF ) == ERROR_SUCCESS ) { if ( dwFlag != 1 ) { CTurnOffDialog turnOffDialog; turnOffDialog.DoModal( hDlg ); } } else { CTurnOffDialog turnOffDialog; turnOffDialog.DoModal( hDlg ); } } } EnableDlgItems(); } } return 1L; } LRESULT CIntroDialog::OnApply(int idCtrl, LPNMHDR pnmh, BOOL& bHandled) { ASSERT( gPRSI ); if ( gPRSI ) { gPRSI->fSettingsValid = TRUE; gPRSI->SaveRatingSystemInfo(); } return PSNRET_NOERROR; } LRESULT CIntroDialog::OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { SHWinHelpOnDemandWrap((HWND)((LPHELPINFO)lParam)->hItemHandle, ::szHelpFile, HELP_WM_HELP, (DWORD_PTR)(LPSTR)aIds); return 0L; } LRESULT CIntroDialog::OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { SHWinHelpOnDemandWrap((HWND)wParam, ::szHelpFile, HELP_CONTEXTMENU, (DWORD_PTR)(LPVOID)aIds); return 0L; } void CIntroDialog::EnableDlgItems( void ) { CHAR pszBuf[MAXPATHLEN]; PicsUser *pUser = ::GetUserObject(); if (!gPRSI->fRatingInstalled) { MLLoadStringA(IDS_RATING_NEW, pszBuf, sizeof(pszBuf)); SetDlgItemText( IDC_INTRO_TEXT, pszBuf); MLLoadStringA(IDS_TURN_ONOFF, pszBuf, sizeof(pszBuf)); SetDlgItemText( IDC_TURN_ONOFF, pszBuf); ::EnableWindow(GetDlgItem( IDC_TURN_ONOFF), FALSE); } else if (pUser && pUser->fEnabled) { MLLoadStringA(IDS_RATING_ON, pszBuf, sizeof(pszBuf)); SetDlgItemText( IDC_INTRO_TEXT, pszBuf); MLLoadStringA(IDS_TURN_OFF, pszBuf, sizeof(pszBuf)); SetDlgItemText( IDC_TURN_ONOFF, pszBuf); ::EnableWindow(GetDlgItem( IDC_TURN_ONOFF), TRUE); } else { MLLoadStringA(IDS_RATING_OFF, pszBuf, sizeof(pszBuf)); SetDlgItemText( IDC_INTRO_TEXT, pszBuf); MLLoadStringA(IDS_TURN_ON, pszBuf, sizeof(pszBuf)); SetDlgItemText( IDC_TURN_ONOFF, pszBuf); ::EnableWindow(GetDlgItem( IDC_TURN_ONOFF), TRUE); } }