зеркало из https://github.com/mozilla/pjs.git
199 строки
4.4 KiB
C++
199 строки
4.4 KiB
C++
// DlgEditPrefStr.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "DlgEditPrefStr.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDlgEditPrefStr dialog
|
|
|
|
|
|
CDlgEditPrefStr::CDlgEditPrefStr(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CDlgEditPrefStr::IDD, pParent), m_bChoose(FALSE)
|
|
{
|
|
//{{AFX_DATA_INIT(CDlgEditPrefStr)
|
|
m_strDescription = _T("");
|
|
m_strPrefName = _T("");
|
|
m_strValue = _T("");
|
|
m_bLocked = FALSE;
|
|
m_bValue = FALSE;
|
|
m_bRemoteAdmin = FALSE;
|
|
m_bLockable = TRUE;
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CDlgEditPrefStr::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDlgEditPrefStr)
|
|
DDX_Control(pDX, IDC_VALLIST, m_listValue);
|
|
DDX_Control(pDX, IDC_VALCHECK, m_checkValue);
|
|
DDX_Control(pDX, IDC_VALUE, m_editValue);
|
|
DDX_Control(pDX, IDC_LOCKED, m_checkLocked);
|
|
DDX_Control(pDX, IDC_REMOTEADMIN, m_checkRemoteAdmin);
|
|
DDX_Check(pDX, IDC_REMOTEADMIN, m_bRemoteAdmin);
|
|
DDX_Text(pDX, IDC_DESCRIPTION, m_strDescription);
|
|
DDX_Text(pDX, IDC_PREFNAME, m_strPrefName);
|
|
DDX_Text(pDX, IDC_VALUE, m_strValue);
|
|
DDX_Check(pDX, IDC_LOCKED, m_bLocked);
|
|
DDX_Check(pDX, IDC_VALCHECK, m_bValue);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDlgEditPrefStr, CDialog)
|
|
//{{AFX_MSG_MAP(CDlgEditPrefStr)
|
|
ON_WM_CREATE()
|
|
ON_WM_CANCELMODE()
|
|
ON_BN_CLICKED(IDC_DEFAULT, OnResetDefault)
|
|
ON_BN_CLICKED(IDC_REMOTEADMIN, OnRemoteAdmin)
|
|
//}}AFX_MSG_MAP
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDlgEditPrefStr message handlers
|
|
|
|
int CDlgEditPrefStr::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
|
{
|
|
if (CDialog::OnCreate(lpCreateStruct) == -1)
|
|
return -1;
|
|
|
|
SetWindowText(m_strTitle);
|
|
return 0;
|
|
}
|
|
|
|
|
|
BOOL CDlgEditPrefStr::PreCreateWindow(CREATESTRUCT& cs)
|
|
{
|
|
BOOL retval = CDialog::PreCreateWindow(cs);
|
|
|
|
return retval;
|
|
}
|
|
|
|
BOOL CDlgEditPrefStr::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
if (m_bChoose)
|
|
{
|
|
m_editValue.ShowWindow(SW_HIDE);
|
|
m_listValue.ShowWindow(SW_SHOW);
|
|
m_checkValue.ShowWindow(SW_HIDE);
|
|
|
|
// The list of choices comes in as an array of CStrings,
|
|
// terminated with an empty one.
|
|
CString *pstrChoice = m_pstrChoices;
|
|
while(pstrChoice->GetLength() > 0)
|
|
{
|
|
m_listValue.AddString(*pstrChoice);
|
|
pstrChoice++;
|
|
}
|
|
|
|
m_listValue.SelectString(0, m_strSelectedChoice);
|
|
}
|
|
|
|
else if (m_strType.CompareNoCase("bool") == 0)
|
|
{
|
|
m_editValue.ShowWindow(SW_HIDE);
|
|
m_listValue.ShowWindow(SW_HIDE);
|
|
m_checkValue.ShowWindow(SW_SHOW);
|
|
m_checkValue.SetWindowText(m_strTitle);
|
|
|
|
if (m_strValue.CompareNoCase("true") == 0)
|
|
m_checkValue.SetCheck(TRUE);
|
|
}
|
|
|
|
else // string or int type
|
|
{
|
|
m_editValue.ShowWindow(SW_SHOW);
|
|
m_listValue.ShowWindow(SW_HIDE);
|
|
m_checkValue.ShowWindow(SW_HIDE);
|
|
}
|
|
|
|
// disable lock checkbox if pref is not lockable
|
|
|
|
if (!m_bLockable)
|
|
{
|
|
m_checkLocked.EnableWindow(FALSE);
|
|
m_checkRemoteAdmin.EnableWindow(FALSE);
|
|
}
|
|
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
// Caller only has to get value from m_strValue for all types.
|
|
void CDlgEditPrefStr::OnOK()
|
|
{
|
|
// For choose, return the selected list string.
|
|
if (m_bChoose)
|
|
{
|
|
CString strSelectString;
|
|
m_listValue.GetLBText(m_listValue.GetCurSel(), strSelectString);
|
|
m_editValue.SetWindowText(strSelectString);
|
|
}
|
|
|
|
// For bool types, convert back to the data string.
|
|
else if (m_strType.CompareNoCase("bool") == 0)
|
|
{
|
|
if (m_checkValue.GetCheck())
|
|
m_editValue.SetWindowText("true");
|
|
else
|
|
m_editValue.SetWindowText("false");
|
|
}
|
|
else // string, int type
|
|
{
|
|
|
|
}
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CDlgEditPrefStr::OnResetDefault()
|
|
{
|
|
if (m_bChoose)
|
|
{
|
|
m_listValue.SelectString(0, m_strDefault);
|
|
}
|
|
|
|
else if (m_strType.CompareNoCase("bool") == 0)
|
|
{
|
|
if (m_strDefault.CompareNoCase("true") == 0)
|
|
m_checkValue.SetCheck(TRUE);
|
|
else
|
|
m_checkValue.SetCheck(FALSE);
|
|
}
|
|
|
|
else // string or int type
|
|
{
|
|
m_editValue.SetWindowText(m_strDefault);
|
|
}
|
|
}
|
|
|
|
|
|
void CDlgEditPrefStr::OnRemoteAdmin()
|
|
{
|
|
if (m_bLockable)
|
|
{
|
|
if (m_checkRemoteAdmin.GetCheck())
|
|
{
|
|
m_checkLocked.SetCheck(1);
|
|
m_checkLocked.EnableWindow(FALSE);
|
|
}
|
|
else if (m_bLockable)
|
|
{
|
|
m_checkLocked.SetCheck(0);
|
|
m_checkLocked.EnableWindow(TRUE);
|
|
}
|
|
}
|
|
}
|