WindowsXP-SP1/admin/display/proppage/admin/listview.cxx
2020-09-30 16:53:49 +02:00

327 lines
9.0 KiB
C++

//+----------------------------------------------------------------------------
//
// Windows NT Active Directory Service Property Pages
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 2001
//
// File: listview.cxx
//
// Contents: Classes for list view controls.
//
// Classes: CListViewBase, CSuffixesList
//
// History: 01-Dec-00 EricB created
//
//-----------------------------------------------------------------------------
#include "pch.h"
#include "proppage.h"
#include "trust.h"
#include "listview.h"
//+----------------------------------------------------------------------------
//
// Method: CListViewBase::CListViewBase
//
//-----------------------------------------------------------------------------
CListViewBase::CListViewBase(void) :
_nID(0),
_hParent(NULL),
_hList(NULL)
{
}
//+----------------------------------------------------------------------------
//
// Method: CListViewBase::SetStyles
//
//-----------------------------------------------------------------------------
void
CListViewBase::SetStyles(DWORD dwStyles, DWORD dwExtStyles)
{
if (dwStyles)
{
}
if (dwExtStyles)
{
ListView_SetExtendedListViewStyle(_hList, dwExtStyles);
}
}
//+----------------------------------------------------------------------------
//
// Method: CListViewBase::AddColumn
//
//-----------------------------------------------------------------------------
void
CListViewBase::AddColumn(int textID, int cx, int nID)
{
CStrW strText;
strText.LoadString(g_hInstance, textID);
LV_COLUMN lvc;
lvc.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
lvc.fmt = LVCFMT_LEFT;
lvc.cx = cx;
lvc.pszText = strText;
lvc.iSubItem = nID;
ListView_InsertColumn(_hList, nID, &lvc);
}
//+----------------------------------------------------------------------------
//
// Method: CListViewBase::Clear
//
//-----------------------------------------------------------------------------
void
CListViewBase::Clear(void)
{
dspAssert(_hList);
ListView_DeleteAllItems(_hList);
}
//+----------------------------------------------------------------------------
//
// Class: CTLNList
//
// Purpose: TLN list on the Name Suffix Routing property page.
//
//-----------------------------------------------------------------------------
//+----------------------------------------------------------------------------
//
// Method: CTLNList::CTLNList
//
//-----------------------------------------------------------------------------
CTLNList::CTLNList(void) :
_nItem(0),
CListViewBase()
{
TRACE(CTLNList,CTLNList);
#ifdef _DEBUG
strcpy(szClass, "CTLNList");
#endif
}
//+----------------------------------------------------------------------------
//
// Method: CTLNList::Init
//
//-----------------------------------------------------------------------------
void
CTLNList::Init(HWND hParent, int nControlID)
{
_nID = nControlID;
_hParent = hParent;
_hList = GetDlgItem(hParent, nControlID);
dspAssert(_hList);
SetStyles(0, LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP | LVS_EX_INFOTIP);
AddColumn(IDS_COL_TITLE_SUFFIX, 117, IDX_SUFFIXNAME_COL);
AddColumn(IDS_COL_TITLE_ROUTING, 118, IDX_ROUTINGENABLED_COL);
AddColumn(IDS_COL_TITLE_STATUS, 118, IDX_STATUS_COL);
}
//+----------------------------------------------------------------------------
//
// Method: CTLNList::AddItem
//
//-----------------------------------------------------------------------------
void
CTLNList::AddItem(PCWSTR pwzName, ULONG i, PCWSTR pwzEnabled, PCWSTR pwzStatus)
{
dspAssert(pwzName && pwzEnabled);
LV_ITEM lvi;
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.iSubItem = IDX_SUFFIXNAME_COL;
lvi.lParam = i; // the lParam stores the index of the item in pFTInfo
lvi.pszText = const_cast<PWSTR>(pwzName);
lvi.iItem = _nItem++;
int iItem = ListView_InsertItem(_hList, &lvi);
ListView_SetItemText(_hList, iItem, IDX_ROUTINGENABLED_COL,
const_cast<PWSTR>(pwzEnabled));
if (pwzStatus && wcslen(pwzStatus) >= 1)
{
ListView_SetItemText(_hList, iItem, IDX_STATUS_COL,
const_cast<PWSTR>(pwzStatus));
}
}
//+----------------------------------------------------------------------------
//
// Method: CTLNList::GetSelection
//
//-----------------------------------------------------------------------------
int
CTLNList::GetSelection(void)
{
return ListView_GetNextItem(_hList, -1, LVNI_ALL | LVIS_SELECTED);
}
//+----------------------------------------------------------------------------
//
// Method: CTLNList::GetFTInfoIndex
//
//-----------------------------------------------------------------------------
ULONG
CTLNList::GetFTInfoIndex(int iSel)
{
LV_ITEM lvi;
lvi.mask = LVIF_PARAM;
lvi.iItem = iSel;
lvi.iSubItem = IDX_SUFFIXNAME_COL;
if (!ListView_GetItem(_hList, &lvi))
{
dspAssert(FALSE);
return (ULONG)-1;
}
return static_cast<ULONG>(lvi.lParam);
}
//+----------------------------------------------------------------------------
//
// Method: CTLNList::Clear
//
//-----------------------------------------------------------------------------
void
CTLNList::Clear(void)
{
_nItem = 0;
CListViewBase::Clear();
}
//+----------------------------------------------------------------------------
//
// Class: CSuffixesList
//
// Purpose: TLN subnames edit dialog list.
//
//-----------------------------------------------------------------------------
//+----------------------------------------------------------------------------
//
// Method: CSuffixesList::CSuffixesList
//
//-----------------------------------------------------------------------------
CSuffixesList::CSuffixesList(void) :
CListViewBase()
{
TRACE(CSuffixesList,CSuffixesList);
#ifdef _DEBUG
strcpy(szClass, "CSuffixesList");
#endif
}
//+----------------------------------------------------------------------------
//
// Method: CSuffixesList::Init
//
//-----------------------------------------------------------------------------
void
CSuffixesList::Init(HWND hParent, int nControlID)
{
_nID = nControlID;
_hParent = hParent;
_hList = GetDlgItem(hParent, nControlID);
dspAssert(_hList);
SetStyles(0, LVS_EX_FULLROWSELECT | LVS_EX_LABELTIP);
AddColumn(IDS_TLNEDIT_NAME_COL, 222, IDX_NAME_COL);
AddColumn(IDS_TLNEDIT_STATUS_COL, 196, IDX_STATUS_COL);
}
//+----------------------------------------------------------------------------
//
// Method: CSuffixesList::AddItem
//
//-----------------------------------------------------------------------------
void
CSuffixesList::AddItem(PCWSTR pwzName, ULONG i, TLN_EDIT_STATUS Status)
{
LV_ITEM lvi;
lvi.mask = LVIF_TEXT | LVIF_PARAM;
lvi.iSubItem = IDX_NAME_COL;
lvi.lParam = i; // the lParam stores the index of the item in pFTInfo
lvi.pszText = const_cast<PWSTR>(pwzName);
lvi.iItem = _nItem++;
int iItem = ListView_InsertItem(_hList, &lvi);
CStrW strStatus;
strStatus.LoadString(g_hInstance,
(Enabled == Status) ? IDS_ROUTING_ENABLED :
(Disabled == Status) ? IDS_ROUTING_DISABLED :
(Enabled_Exceptions == Status) ? IDS_ROUTING_EXCEPT_ENABLE :
IDS_ROUTING_EXCEPT_DISABLE);
ListView_SetItemText(_hList, iItem, IDX_STATUS_COL, strStatus);
}
//+----------------------------------------------------------------------------
//
// Method: CSuffixesList::UpdateItemStatus
//
//-----------------------------------------------------------------------------
void
CSuffixesList::UpdateItemStatus(int item, TLN_EDIT_STATUS Status)
{
CStrW strStatus;
strStatus.LoadString(g_hInstance,
(Enabled == Status) ? IDS_ROUTING_ENABLED :
(Disabled == Status) ? IDS_ROUTING_DISABLED :
(Enabled_Exceptions == Status) ? IDS_ROUTING_EXCEPT_ENABLE :
IDS_ROUTING_EXCEPT_DISABLE);
ListView_SetItemText(_hList, item, IDX_STATUS_COL, strStatus);
}
//+----------------------------------------------------------------------------
//
// Method: CSuffixesList::GetFTInfoIndex
//
//-----------------------------------------------------------------------------
ULONG
CSuffixesList::GetFTInfoIndex(int iSel)
{
LV_ITEM lvi;
lvi.mask = LVIF_PARAM;
lvi.iItem = iSel;
lvi.iSubItem = IDX_NAME_COL;
if (!ListView_GetItem(_hList, &lvi))
{
dspAssert(FALSE);
return (ULONG)-1;
}
return static_cast<ULONG>(lvi.lParam);
}
/*
//+----------------------------------------------------------------------------
//
// Method: CSuffixesList::
//
//-----------------------------------------------------------------------------
CSuffixesList::
{
}
*/