|
|
// Copyright (c) 2002 Microsoft Corporation
//
// File: UninstallMilestonePage.cpp
//
// Synopsis: Defines the UninstallMilestone Page for the CYS
// wizard
//
// History: 01/24/2002 JeffJon Created
#include "pch.h"
#include "resource.h"
#include "InstallationUnitProvider.h"
#include "UninstallMilestonePage.h"
static PCWSTR UNINSTALL_MILESTONE_PAGE_HELP = L"cys.chm::/remove_role.htm";
UninstallMilestonePage::UninstallMilestonePage() : needKillSelection(true), CYSWizardPage( IDD_UNINSTALL_MILESTONE_PAGE, IDS_UNINSTALL_MILESTONE_TITLE, IDS_UNINSTALL_MILESTONE_SUBTITLE, UNINSTALL_MILESTONE_PAGE_HELP, true, true) { LOG_CTOR(UninstallMilestonePage); }
UninstallMilestonePage::~UninstallMilestonePage() { LOG_DTOR(UninstallMilestonePage); }
void UninstallMilestonePage::OnInit() { LOG_FUNCTION(UninstallMilestonePage::OnInit);
CYSWizardPage::OnInit(); }
bool UninstallMilestonePage::OnCommand( HWND windowFrom, unsigned controlIDFrom, unsigned code) { bool result = false;
switch (controlIDFrom) { case IDC_UNINSTALL_CHECK: if (code == BN_CLICKED) { bool checked = Win::Button_GetCheck( Win::GetDlgItem(hwnd, IDC_UNINSTALL_CHECK));
Win::PropSheet_SetWizButtons( Win::GetParent(hwnd), (checked) ? PSWIZB_NEXT | PSWIZB_BACK : PSWIZB_BACK); } break;
case IDC_MILESTONE_EDIT: if (code == EN_SETFOCUS && needKillSelection) { Win::Edit_SetSel(windowFrom, -1, -1); needKillSelection = false; } break;
default: break; }
return result; }
bool UninstallMilestonePage::OnSetActive() { LOG_FUNCTION(UninstallMilestonePage::OnSetActive); // Always clear the checkbox when returning to this page.
// We want to force the user to select for uninstall
Win::Button_SetCheck( Win::GetDlgItem(hwnd, IDC_UNINSTALL_CHECK), BST_UNCHECKED);
Win::PropSheet_SetWizButtons( Win::GetParent(hwnd), PSWIZB_BACK);
InstallationUnit& currentInstallationUnit = InstallationUnitProvider::GetInstance().GetCurrentInstallationUnit();
// Get the finish text from the installation unit and put it in the finish box
String message;
bool changes = currentInstallationUnit.GetUninstallMilestoneText(message);
if (!changes) { message = String::load(IDS_FINISH_NO_CHANGES); }
Win::SetDlgItemText( hwnd, IDC_MILESTONE_EDIT, message);
String warning = currentInstallationUnit.GetUninstallWarningText();
Win::SetDlgItemText( hwnd, IDC_UNINSTALL_WARNING_STATIC, warning);
String checkboxText = currentInstallationUnit.GetUninstallCheckboxText();
Win::SetDlgItemText( hwnd, IDC_UNINSTALL_CHECK, checkboxText);
if (!changes) { popup.MessageBox( hwnd, IDS_NO_CHANGES_MESSAGEBOX_TEXT, MB_OK | MB_ICONWARNING); }
// Remove the selection of the edit box
Win::Edit_SetSel( Win::GetDlgItem( hwnd, IDC_MILESTONE_EDIT), -1, 0);
Win::PostMessage( hwnd, WM_NEXTDLGCTL, (WPARAM) Win::GetDlgItem(hwnd, IDC_UNINSTALL_CHECK), TRUE);
return true; }
int UninstallMilestonePage::Validate() { LOG_FUNCTION(UninstallMilestonePage::Validate);
Win::WaitCursor wait; int nextPage = -1; if (!InstallationUnitProvider::GetInstance(). GetCurrentInstallationUnit().DoInstallerCheck(hwnd)) { nextPage = IDD_UNINSTALL_PROGRESS_PAGE; }
LOG(String::format( L"nextPage = %1!d!", nextPage));
return nextPage; }
|