160 lines
2.4 KiB
C++
160 lines
2.4 KiB
C++
// Copyright (C) 1997-2000 Microsoft Corporation
|
|
//
|
|
// get syskey for replica from media page
|
|
//
|
|
// 25 Apr 2000 sburns
|
|
|
|
|
|
|
|
#include "headers.hxx"
|
|
#include "resource.h"
|
|
#include "page.hpp"
|
|
#include "SyskeyPromptDialog.hpp"
|
|
#include "state.hpp"
|
|
|
|
|
|
|
|
static const DWORD HELP_MAP[] =
|
|
{
|
|
0, 0
|
|
};
|
|
|
|
|
|
|
|
SyskeyPromptDialog::SyskeyPromptDialog()
|
|
:
|
|
Dialog(IDD_SYSKEY_PROMPT, HELP_MAP)
|
|
|
|
{
|
|
LOG_CTOR(SyskeyPromptDialog);
|
|
}
|
|
|
|
|
|
|
|
SyskeyPromptDialog::~SyskeyPromptDialog()
|
|
{
|
|
LOG_DTOR(SyskeyPromptDialog);
|
|
}
|
|
|
|
|
|
|
|
void
|
|
SyskeyPromptDialog::OnInit()
|
|
{
|
|
LOG_FUNCTION(SyskeyPromptDialog::OnInit);
|
|
|
|
Win::Edit_LimitText(Win::GetDlgItem(hwnd, IDC_SYSKEY), PWLEN);
|
|
|
|
State& state = State::GetInstance();
|
|
if (state.UsingAnswerFile())
|
|
{
|
|
EncodedString option =
|
|
state.GetEncodedAnswerFileOption(State::OPTION_SYSKEY);
|
|
if (!option.IsEmpty())
|
|
{
|
|
Win::SetDlgItemText(hwnd, IDC_SYSKEY, option);
|
|
}
|
|
}
|
|
|
|
if (state.RunHiddenUnattended())
|
|
{
|
|
if (Validate())
|
|
{
|
|
Win::EndDialog(hwnd, IDOK);
|
|
}
|
|
else
|
|
{
|
|
state.ClearHiddenWhileUnattended();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
SyskeyPromptDialog::OnCommand(
|
|
HWND /* windowFrom */ ,
|
|
unsigned controlIdFrom,
|
|
unsigned code)
|
|
{
|
|
// LOG_FUNCTION(SyskeyPromptDialog::OnCommand);
|
|
|
|
switch (controlIdFrom)
|
|
{
|
|
case IDC_SYSKEY:
|
|
{
|
|
if (code == EN_CHANGE)
|
|
{
|
|
SetChanged(controlIdFrom);
|
|
return true;
|
|
}
|
|
break;
|
|
}
|
|
case IDOK:
|
|
{
|
|
if (code == BN_CLICKED)
|
|
{
|
|
if (Validate())
|
|
{
|
|
Win::EndDialog(hwnd, controlIdFrom);
|
|
}
|
|
}
|
|
break;
|
|
}
|
|
case IDCANCEL:
|
|
{
|
|
if (code == BN_CLICKED)
|
|
{
|
|
Win::EndDialog(hwnd, controlIdFrom);
|
|
}
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
// do nothing
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
|
|
bool
|
|
SyskeyPromptDialog::Validate()
|
|
{
|
|
LOG_FUNCTION(SyskeyPromptDialog::Validate);
|
|
|
|
State& state = State::GetInstance();
|
|
|
|
bool result = false;
|
|
|
|
do
|
|
{
|
|
EncodedString syskey =
|
|
Win::GetEncodedDlgItemText(hwnd, IDC_SYSKEY);
|
|
|
|
if (syskey.IsEmpty())
|
|
{
|
|
popup.Gripe(hwnd, IDC_SYSKEY, IDS_MUST_ENTER_SYSKEY);
|
|
break;
|
|
}
|
|
|
|
state.SetSyskey(syskey);
|
|
result = true;
|
|
}
|
|
while (0);
|
|
|
|
LOG(result ? L"true" : L"false");
|
|
|
|
return result;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|