|
|
// DomainListDlg.cpp : implementation file
//
#include "stdafx.h"
#include "resource.h"
#include "DomainListDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CDomainListDlg dialog
CDomainListDlg::CDomainListDlg(CWnd* pParent /*=NULL*/) : CDialog(CDomainListDlg::IDD, pParent) { //{{AFX_DATA_INIT(CDomainListDlg)
//}}AFX_DATA_INIT
bExcludeOne = FALSE; }
void CDomainListDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDomainListDlg)
DDX_Control(pDX, IDC_DOMAINTREE, m_domainTree); DDX_Control(pDX, IDOK, m_NextBtn); //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDomainListDlg, CDialog) //{{AFX_MSG_MAP(CDomainListDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDomainListDlg message handlers
BOOL CDomainListDlg::OnInitDialog() { CDialog::OnInitDialog(); //fill the tree control
FillTreeControl();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDomainListDlg::OnCancel() { // TODO: Add extra cleanup here
CString msg, title; title.LoadString(IDS_EXIT_TITLE); msg.LoadString(IDS_EXIT_MSG); if (MessageBox(msg, title, MB_YESNO | MB_ICONQUESTION) == IDYES) CDialog::OnCancel(); }
void CDomainListDlg::OnOK() { CString msg, title; // TODO: Add extra validation here
//remove deselected items from the domain list
ModifyDomainList(); //if at least one domain was deselected, post a warning message
if (bExcludeOne) { title.LoadString(IDS_EXCLUDE_TITLE); msg.LoadString(IDS_EXCLUDE_MSG); if (MessageBox(msg, title, MB_YESNO | MB_ICONQUESTION) == IDYES) CDialog::OnOK(); else AddExclutedBackToList(); } else CDialog::OnOK(); }
/*********************************************************************
* * * Written by: Paul Thompson * * Date: 17 AUG 2000 * * * * This protected member function of the CDomainListDlg class is * * responsible for displaying all domains in the Protar database's * * MigratedObjects table. * * * *********************************************************************/
//BEGIN FillTreeControl
void CDomainListDlg::FillTreeControl() { /* local variables */ POSITION currentPos; //current position in the list
CString domainName; //name of domain from the list
WCHAR sName[MAX_PATH]; //name in string format to pass to tree control
/* function body */ CWaitCursor wait; //Put up a wait cursor
//make sure the checkbox sytle is set for this tree control
long lStyles = GetWindowLong(m_domainTree.m_hWnd, GWL_STYLE); //if checkbox style is not set, set it
if (!(lStyles & TVS_CHECKBOXES)) { lStyles = lStyles | TVS_CHECKBOXES; SetWindowLong(m_domainTree.m_hWnd, GWL_STYLE, lStyles); }
//get the position and string of the first name in the list
currentPos = pDomainList->GetHeadPosition();
//while there is another entry to retrieve from the list, then
//get a name from the list and add it to the tree control
while (currentPos != NULL) { //get the next string in the list, starts with the first
domainName = pDomainList->GetNext(currentPos); wcscpy(sName, (LPCTSTR)domainName); AddOneItem((HTREEITEM)TVI_ROOT, sName); }
wait.~CWaitCursor(); //remove the wait cursor
} //END FillTreeControl
/*********************************************************************
* * * Written by: Paul Thompson * * Date: 17 AUG 2000 * * * * This protected member function of the CDomainListDlg class is * * responsible for adding one item to the tree control in the * * specified place. * * * *********************************************************************/
//BEGIN AddOneItem
HTREEITEM CDomainListDlg::AddOneItem(HTREEITEM hParent, LPTSTR szText) { /* local variables */ HTREEITEM hItem; TV_INSERTSTRUCT tvstruct;
/* function body */ // fill the tree control
tvstruct.hParent = hParent; tvstruct.hInsertAfter = TVI_SORT; tvstruct.item.pszText = szText; tvstruct.item.cchTextMax = MAX_PATH; tvstruct.item.mask = TVIF_TEXT | TVIF_STATE; tvstruct.item.state = INDEXTOSTATEIMAGEMASK(2); tvstruct.item.stateMask = TVIS_STATEIMAGEMASK; hItem = m_domainTree.InsertItem(&tvstruct);
//make sure item is checked
m_domainTree.SetCheck(hItem, TRUE);
return (hItem); } //END AddOneItem
/*********************************************************************
* * * Written by: Paul Thompson * * Date: 17 AUG 2000 * * * * This protected member function of the CDomainListDlg class is * * responsible for removing list entries if they where deselected in * * the tree control. * * * *********************************************************************/
//BEGIN ModifyDomainList
void CDomainListDlg::ModifyDomainList() { /* local variables */ HTREEITEM hItem; //current tree control item
POSITION currentPos; //current position in the list
CString domainName; //name of domain from the list
UINT ndx; //for loop counter
/* function body */ CWaitCursor wait; //Put up a wait cursor
//get the number of entries in the tree control
for (ndx=0; ndx < m_domainTree.GetCount(); ndx++) { if (ndx == 0) hItem = m_domainTree.GetNextItem(NULL, TVGN_CHILD); else hItem = m_domainTree.GetNextItem(hItem, TVGN_NEXT);
domainName = m_domainTree.GetItemText(hItem); //if deselected, remove from the list and add to the excluded list
if (m_domainTree.GetCheck(hItem) == 0) { //if we find the string in the list, remove it
currentPos = pDomainList->Find(domainName); if (currentPos != NULL) { pDomainList->RemoveAt(currentPos); pExcludeList->AddTail(domainName); } bExcludeOne = TRUE; //set class flag to tell one is excluded
} }
wait.~CWaitCursor(); //remove the wait cursor
} //END ModifyDomainList
/*********************************************************************
* * * Written by: Paul Thompson * * Date: 22 AUG 2000 * * * * This protected member function of the CDomainListDlg class is * * responsible for taking the domain names out of the excluded list * * and placing it back into the domain list. * * * *********************************************************************/
//BEGIN AddExclutedBackToList
void CDomainListDlg::AddExclutedBackToList() { /* local variables */ POSITION currentPos; //current position in the list
CString domainName; //name of domain from the list
/* function body */ currentPos = pExcludeList->GetHeadPosition(); while (currentPos != NULL) { domainName = pExcludeList->GetNext(currentPos); pDomainList->AddTail(domainName); } pExcludeList->RemoveAll(); } //END AddExclutedBackToList
|