// CGrpsDlg.cpp : implementation file // #include "stdafx.h" #include "dicomapp.h" #include "CGrpsDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CContextGroupsDlg dialog CContextGroupsDlg::CContextGroupsDlg(CWnd* pParent /*=NULL*/) : CDialog(CContextGroupsDlg::IDD, pParent) { //{{AFX_DATA_INIT(CContextGroupsDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CContextGroupsDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CContextGroupsDlg) DDX_Control(pDX, IDC_LIST_CODEDCONCEPTS, m_CodedConceptsListCtrl); DDX_Control(pDX, IDC_COMBO_CONTEXTID, m_ContextIDComboBox); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CContextGroupsDlg, CDialog) //{{AFX_MSG_MAP(CContextGroupsDlg) ON_WM_DESTROY() ON_CBN_SELCHANGE(IDC_COMBO_CONTEXTID, OnSelChangeComboContextID) ON_NOTIFY(LVN_ITEMCHANGED, IDC_LIST_CODEDCONCEPTS, OnItemChangedListCodedConcepts) //}}AFX_MSG_MAP END_MESSAGE_MAP() void CContextGroupsDlg::Update(int iContextIDIndex) { // Reset SetDlgItemText(IDC_EDIT_NAME, ""); SetDlgItemText(IDC_EDIT_TYPE, ""); SetDlgItemText(IDC_EDIT_VERSION, ""); m_CodedConceptsListCtrl.DeleteAllItems(); SetDlgItemText(IDC_EDIT_CSD, ""); SetDlgItemText(IDC_EDIT_CSV, ""); SetDlgItemText(IDC_EDIT_CV, ""); SetDlgItemText(IDC_EDIT_CM, ""); CString sContextID; m_ContextIDComboBox.GetLBText(iContextIDIndex, sContextID); pDICOMCONTEXTGROUP pGroup = LDicomContextGroup::Find((L_CHAR*)(LPCSTR) sContextID); if (!pGroup) { return; } CString sVersion; // Set the Context Group info SetDlgItemText(IDC_EDIT_NAME, pGroup->pszName); SetDlgItemText(IDC_EDIT_TYPE, pGroup->bExtensible ? "Extensible" : "Non-Extensible"); sVersion.Format("%04u%02u%02u", pGroup->pContextGroupVersion->nYear, pGroup->pContextGroupVersion->nMonth, pGroup->pContextGroupVersion->nDay); SetDlgItemText(IDC_EDIT_VERSION, sVersion); int iIndex = 0; // Display the Coded Concepts of the Context Group pDICOMCODEDCONCEPT pConcept = LDicomContextGroup::GetFirstCodedConcept(pGroup); while (pConcept) { m_CodedConceptsListCtrl.InsertItem(iIndex, pConcept->pszCodingSchemeDesignator); m_CodedConceptsListCtrl.SetItemText(iIndex, 1, pConcept->pszCodingSchemeVersion); m_CodedConceptsListCtrl.SetItemText(iIndex, 2, pConcept->pszCodeValue); m_CodedConceptsListCtrl.SetItemText(iIndex, 3, pConcept->pszCodeMeaning); iIndex++; pConcept = LDicomContextGroup::GetNextCodedConcept(pConcept); } if (m_CodedConceptsListCtrl.GetItemCount()) { m_CodedConceptsListCtrl.SetItemState(0, LVIS_SELECTED, LVIS_SELECTED); UpdateCodedConceptEditBoxes(0); } } void CContextGroupsDlg::UpdateCodedConceptEditBoxes(int iCodedConceptIndex) { SetDlgItemText(IDC_EDIT_CSD, m_CodedConceptsListCtrl.GetItemText(iCodedConceptIndex, 0)); SetDlgItemText(IDC_EDIT_CSV, m_CodedConceptsListCtrl.GetItemText(iCodedConceptIndex, 1)); SetDlgItemText(IDC_EDIT_CV, m_CodedConceptsListCtrl.GetItemText(iCodedConceptIndex, 2)); SetDlgItemText(IDC_EDIT_CM, m_CodedConceptsListCtrl.GetItemText(iCodedConceptIndex, 3)); } ///////////////////////////////////////////////////////////////////////////// // CContextGroupsDlg message handlers BOOL CContextGroupsDlg::OnInitDialog() { CDialog::OnInitDialog(); LDicomContextGroup::Reset(); LDicomContextGroup::Load(); // Fill the combo box of Context IDs pDICOMCONTEXTGROUP pGroup = LDicomContextGroup::GetFirst(); while (pGroup) { m_ContextIDComboBox.AddString(pGroup->pszContextIdentifier); pGroup = LDicomContextGroup::GetNext(pGroup); } // Prepare the Coded Concepts list control m_CodedConceptsListCtrl.InsertColumn(0, "Coding Scheme Designator", LVCFMT_LEFT, 70); m_CodedConceptsListCtrl.InsertColumn(1, "Coding Scheme Version", LVCFMT_LEFT, 70); m_CodedConceptsListCtrl.InsertColumn(2, "Code Value", LVCFMT_LEFT, 70); m_CodedConceptsListCtrl.InsertColumn(3, "Code Meaning", LVCFMT_LEFT, 200); m_CodedConceptsListCtrl.SetExtendedStyle(m_CodedConceptsListCtrl.GetExtendedStyle() | LVS_EX_FULLROWSELECT); m_ContextIDComboBox.SetCurSel(0); Update(0); return TRUE; } void CContextGroupsDlg::OnDestroy() { CDialog::OnDestroy(); LDicomContextGroup::Reset(); } void CContextGroupsDlg::OnSelChangeComboContextID() { Update(m_ContextIDComboBox.GetCurSel()); } void CContextGroupsDlg::OnItemChangedListCodedConcepts(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*) pNMHDR; if (pNMListView->uNewState & LVIS_SELECTED) { UpdateCodedConceptEditBoxes(pNMListView->iItem); } *pResult = 0; }