151 lines
3.6 KiB
C++
151 lines
3.6 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Copyright (c) 2000, Microsoft Corp. All rights reserved.
|
|
//
|
|
// FILE
|
|
//
|
|
// policypage.cpp
|
|
//
|
|
// SYNOPSIS
|
|
//
|
|
// Defines the class ProxyPolicyPage.
|
|
//
|
|
// MODIFICATION HISTORY
|
|
//
|
|
// 03/01/2000 Original version.
|
|
// 04/19/2000 Marshall SDOs across apartments.
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include <proxypch.h>
|
|
#include <policypage.h>
|
|
#include <profileprop.h>
|
|
|
|
ProxyPolicyPage::ProxyPolicyPage(
|
|
LONG_PTR notifyHandle,
|
|
LPARAM notifyParam,
|
|
Sdo& policySdo,
|
|
Sdo& profileSdo,
|
|
SdoConnection& connection,
|
|
bool useName
|
|
)
|
|
: SnapInPropertyPage(notifyHandle, notifyParam, true, IDD_PROXY_POLICY),
|
|
policyStream(policySdo),
|
|
profileStream(profileSdo),
|
|
cxn(connection)
|
|
{
|
|
if (useName) { policySdo.getName(name); }
|
|
}
|
|
|
|
BOOL ProxyPolicyPage::OnInitDialog()
|
|
{
|
|
// Unmarshal the interfaces.
|
|
policyStream.get(policy);
|
|
profileStream.get(profile);
|
|
|
|
// Get the conditions.
|
|
policy.getValue(PROPERTY_POLICY_CONDITIONS_COLLECTION, conditions);
|
|
|
|
SnapInPropertyPage::OnInitDialog();
|
|
|
|
initControl(IDC_LIST_POLICYPAGE1_CONDITIONS, listBox);
|
|
|
|
condList.finalConstruct(
|
|
m_hWnd,
|
|
cxn.getCIASAttrList(),
|
|
ALLOWEDINPROXYCONDITION,
|
|
cxn.getDictionary(),
|
|
conditions,
|
|
cxn.getMachineName(),
|
|
name
|
|
);
|
|
return condList.onInitDialog();
|
|
}
|
|
|
|
void ProxyPolicyPage::onAddCondition()
|
|
{
|
|
BOOL modified = FALSE;
|
|
condList.onAdd(modified);
|
|
if (modified) { SetModified(); }
|
|
}
|
|
|
|
void ProxyPolicyPage::onEditCondition()
|
|
{
|
|
BOOL handled, modified = FALSE;
|
|
condList.onEdit(modified, handled);
|
|
if (modified) { SetModified(); }
|
|
}
|
|
|
|
void ProxyPolicyPage::onRemoveCondition()
|
|
{
|
|
BOOL handled, modified = FALSE;
|
|
condList.onRemove(modified, handled);
|
|
if (modified) { SetModified(); }
|
|
}
|
|
|
|
void ProxyPolicyPage::onEditProfile()
|
|
{
|
|
ProxyProfileProperties sheet(profile, cxn);
|
|
if (sheet.DoModal() != IDCANCEL)
|
|
{
|
|
SetModified();
|
|
}
|
|
}
|
|
|
|
void ProxyPolicyPage::getData()
|
|
{
|
|
// There must be at least one condition.
|
|
if (listBox.GetCount() == 0)
|
|
{
|
|
fail(IDC_LIST_POLICYPAGE1_CONDITIONS, IDS_POLICY_E_NO_CONDITIONS, false);
|
|
}
|
|
|
|
getValue(IDC_EDIT_NAME, name);
|
|
|
|
// The user must specify a name ...
|
|
if (name.Length() == 0)
|
|
{
|
|
fail(IDC_EDIT_NAME, IDS_POLICY_E_NAME_EMPTY);
|
|
}
|
|
|
|
// The name must be unique.
|
|
if (!policy.setName(name))
|
|
{
|
|
fail(IDC_EDIT_NAME, IDS_POLICY_E_NOT_UNIQUE);
|
|
}
|
|
}
|
|
|
|
void ProxyPolicyPage::setData()
|
|
{
|
|
setValue(IDC_EDIT_NAME, name);
|
|
}
|
|
|
|
void ProxyPolicyPage::saveChanges()
|
|
{
|
|
if (!condList.onApply()) { AfxThrowUserException(); }
|
|
|
|
policy.setValue(PROPERTY_POLICY_PROFILE_NAME, name);
|
|
policy.apply();
|
|
|
|
profile.setName(name);
|
|
profile.apply();
|
|
}
|
|
|
|
void ProxyPolicyPage::discardChanges()
|
|
{
|
|
policy.restore();
|
|
profile.restore();
|
|
SdoCollection attributes;
|
|
profile.getValue(PROPERTY_PROFILE_ATTRIBUTES_COLLECTION, attributes);
|
|
attributes.reload();
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(ProxyPolicyPage, SnapInPropertyPage)
|
|
ON_BN_CLICKED(IDC_BUTTON_CONDITION_ADD, onAddCondition)
|
|
ON_BN_CLICKED(IDC_BUTTON_CONDITION_EDIT, onEditCondition)
|
|
ON_BN_CLICKED(IDC_BUTTON_CONDITION_REMOVE, onRemoveCondition)
|
|
ON_BN_CLICKED(IDC_BUTTON_EDITPROFILE, onEditProfile)
|
|
ON_LBN_DBLCLK(IDC_LIST_CONDITIONS, onEditCondition)
|
|
ON_EN_CHANGE(IDC_EDIT_NAME, onChange)
|
|
END_MESSAGE_MAP()
|