windows-nt/Source/XPSP1/NT/net/config/common/nctraceui/flagspage.cpp
2020-09-26 16:20:57 +08:00

659 lines
15 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1997.
//
// File: T A G S P A G E . C P P
//
// Contents: TraceTags propsheet page handlers
//
// Notes:
//
// Author: jeffspr 24 Jan 1999
//
//----------------------------------------------------------------------------
#include <pch.h>
#pragma hdrstop
#ifdef ENABLETRACE
#include <crtdbg.h>
#include "ncdebug.h"
#include <ncui.h>
#include "traceui.h"
//---[ Globals ]--------------------------------------------------------------
#if 0
typedef struct _LV_COLUMN {
UINT mask;
int fmt;
int cx;
PWSTR pszText;
int cchTextMax;
int iSubItem;
} LV_COLUMN;
#endif
// | :--------- CHAR [] szShortName
// | | :------- CHAR [] szDescription
// | | | BOOL fOutputDebugString -----------------------------:
// | | | BOOL fOutputToFile ----------------------------------|---:
// | | | BOOL fVerboseOnly------------------------------------|---|---:
#define LVCF_NORMAL (LVCF_FMT | LVCF_TEXT | LVCF_WIDTH)
static LV_COLUMN g_lvcTags[] =
{
{LVCF_NORMAL, LVCFMT_LEFT, 30, L"Name", 0, 0},
{LVCF_NORMAL, LVCFMT_LEFT, 60, L"Description", 0, 0},
{LVCF_NORMAL, LVCFMT_LEFT, 30, L"Debug Logging", 0, 0},
{LVCF_NORMAL, LVCFMT_LEFT, 30, L"File Logging", 0, 0}
};
const DWORD g_dwTagColumnCount = celems(g_lvcTags);
static const UINT SELS_UNCHECKED = 0x1;
static const UINT SELS_CHECKED = 0x2;
CDbgFlagPage::CDbgFlagPage()
{
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::~CDbgFlagPage
//
// Purpose: Destroys the CDbgFlagPage object
//
// Arguments:
// (none)
//
// Returns: Nothing
//
// Author: danielwe 25 Feb 1998
//
// Notes:
//
CDbgFlagPage::~CDbgFlagPage()
{
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnInitDialog
//
// Purpose: Handles the WM_INITDIALOG message
//
// Arguments:
// uMsg []
// wParam []
// lParam []
// bHandled []
//
// Returns: TRUE
//
// Author: danielwe 29 Oct 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnInitDialog(UINT uMsg, WPARAM wParam,
LPARAM lParam, BOOL& bHandled)
{
HRESULT hr = S_OK;
m_hwndLV = GetDlgItem(IDC_TRACETAGS);
hr = HrInitTraceListView(m_hwndLV, &m_hilCheckIcons);
for(DWORD dwLoop = 0; dwLoop < g_dwTagColumnCount; dwLoop++)
{
ListView_InsertColumn(m_hwndLV,dwLoop+1,&(g_lvcTags[dwLoop]));
}
LV_ITEM lvi = {0};
lvi.mask = LVIF_TEXT | LVIF_IMAGE |
LVIF_STATE | LVIF_PARAM;
INT nIndex =0;
#if 0
// Get the component's class image list index
if (pcild)
{
hr = HrSetupDiGetClassImageIndex(pcild, &guidClass, &nIndex);
TraceError("HrSetupDiGetClassImageIndex failed.", hr);
lvi.iImage = nIndex;
hr = S_OK;
}
lvi.iItem = *pnPos;
#endif
lvi.iItem = 0;
#if 0
NET_ITEM_DATA * pnid = new NET_ITEM_DATA;
pnid->szwName = SzDupSz(pszwName);
pnid->szwDesc = SzDupSz(pszwDesc);
pnid->dwFlags = dwFlags;
AddRefObj(pnid->pncc = pncc);
pnid->pCompObj = new CComponentObj(pncc);
hr = pnid->pCompObj->HrInit(plistBindingPaths);
if FAILED(hr)
{
TraceError("HrInsertComponent: failed to initialize a component object", hr);
hr = S_OK;
}
lvi.lParam = reinterpret_cast<LPARAM>(pnid);
lvi.pszText = pnid->szwName;
#endif
lvi.lParam = 0;
lvi.pszText = L"Hey, Jude";
// We will refresh the state of the whole list in the end
UINT iChkIndex = SELS_CHECKED;
lvi.state = INDEXTOSTATEIMAGEMASK( iChkIndex );
INT ret;
ret = ListView_InsertItem(m_hwndLV, &lvi);
return TRUE;
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnHelp
//
// Purpose: Handles the WM_HELP message.
//
// Arguments:
// uMsg []
// wParam []
// lParam []
// bHandled []
//
// Returns: TRUE
//
// Author: danielwe 25 Feb 1998
//
// Notes:
//
LRESULT CDbgFlagPage::OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam,
BOOL& bHandled)
{
OnTraceHelpGeneric(m_hWnd, lParam);
return TRUE;
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnDestroy
//
// Purpose: Called when the dialog page is destroyed
//
// Arguments:
// uMsg []
// wParam []
// lParam []
// bHandled []
//
// Returns:
//
// Author: danielwe 2 Feb 1998
//
// Notes:
//
LRESULT CDbgFlagPage::OnDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam,
BOOL& bHandled)
{
UninitTraceListView(m_hwndLV);
return 0;
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnSetCursor
//
// Purpose: Called in response to the WM_SETCURSOR message
//
// Arguments:
// uMsg []
// wParam []
// lParam []
// bHandled []
//
// Returns:
//
// Author: danielwe 2 Jan 1998
//
// Notes:
//
LRESULT CDbgFlagPage::OnSetCursor(UINT uMsg, WPARAM wParam, LPARAM lParam,
BOOL& bHandled)
{
if (m_hPrevCurs)
{
if (LOWORD(lParam) == HTCLIENT)
{
SetCursor(LoadCursor(NULL, IDC_WAIT));
}
return TRUE;
}
return 0;
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnAdd
//
// Purpose: Handles the clicking of the Add button
//
// Arguments:
// wNotifyCode []
// wID []
// hWndCtl []
// bHandled []
//
// Returns:
//
// Author: danielwe 29 Oct 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnAdd(WORD wNotifyCode, WORD wID, HWND hWndCtl,
BOOL& bHandled)
{
HRESULT hr = S_OK;
#if 0
hr = HrLvAdd(m_hwndLV, m_hWnd, m_pnc, m_pnccAdapter, &m_listBindingPaths);
if (SUCCEEDED(hr) && (S_FALSE != hr))
{
// Change the Cancel Button to CLOSE (because we committed changes)
//
::PostMessage(GetParent(), PSM_CANCELTOCLOSE, 0, 0L);
}
if (NETCFG_S_REBOOT == hr)
{
RequestReboot();
// The reboot request has been handled
hr = S_OK;
}
TraceError("CDbgFlagPage::OnAdd", hr);
#endif
return LresFromHr(hr);
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnRemove
//
// Purpose: Handles the clicking of the Remove button
//
// Arguments:
// wNotifyCode []
// wID []
// hWndCtl []
// bHandled []
//
// Returns:
//
// Author: danielwe 29 Oct 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnRemove(WORD wNotifyCode, WORD wID, HWND hWndCtl,
BOOL& bHandled)
{
HRESULT hr = S_OK;
#if 0
hr = HrLvRemove(m_hwndLV, m_hWnd, m_pnc, m_pnccAdapter,
&m_listBindingPaths);
// if list is empty, reset the buttons
if (0 == ListView_GetItemCount(m_hwndLV))
{
// Reset the buttons and the description text based on the changed selection
LvSetButtons(m_handles);
}
if (SUCCEEDED(hr) && (S_FALSE != hr))
{
// Change the Cancel Button to CLOSE (because we committed changes)
//
::PostMessage(GetParent(), PSM_CANCELTOCLOSE, 0, 0L);
}
if (NETCFG_S_REBOOT == hr)
{
RequestReboot();
// The reboot request has been handled
hr = S_OK;
}
TraceError("CDbgFlagPage::OnRemove", hr);
#endif
return LresFromHr(hr);
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnProperties
//
// Purpose: Handles the clicking of the Properties button
//
// Arguments:
// wNotifyCode []
// wID []
// hWndCtl []
// bHandled []
//
// Returns:
//
// Author: danielwe 29 Oct 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnProperties(WORD wNotifyCode, WORD wID, HWND hWndCtl,
BOOL& bHandled)
{
HRESULT hr = S_OK;
#if 0
hr = HrLvProperties(m_hwndLV, m_hWnd, m_pnc, m_punk,
m_pnccAdapter, &m_listBindingPaths);
TraceError("CDbgFlagPage::OnProperties", hr);
#endif
return LresFromHr(hr);
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnApply
//
// Purpose: Called when the Networking page is applied
//
// Arguments:
// idCtrl []
// pnmh []
// bHandled []
//
// Returns:
//
// Author: danielwe 29 Oct 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnApply(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
{
HRESULT hr = S_OK;
#if 0
if (m_fReentrancyCheck)
{
TraceTag(ttidLanUi, "CDbgFlagPage::OnApply is being re-entered! "
"I'm outta here!");
// Don't allow the automatic EndDialog() to work just yet
SetWindowLong(DWLP_MSGRESULT, PSNRET_INVALID);
return TRUE;
}
m_hPrevCurs = SetCursor(LoadCursor(NULL, IDC_WAIT));
hr = m_pnc->Validate();
if (hr == S_OK)
{
BOOL fReboot = FALSE;
// Note: This function becomes reentrant because INetCfg::Apply()
// has a message pump in it which causes the PSN_APPLY message to
// be processed twice. This will happen ONLY if the user double-clicks
// the OK button.
m_fReentrancyCheck = TRUE;
TraceTag(ttidLanUi, "Calling INetCfg::Apply()");
hr = m_pnc->Apply();
if (NETCFG_S_REBOOT == hr)
{
fReboot = TRUE;
}
if (SUCCEEDED(hr))
{
TraceTag(ttidLanUi, "INetCfg::Apply() succeeded");
hr = m_pnc->Uninitialize();
}
if (SUCCEEDED(hr))
{
if (m_fRebootAlreadyRequested || fReboot)
{
DWORD dwFlags = QUFR_REBOOT;
if (!m_fRebootAlreadyRequested)
dwFlags |= QUFR_PROMPT;
(VOID) HrNcQueryUserForReboot(_Module.GetResourceInstance(),
m_hWnd, IDS_LAN_CAPTION,
IDS_REBOOT_REQUIRED,
dwFlags);
}
}
}
// Apply "general" properties
//
if (SUCCEEDED(hr))
{
LANCON_INFO linfo = {0};
linfo.fShowIcon = IsDlgButtonChecked(IDC_CHK_ShowIcon);
// Set new value of show icon property
hr = m_plan->SetInfo(LCIF_ICON, &linfo);
}
// Normalize result
if (S_FALSE == hr)
{
hr = S_OK;
}
if (m_hPrevCurs)
{
SetCursor(m_hPrevCurs);
m_hPrevCurs = NULL;
}
// Reset this just in case
m_fReentrancyCheck = FALSE;
TraceError("CDbgFlagPage::OnApply", hr);
#endif
return LresFromHr(hr);
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnCancel
//
// Purpose: Called when the Networking page is cancelled.
//
// Arguments:
// idCtrl []
// pnmh []
// bHandled []
//
// Returns:
//
// Author: danielwe 3 Jan 1998
//
// Notes:
//
LRESULT CDbgFlagPage::OnCancel(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
{
HRESULT hr = S_OK;
#if 0
AssertSz(m_pnc, "I need a NetCfg object!");
hr = m_pnc->Uninitialize();
TraceError("CDbgFlagPage::OnCancel", hr);
#endif
return LresFromHr(hr);
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnDeleteItem
//
// Purpose: Called when the LVN_DELETEITEM message is received
//
// Arguments:
// idCtrl []
// pnmh []
// bHandled []
//
// Returns:
//
// Author: danielwe 3 Nov 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnDeleteItem(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
{
NM_LISTVIEW * pnmlv = reinterpret_cast<NM_LISTVIEW *>(pnmh);
#if 0
LvDeleteItem(m_hwndLV, pnmlv->iItem);
#endif
return 0;
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnClick
//
// Purpose: Called in response to the NM_CLICK message
//
// Arguments:
// idCtrl []
// pnmh []
// fHandled []
//
// Returns:
//
// Author: danielwe 1 Dec 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnClick(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
{
#if 0
OnListClick(m_hwndLV, m_hWnd, m_pnc, m_punk,
m_pnccAdapter, &m_listBindingPaths, FALSE);
#endif
return 0;
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnDbClick
//
// Purpose: Called in response to the NM_DBLCLK message
//
// Arguments:
// idCtrl []
// pnmh []
// fHandled []
//
// Returns:
//
// Author: danielwe 1 Dec 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnDbClick(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
{
#if 0
OnListClick(m_hwndLV, m_hWnd, m_pnc, m_punk,
m_pnccAdapter, &m_listBindingPaths, TRUE);
#endif
return 0;
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnKeyDown
//
// Purpose: Called in response to the LVN_KEYDOWN message
//
// Arguments:
// idCtrl []
// pnmh []
// fHandled []
//
// Returns:
//
// Author: danielwe 1 Dec 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnKeyDown(int idCtrl, LPNMHDR pnmh, BOOL& fHandled)
{
LV_KEYDOWN* plvkd = (LV_KEYDOWN*)pnmh;
#if 0
OnListKeyDown(m_hwndLV, &m_listBindingPaths, plvkd->wVKey);
#endif
return 0;
}
//+---------------------------------------------------------------------------
//
// Member: CDbgFlagPage::OnItemChanged
//
// Purpose: Called when the LVN_ITEMCHANGED message is received
//
// Arguments:
// idCtrl []
// pnmh []
// bHandled []
//
// Returns:
//
// Author: danielwe 10 Nov 1997
//
// Notes:
//
LRESULT CDbgFlagPage::OnItemChanged(int idCtrl, LPNMHDR pnmh, BOOL& bHandled)
{
NM_LISTVIEW * pnmlv = reinterpret_cast<NM_LISTVIEW *>(pnmh);
#if 0
HANDLES handles;
Assert(pnmlv);
// Reset the buttons and the description text based on the changed selection
LvSetButtons(m_handles);
#endif
return 0;
}
#endif // ENABLETRACE