// dlgselectinstances.cpp : implementation file // #include "stdafx.h" //#include "X:\CPA\tempgrp\oac\Inc\EdActors\edactors.h" #include "..\inc\edactors\EdAcIRes.h" #include "..\inc\edactors\dlgselectinstances.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDlgSelectInstances dialog IMPLEMENT_DYNAMIC (CSimpleCheckListBox, CCheckListBox) CSimpleCheckListBox::CSimpleCheckListBox () : CCheckListBox () { } ////////////////////////////////////////////////////////////////////////////////////////////////////// // Method : DrawItem // Date : 98/06/25 ////////////////////////////////////////////////////////////////////////////////////////////////////// // Description : // Author : Stegaru Cristian - CPA ////////////////////////////////////////////////////////////////////////////////////////////////////// // Modification : // Date : // By : ////////////////////////////////////////////////////////////////////////////////////////////////////// void CSimpleCheckListBox::DrawItem (LPDRAWITEMSTRUCT lpDrawItemStruct) { if (0 > lpDrawItemStruct->itemID) return; CDC *pDC = CDC::FromHandle (lpDrawItemStruct->hDC); char szText [TEXT_LENGTH]; SendMessage (LB_GETTEXT, lpDrawItemStruct->itemID, (LPARAM)(LPCSTR)szText); CString csText = szText; COLORREF rgbTextOld = 0, rgbTextStandard = RGB (0, 0, 255), rgbTextRegular = RGB (82, 16, 0); switch (lpDrawItemStruct->itemData) { case STANDARD_INSTANCE: rgbTextOld = pDC->SetTextColor (rgbTextStandard); break; case REGULAR_INSTANCE: rgbTextOld = pDC->SetTextColor (rgbTextRegular); break; default: ASSERT (FALSE); } pDC->DrawText (csText, &lpDrawItemStruct->rcItem, DT_LEFT); pDC->SetTextColor (rgbTextOld); } CDlgSelectInstances::CDlgSelectInstances(CStringList &rlstAllInstances, CStringList &rlstStandardInstances, CWnd* pParent /*=NULL*/) : CDialog(CDlgSelectInstances::IDD, pParent), m_rlstAllInstances (rlstAllInstances), m_rlstStandardInstances (rlstStandardInstances) { //{{AFX_DATA_INIT(CDlgSelectInstances) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT m_bAllInstances = FALSE; } void CDlgSelectInstances::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDlgSelectInstances) DDX_Control(pDX, IDC_LIST_INSTANCES, m_lstInstances); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CDlgSelectInstances, CDialog) //{{AFX_MSG_MAP(CDlgSelectInstances) ON_BN_CLICKED(IDC_CHECK_ALL, OnCheckAll) ON_BN_CLICKED(IDC_CHECK_STANDARD, OnCheckStandard) ON_LBN_SELCHANGE(IDC_LIST_INSTANCES, OnSelchangeListInstances) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDlgSelectInstances message handlers ////////////////////////////////////////////////////////////////////////////////////////////////////// // Method : OnCheckAll // Date : 98/06/25 ////////////////////////////////////////////////////////////////////////////////////////////////////// // Description : // Author : Stegaru Cristian - CPA ////////////////////////////////////////////////////////////////////////////////////////////////////// // Modification : // Date : // By : ////////////////////////////////////////////////////////////////////////////////////////////////////// void CDlgSelectInstances::OnCheckAll() { BOOL bCheckStandardChecked = 1 == ((CButton *)GetDlgItem (IDC_CHECK_STANDARD))->GetCheck (); CButton *pCheck = (CButton *)GetDlgItem (IDC_CHECK_ALL); int nCheckAll = pCheck->GetCheck (); int nCnt = m_lstInstances.GetCount (); for (int i = 0; i < nCnt; i++) { if (0 == nCheckAll && bCheckStandardChecked) { if (STANDARD_INSTANCE == m_lstInstances.GetItemData (i)) m_lstInstances.SetCheck (i, 1); else m_lstInstances.SetCheck (i, 0); } else m_lstInstances.SetCheck (i, nCheckAll); } } ////////////////////////////////////////////////////////////////////////////////////////////////////// // Method : OnCheckStandard // Date : 98/06/25 ////////////////////////////////////////////////////////////////////////////////////////////////////// // Description : // Author : Stegaru Cristian - CPA ////////////////////////////////////////////////////////////////////////////////////////////////////// // Modification : // Date : // By : ////////////////////////////////////////////////////////////////////////////////////////////////////// void CDlgSelectInstances::OnCheckStandard() { BOOL bCheckAllChecked = 1 == ((CButton *)GetDlgItem (IDC_CHECK_ALL))->GetCheck (); CButton *pCheck = (CButton *)GetDlgItem (IDC_CHECK_STANDARD); int nStandardCheck = pCheck->GetCheck (); if (bCheckAllChecked && 0 == nStandardCheck) { pCheck->SetCheck (1); return; } int nCnt = m_lstInstances.GetCount (); for (int i = 0; i < nCnt; i++) { if (STANDARD_INSTANCE == m_lstInstances.GetItemData (i)) m_lstInstances.SetCheck (i, nStandardCheck); else m_lstInstances.SetCheck (i, 0); } } ////////////////////////////////////////////////////////////////////////////////////////////////////// // Method : OnOK // Date : 98/06/25 ////////////////////////////////////////////////////////////////////////////////////////////////////// // Description : // Author : Stegaru Cristian - CPA ////////////////////////////////////////////////////////////////////////////////////////////////////// // Modification : // Date : // By : ////////////////////////////////////////////////////////////////////////////////////////////////////// void CDlgSelectInstances::OnOK() { BOOL bCheckAllChecked = 1 == ((CButton *)GetDlgItem (IDC_CHECK_ALL))->GetCheck (); if (!bCheckAllChecked) { m_rlstAllInstances.RemoveAll (); int nCnt = m_lstInstances.GetCount (); for (int iInx = 0; iInx < nCnt; iInx++) { BOOL bInstanceSelected = 1 == m_lstInstances.GetCheck (iInx); if (bInstanceSelected) { CString csInstanceName; m_lstInstances.GetText (iInx, csInstanceName); m_rlstAllInstances.AddTail (csInstanceName); } } } else m_bAllInstances = TRUE; //if allCheckChecked then all the instances remain in the list CDialog::OnOK(); } ////////////////////////////////////////////////////////////////////////////////////////////////////// // Method : OnInitDialog // Date : 98/06/25 ////////////////////////////////////////////////////////////////////////////////////////////////////// // Description : // Author : Stegaru Cristian - CPA ////////////////////////////////////////////////////////////////////////////////////////////////////// // Modification : // Date : // By : ////////////////////////////////////////////////////////////////////////////////////////////////////// BOOL CDlgSelectInstances::OnInitDialog() { CDialog::OnInitDialog(); POSITION pos = m_rlstAllInstances.GetHeadPosition (); while (pos) { CString csInstanceName = m_rlstAllInstances.GetNext (pos); DWORD dwType = REGULAR_INSTANCE; if (mfn_bIsAStandardInstance (csInstanceName)) dwType = STANDARD_INSTANCE; int iInx = m_lstInstances.AddString (csInstanceName); ASSERT (0 <= iInx); m_lstInstances.SetItemData (iInx, dwType); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } ////////////////////////////////////////////////////////////////////////////////////////////////////// // Method : OnSelchangeListInstances // Date : 98/06/25 ////////////////////////////////////////////////////////////////////////////////////////////////////// // Description : // Author : Stegaru Cristian - CPA ////////////////////////////////////////////////////////////////////////////////////////////////////// // Modification : // Date : // By : ////////////////////////////////////////////////////////////////////////////////////////////////////// void CDlgSelectInstances::OnSelchangeListInstances() { CSimpleCheckListBox *pList = (CSimpleCheckListBox *)GetDlgItem (IDC_LIST_INSTANCES); int nSel = pList->GetCurSel (); if (LB_ERR == nSel) return; if (0 == pList->GetCheck (nSel)) //uncheck { ((CButton *)GetDlgItem (IDC_CHECK_ALL))->SetCheck (0); ((CButton *)GetDlgItem (IDC_CHECK_STANDARD))->SetCheck (0); } else ((CButton *)GetDlgItem (IDC_CHECK_STANDARD))->SetCheck (0); } ////////////////////////////////////////////////////////////////////////////////////////////////////// // Method : mfn_bIsAStandardInstance // Date : 98/06/25 ////////////////////////////////////////////////////////////////////////////////////////////////////// // Description : // Author : Stegaru Cristian - CPA ////////////////////////////////////////////////////////////////////////////////////////////////////// // Modification : // Date : // By : ////////////////////////////////////////////////////////////////////////////////////////////////////// BOOL CDlgSelectInstances::mfn_bIsAStandardInstance (CString csInstanceName) { BOOL bIsStandardInstance = FALSE; POSITION pos = m_rlstStandardInstances.GetHeadPosition (); while (pos && !bIsStandardInstance) { const CString csName = m_rlstStandardInstances.GetNext (pos); if (csName == csInstanceName) bIsStandardInstance = TRUE; } return bIsStandardInstance; }