243 lines
5 KiB
C++
243 lines
5 KiB
C++
//-------------------------------------------------------------------------
|
|
// File: ColumnMgrDlg.cpp
|
|
//
|
|
// Author : Kishnan Nedungadi
|
|
//
|
|
// created : 3/27/2000
|
|
//-------------------------------------------------------------------------
|
|
|
|
#include "stdafx.h"
|
|
#include <wbemidl.h>
|
|
#include <commctrl.h>
|
|
#include "resource.h"
|
|
#include "defines.h"
|
|
#include "ntdmutils.h"
|
|
#include "ColumnMgrDlg.h"
|
|
|
|
CColumnManagerDlg * g_pColumnManagerDlg = NULL;
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
INT_PTR CALLBACK ColumnManagerDlgProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
if(g_pColumnManagerDlg)
|
|
{
|
|
return g_pColumnManagerDlg->ColumnManagerDlgProc(hDlg, iMessage, wParam, lParam);
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
CColumnManagerDlg::CColumnManagerDlg(CSimpleArray<CColumnItem*> *pArrayColumns)
|
|
{
|
|
m_hWnd = NULL;
|
|
m_hwndListView = NULL;
|
|
m_pArrayColumns = pArrayColumns;
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
CColumnManagerDlg::~CColumnManagerDlg()
|
|
{
|
|
}
|
|
|
|
//-------------------------------------------------------------------------
|
|
|
|
INT_PTR CALLBACK CColumnManagerDlg::ColumnManagerDlgProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam)
|
|
{
|
|
LPPSHNOTIFY lppsn = NULL;
|
|
|
|
switch(iMessage)
|
|
{
|
|
case WM_INITDIALOG:
|
|
{
|
|
m_hWnd = hDlg;
|
|
|
|
InitializeDialog();
|
|
PopulateColumnsList();
|
|
|
|
break;
|
|
}
|
|
|
|
case WM_DESTROY:
|
|
{
|
|
//DestroyDialog();
|
|
break;
|
|
}
|
|
|
|
case WM_COMMAND:
|
|
{
|
|
switch(LOWORD(wParam))
|
|
{
|
|
case IDCANCEL:
|
|
EndDialog(m_hWnd, IDCANCEL);
|
|
return TRUE;
|
|
|
|
case IDOK:
|
|
OnOK();
|
|
return TRUE;
|
|
break;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
STDMETHODIMP CColumnManagerDlg::InitializeDialog()
|
|
{
|
|
HRESULT hr;
|
|
LVCOLUMN lvColumn;
|
|
|
|
NTDM_BEGIN_METHOD()
|
|
|
|
//Initialize the ListView Control
|
|
|
|
m_hwndListView = GetDlgItem(m_hWnd, IDC_COLUMNS_LIST);
|
|
NTDM_ERR_IF_NULL(m_hwndListView);
|
|
|
|
ListView_SetExtendedListViewStyle(m_hwndListView, LVS_EX_FULLROWSELECT|LVS_EX_CHECKBOXES);
|
|
|
|
lvColumn.mask = LVCF_FMT;
|
|
lvColumn.fmt = LVCFMT_LEFT;
|
|
|
|
NTDM_ERR_IF_MINUSONE(ListView_InsertColumn(m_hwndListView, 0, &lvColumn));
|
|
NTDM_ERR_IF_FALSE(ListView_SetColumnWidth(m_hwndListView, 0, LVSCW_AUTOSIZE_USEHEADER));
|
|
|
|
NTDM_END_METHOD()
|
|
|
|
// cleanup
|
|
|
|
return hr;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
STDMETHODIMP CColumnManagerDlg::PopulateColumnsList()
|
|
{
|
|
HRESULT hr;
|
|
long i;
|
|
|
|
NTDM_BEGIN_METHOD()
|
|
|
|
for(i=0; i<m_pArrayColumns->GetSize(); i++)
|
|
{
|
|
AddColumnItemToList((*m_pArrayColumns)[i]);
|
|
}
|
|
|
|
NTDM_END_METHOD()
|
|
|
|
// cleanup
|
|
|
|
return hr;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
STDMETHODIMP CColumnManagerDlg::AddColumnItemToList(CColumnItem* pszItem)
|
|
{
|
|
HRESULT hr;
|
|
LVITEM lvItem;
|
|
long lIndex = 10000;
|
|
static TCHAR test[20] = _T("cool");
|
|
|
|
NTDM_BEGIN_METHOD()
|
|
|
|
lvItem.mask = LVIF_TEXT|LVIF_PARAM;
|
|
lvItem.iItem = lIndex;
|
|
lvItem.iSubItem = 0;
|
|
lvItem.pszText = (LPTSTR)pszItem->GetName();
|
|
lvItem.lParam = (LPARAM)pszItem;
|
|
|
|
lIndex = ListView_InsertItem(m_hwndListView, &lvItem);
|
|
NTDM_ERR_IF_MINUSONE(lIndex);
|
|
ListView_SetCheckState(m_hwndListView, lIndex, pszItem->IsSelected());
|
|
|
|
NTDM_END_METHOD()
|
|
|
|
// cleanup
|
|
return hr;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
STDMETHODIMP CColumnManagerDlg::OnOK()
|
|
{
|
|
HRESULT hr;
|
|
LVITEM lvItem;
|
|
long lCount;
|
|
BOOL bValue;
|
|
|
|
NTDM_BEGIN_METHOD()
|
|
|
|
lvItem.mask = LVIF_PARAM;
|
|
lvItem.iSubItem = 0;
|
|
|
|
lCount = ListView_GetItemCount(m_hwndListView);
|
|
|
|
while(lCount > 0)
|
|
{
|
|
lCount--;
|
|
|
|
lvItem.iItem = lCount;
|
|
|
|
NTDM_ERR_IF_FALSE(ListView_GetItem(m_hwndListView, &lvItem));
|
|
bValue = ListView_GetCheckState(m_hwndListView, lCount);
|
|
((CColumnItem *)lvItem.lParam)->SetSelected(bValue);
|
|
}
|
|
|
|
NTDM_END_METHOD()
|
|
|
|
if SUCCEEDED(hr)
|
|
EndDialog(m_hWnd, IDOK);
|
|
|
|
// cleanup
|
|
return hr;
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------
|
|
// CColumnItem
|
|
//---------------------------------------------------------------------------
|
|
|
|
CColumnItem::CColumnItem(LPCTSTR pcszName, LPCTSTR pcszPropertyName, bool bSelected)
|
|
{
|
|
m_bstrName = pcszName;
|
|
m_bstrPropertyName = pcszPropertyName;
|
|
m_bSelected = bSelected;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
CColumnItem::CColumnItem(const CColumnItem& colItem)
|
|
{
|
|
m_bstrName = colItem.m_bstrName;
|
|
m_bstrPropertyName = colItem.m_bstrPropertyName;
|
|
m_bSelected = colItem.m_bSelected;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
CColumnItem& CColumnItem::operator=(const CColumnItem& colItem)
|
|
{
|
|
if(this != &colItem)
|
|
{
|
|
m_bstrName = colItem.m_bstrName;
|
|
m_bstrPropertyName = colItem.m_bstrPropertyName;
|
|
m_bSelected = colItem.m_bSelected;
|
|
}
|
|
|
|
return *this;
|
|
}
|
|
|
|
//---------------------------------------------------------------------------
|