|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1999 **/ /**********************************************************************/
/*
edituser.h Edit user dialog implementation file
FILE HISTORY:
*/
#include "stdafx.h"
#include "EditUser.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CEditUsers dialog
CEditUsers::CEditUsers(CTapiDevice * pTapiDevice, CWnd* pParent /*=NULL*/) : CBaseDialog(CEditUsers::IDD, pParent), m_pTapiDevice(pTapiDevice), m_bDirty(FALSE) { //{{AFX_DATA_INIT(CEditUsers)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CEditUsers::DoDataExchange(CDataExchange* pDX) { CBaseDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CEditUsers)
DDX_Control(pDX, IDC_LIST_USERS, m_listUsers); //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEditUsers, CBaseDialog) //{{AFX_MSG_MAP(CEditUsers)
ON_BN_CLICKED(IDC_BUTTON_ADD_USER, OnButtonAdd) ON_BN_CLICKED(IDC_BUTTON_REMOVE_USER, OnButtonRemove) ON_LBN_SELCHANGE(IDC_LIST_USERS, OnSelchangeListUsers) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEditUsers message handlers
BOOL CEditUsers::OnInitDialog() { CBaseDialog::OnInitDialog(); for (int i = 0; i < m_pTapiDevice->m_arrayUsers.GetSize(); i++) { CString strDisplay;
FormatName(m_pTapiDevice->m_arrayUsers[i].m_strFullName, m_pTapiDevice->m_arrayUsers[i].m_strName, strDisplay);
int nIndex = m_listUsers.AddString(strDisplay); m_listUsers.SetItemData(nIndex, i); }
UpdateButtons();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
//
// Refresh the list box and rebuild the index
//
void CEditUsers::RefreshList() { m_listUsers.ResetContent();
for (int i = 0; i < m_pTapiDevice->m_arrayUsers.GetSize(); i++) { CString strDisplay;
FormatName(m_pTapiDevice->m_arrayUsers[i].m_strFullName, m_pTapiDevice->m_arrayUsers[i].m_strName, strDisplay);
int nIndex = m_listUsers.AddString(strDisplay); m_listUsers.SetItemData(nIndex, i); } }
void CEditUsers::OnButtonAdd() { CGetUsers getUsers(TRUE);
if (!getUsers.GetUsers(GetSafeHwnd())) return;
for (int nCount = 0; nCount < getUsers.GetSize(); nCount++) { CUserInfo userTemp;
userTemp = getUsers[nCount];
// check for duplicates
BOOL fDuplicate = FALSE; for (int i = 0; i < m_pTapiDevice->m_arrayUsers.GetSize(); i++) { if (m_pTapiDevice->m_arrayUsers[i].m_strName.CompareNoCase(userTemp.m_strName) == 0) { fDuplicate = TRUE; break; } }
if (!fDuplicate) { // add to the array
int nIndex = (int)m_pTapiDevice->m_arrayUsers.Add(userTemp);
// now add to the listbox
CString strDisplay;
FormatName(m_pTapiDevice->m_arrayUsers[nIndex].m_strFullName, m_pTapiDevice->m_arrayUsers[nIndex].m_strName, strDisplay);
int nListboxIndex = m_listUsers.AddString(strDisplay); m_listUsers.SetItemData(nListboxIndex, nIndex); } else { // tell the user we're not adding this to the list
CString strMessage; AfxFormatString1(strMessage, IDS_USER_ALREADY_AUTHORIZED, userTemp.m_strName); AfxMessageBox(strMessage); }
SetDirty(TRUE); }
UpdateButtons(); }
void CEditUsers::OnButtonRemove() { CString strSelectedName, strFullName, strDomainName;
int nCurSel = m_listUsers.GetCurSel(); int nIndex = (int)m_listUsers.GetItemData(nCurSel);
// remove from the list
m_pTapiDevice->m_arrayUsers.RemoveAt(nIndex); //Fix bug 386474, we need to rebuild the index <-> string mapping in the list box.
//So reload the users to the list box
RefreshList();
SetDirty(TRUE);
UpdateButtons(); }
void CEditUsers::OnOK() { if (IsDirty()) { }
CBaseDialog::OnOK(); }
void CEditUsers::UpdateButtons() { // enable the remove button if something is selected
BOOL fEnable = (m_listUsers.GetCurSel() != LB_ERR);
CWnd * pwndRemove = GetDlgItem(IDC_BUTTON_REMOVE_USER); //if we will disable the remove button and the remove button has the focus,
//we should change focus to the OK button
if (!fEnable && GetFocus() == pwndRemove) { SetDefID(IDOK); GetDlgItem(IDOK)->SetFocus(); ((CButton*)pwndRemove)->SetButtonStyle(BS_PUSHBUTTON); }
pwndRemove->EnableWindow(fEnable); }
void CEditUsers::OnSelchangeListUsers() { UpdateButtons(); }
|