WindowsXP-SP1/admin/select/src/namenotfounddlg.cxx
2020-09-30 16:53:49 +02:00

331 lines
8.7 KiB
C++

//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1994 - 1998.
//
// File: NameNotFoundDlg.cxx
//
// Contents: Name not found dialog class
//
// Classes: CNameNotFoundDlg
//
// History: 03-28-2000 DavidMun Created from reenter.cxx
//
//---------------------------------------------------------------------------
#include "headers.hxx"
#pragma hdrstop
static ULONG
s_aulHelpIds[] =
{
IDC_LOOK_FOR_PB, IDH_LOOK_FOR_PB,
IDC_LOOK_FOR_EDIT, IDH_LOOK_FOR_EDIT,
IDC_LOOK_IN_PB, IDH_LOOK_IN_PB,
IDC_LOOK_IN_EDIT, IDH_LOOK_IN_EDIT,
IDC_CORRECT_RADIO, IDH_CORRECT_RADIO,
IDC_CORRECT_EDIT, IDH_CORRECT_EDIT,
IDC_REMOVE_RADIO, IDH_REMOVE_RADIO,
IDC_NOT_FOUND_MESSAGE, ULONG_MAX,
0,0
};
//+--------------------------------------------------------------------------
//
// Member: CNameNotFoundDlg::DoModalDialog
//
// Synopsis: Invoke the name not found dialog as a modal dialog.
//
// Arguments: [hwndParent] - dialog parent.
//
// Returns: S_OK - user corrected name and hit OK
// S_FALSE - user hit cancel
//
// History: 08-14-1998 DavidMun Created
//
//---------------------------------------------------------------------------
HRESULT
CNameNotFoundDlg::DoModalDialog(
HWND hwndParent,
NAME_PROCESS_RESULT *pnpr)
{
TRACE_METHOD(CNameNotFoundDlg, DoModalDialog);
m_pnpr = pnpr;
_DoModalDlg(hwndParent, IDD_NAMENOTFOUND);
return S_OK;
}
//+--------------------------------------------------------------------------
//
// Member: CNameNotFoundDlg::_OnInit
//
// Synopsis: Initialize dialog controls
//
// Arguments: [pfSetFocus] - set to FALSE
//
// Returns: S_OK
//
// History: 08-14-1998 DavidMun Created
//
//---------------------------------------------------------------------------
HRESULT
CNameNotFoundDlg::_OnInit(
BOOL *pfSetFocus)
{
TRACE_METHOD(CNameNotFoundDlg, _OnInit);
const CFilterManager &rfm = m_rop.GetFilterManager();
const CScopeManager &rsm = m_rop.GetScopeManager();
String strLookFor = rfm.GetFilterDescription(m_hwnd, FOR_LOOK_FOR);
//
// Init the Look For and Look In r/o edit controls
//
Edit_SetText(GetDlgItem(m_hwnd, IDC_LOOK_IN_EDIT),
rsm.GetCurScope().GetDisplayName().c_str());
Edit_SetText(GetDlgItem(m_hwnd, IDC_LOOK_FOR_EDIT),
strLookFor.c_str());
//
//Truncate the object name to MAX_OBJECTNAME_DISPLAY_LEN
//
String strObjectName = *m_pstrName;
if(!strObjectName.empty() && (strObjectName.size() > MAX_OBJECTNAME_DISPLAY_LEN))
{
strObjectName.erase(MAX_OBJECTNAME_DISPLAY_LEN,strObjectName.size());
//
//Add three dots to indicate that name is truncated
//
strObjectName.append(L"...");
}
//
// Change the IDC_REMOVE_RADIO string to reflect object name
//
if(!strObjectName.empty())
{
String strRadio = String::format(IDS_REMOVE_FROM_SEL,
strObjectName.c_str());
SetWindowText(GetDlgItem(m_hwnd, IDC_REMOVE_RADIO),
strRadio.c_str());
}
//
// Init the error message
//
if (!m_strError.empty())
{
Edit_SetText(_hCtrl(IDC_NOT_FOUND_MESSAGE), m_strError.c_str());
}
else
{
String strLabel = String::format(static_cast<unsigned>(m_idsError),
strObjectName.c_str());
Edit_SetText(_hCtrl(IDC_NOT_FOUND_MESSAGE), strLabel.c_str());
}
Button_SetCheck(_hCtrl(IDC_CORRECT_RADIO), BST_CHECKED);
Edit_SetText(_hCtrl(IDC_CORRECT_EDIT), m_pstrName->c_str());
SetFocus(_hCtrl(IDC_CORRECT_EDIT));
*pfSetFocus = FALSE;
DisableSystemMenuClose(m_hwnd);
return S_OK;
}
//+--------------------------------------------------------------------------
//
// Member: CNameNotFoundDlg::_OnCommand
//
// Synopsis: Handle user input.
//
// Arguments: standard windows
//
// Returns: standard windows
//
// History: 08-14-1998 DavidMun Created
//
//---------------------------------------------------------------------------
BOOL
CNameNotFoundDlg::_OnCommand(
WPARAM wParam,
LPARAM lParam)
{
BOOL fNotHandled = FALSE;
switch (LOWORD(wParam))
{
case IDC_LOOK_IN_PB:
{
Dbg(DEB_TRACE, "UA: (NameNotFoundDlg) hit Look In button\n");
const CFilterManager &rfm = m_rop.GetFilterManager();
const CScopeManager &rsm = m_rop.GetScopeManager();
rsm.DoLookInDialog(m_hwnd);
rfm.HandleScopeChange(m_hwnd);
Edit_SetText(GetDlgItem(m_hwnd, IDC_LOOK_IN_EDIT),
rsm.GetCurScope().GetDisplayName().c_str());
Edit_SetText(GetDlgItem(m_hwnd, IDC_LOOK_FOR_EDIT),
rfm.GetFilterDescription(m_hwnd, FOR_LOOK_FOR).c_str());
break;
}
case IDC_LOOK_FOR_PB:
{
Dbg(DEB_TRACE, "UA: (NameNotFoundDlg) hit Look For button\n");
const CFilterManager &rfm = m_rop.GetFilterManager();
rfm.DoLookForDialog(m_hwnd);
Edit_SetText(GetDlgItem(m_hwnd, IDC_LOOK_FOR_EDIT),
rfm.GetFilterDescription(m_hwnd, FOR_LOOK_FOR).c_str());
break;
}
case IDOK:
{
if (BST_CHECKED == Button_GetCheck(_hCtrl(IDC_REMOVE_RADIO)))
{
Dbg(DEB_TRACE, "UA: (NameNotFoundDlg) hit OK, remove radio is selected\n");
*m_pnpr = NPR_DELETE;
}
else
{
*m_pnpr = NPR_EDITED;
WCHAR wzName[MAX_PATH] = L"";
Edit_GetText(_hCtrl(IDC_CORRECT_EDIT), wzName, ARRAYLEN(wzName));
*m_pstrName = wzName;
m_pstrName->strip(String::BOTH);
Dbg(DEB_TRACE,
"UA: (NameNotFoundDlg) hit OK, edited name is '%ws'\n",
m_pstrName->c_str());
}
EndDialog(m_hwnd, S_OK);
}
break;
case IDCANCEL:
Dbg(DEB_TRACE, "UA: (NameNotFoundDlg) hit Cancel\n");
*m_pnpr = NPR_STOP_PROCESSING;
EndDialog(m_hwnd, E_FAIL);
break;
case IDC_CORRECT_RADIO:
Dbg(DEB_TRACE, "UA: (NameNotFoundDlg) hit Correct radio button\n");
_EnableCorrectionCtrls(TRUE);
wParam = MAKEWPARAM(0, EN_UPDATE);
// FALL THROUGH
case IDC_CORRECT_EDIT:
if (HIWORD(wParam) == EN_UPDATE)
{
WCHAR wzName[MAX_PATH] = L"";
Edit_GetText(_hCtrl(IDC_CORRECT_EDIT), wzName, ARRAYLEN(wzName));
StripLeadTrailSpace(wzName);
if (!*wzName)
{
EnableWindow(_hCtrl(IDOK), FALSE);
}
else
{
EnableWindow(_hCtrl(IDOK), TRUE);
}
}
break;
case IDC_REMOVE_RADIO:
Dbg(DEB_TRACE, "UA: (NameNotFoundDlg) hit Remove radio button\n");
_EnableCorrectionCtrls(FALSE);
EnableWindow(_hCtrl(IDOK), TRUE);
break;
default:
fNotHandled = TRUE;
break;
}
return fNotHandled;
}
//+--------------------------------------------------------------------------
//
// Member: CNameNotFoundDlg::_EnableCorrectionCtrls
//
// Synopsis: Enable or disable child controls according to [fEnable]
//
// History: 06-22-2000 DavidMun Created
//
//---------------------------------------------------------------------------
void
CNameNotFoundDlg::_EnableCorrectionCtrls(
BOOL fEnable)
{
EnableWindow(_hCtrl(IDC_LOOK_FOR_EDIT), fEnable);
EnableWindow(_hCtrl(IDC_LOOK_FOR_PB), fEnable);
EnableWindow(_hCtrl(IDC_LOOK_IN_EDIT), fEnable);
EnableWindow(_hCtrl(IDC_LOOK_IN_PB), fEnable);
EnableWindow(_hCtrl(IDC_CORRECT_EDIT), fEnable);
EnableWindow(_hCtrl(IDC_LOOK_FOR_LBL), fEnable);
EnableWindow(_hCtrl(IDC_LOOK_IN_LBL), fEnable);
EnableWindow(_hCtrl(IDC_NAME_LBL), fEnable);
}
//+--------------------------------------------------------------------------
//
// Member: CNameNotFoundDlg::_OnHelp
//
// Synopsis: Display context sensitive help for requested item
//
// Arguments: [message] -
// [wParam] -
// [lParam] -
//
// History: 10-15-1997 DavidMun Created
//
//---------------------------------------------------------------------------
void
CNameNotFoundDlg::_OnHelp(
UINT message,
WPARAM wParam,
LPARAM lParam)
{
TRACE_METHOD(CObjectSelect, _OnHelp);
InvokeWinHelp(message, wParam, lParam, c_wzHelpFilename, s_aulHelpIds);
}