198 lines
4.4 KiB
C++
198 lines
4.4 KiB
C++
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation 1996-2001.
|
|
//
|
|
// File: newprof.cpp
|
|
//
|
|
// Contents: implementation of CNewProfile
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#include "stdafx.h"
|
|
#include "wsecmgr.h"
|
|
#include "cookie.h"
|
|
#include "snapmgr.h"
|
|
#include "NewProf.h"
|
|
#include "util.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CNewProfile dialog
|
|
|
|
|
|
CNewProfile::CNewProfile(CWnd* pParent /*=NULL*/)
|
|
: CHelpDialog(a225HelpIDs, IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CNewProfile)
|
|
m_strNewFile = _T("");
|
|
m_strDescription = _T("");
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
void CNewProfile::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CNewProfile)
|
|
DDX_Control(pDX, IDOK, m_btnOK);
|
|
DDX_Text(pDX, IDC_CONFIG_NAME, m_strNewFile);
|
|
DDX_Text(pDX, IDC_DESCRIPTION, m_strDescription);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CNewProfile, CHelpDialog)
|
|
//{{AFX_MSG_MAP(CNewProfile)
|
|
ON_EN_CHANGE(IDC_CONFIG_NAME, OnChangeConfigName)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
void CNewProfile::Initialize(CFolder *pFolder, CComponentDataImpl *pCDI) {
|
|
m_pFolder = pFolder;
|
|
m_pCDI = pCDI;
|
|
m_strDescription.Empty();
|
|
m_strNewFile.Empty(); //Raid #401939.
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CNewProfile message handlers
|
|
|
|
|
|
void CNewProfile::OnChangeConfigName()
|
|
{
|
|
UpdateData(TRUE);
|
|
m_btnOK.EnableWindow(!m_strNewFile.IsEmpty());
|
|
}
|
|
|
|
void CNewProfile::OnOK()
|
|
{
|
|
CString strExt;
|
|
CString strFile;
|
|
int i = 0;
|
|
|
|
UpdateData(TRUE);
|
|
//
|
|
// Make sure the file name is correct.
|
|
//
|
|
i = m_strNewFile.ReverseFind( L'.' );
|
|
if ( i >= 0 ) {
|
|
//
|
|
// If they provided an extension then replace it
|
|
//
|
|
strFile = m_strNewFile.Left(i);
|
|
} else {
|
|
//
|
|
// Otherwise add our own
|
|
//
|
|
strFile = m_strNewFile;
|
|
}
|
|
strExt.LoadString(IDS_PROFILE_DEF_EXT);
|
|
strExt = strFile + TEXT(".") + strExt;
|
|
|
|
strFile = m_pFolder->GetName();
|
|
strFile += TEXT("\\") + strExt;
|
|
|
|
CString strMsg;
|
|
|
|
//
|
|
// Make sure we can create the file
|
|
//
|
|
HANDLE hFile;
|
|
hFile = ExpandAndCreateFile(
|
|
strFile,
|
|
GENERIC_WRITE,
|
|
0,
|
|
NULL,
|
|
CREATE_NEW,
|
|
FILE_ATTRIBUTE_ARCHIVE,
|
|
NULL
|
|
);
|
|
if (hFile == INVALID_HANDLE_VALUE) {
|
|
LPTSTR pszErr;
|
|
CString strMsg;
|
|
|
|
FormatMessage(
|
|
FORMAT_MESSAGE_ALLOCATE_BUFFER |
|
|
FORMAT_MESSAGE_FROM_SYSTEM,
|
|
NULL,
|
|
GetLastError(),
|
|
0,
|
|
(LPTSTR)&pszErr,
|
|
0,
|
|
NULL
|
|
);
|
|
|
|
strMsg = pszErr + strFile;
|
|
AfxMessageBox(strMsg, MB_OK);
|
|
strFile.Empty();
|
|
return;
|
|
} else {
|
|
//
|
|
// Successfully Created the File
|
|
//
|
|
if (hFile) {
|
|
::CloseHandle( hFile );
|
|
}
|
|
//
|
|
// Delete it so we can create a new one in its place
|
|
//
|
|
DeleteFile( strFile );
|
|
CreateNewProfile(strFile);
|
|
|
|
|
|
LPNOTIFY pNotifier = NULL;
|
|
if (m_pCDI) {
|
|
pNotifier = m_pCDI->GetNotifier();
|
|
}
|
|
|
|
//
|
|
// Save the description in the template
|
|
//
|
|
if (!m_strDescription.IsEmpty()) {
|
|
|
|
CEditTemplate *pet;
|
|
if (m_pCDI) {
|
|
pet = m_pCDI->GetTemplate(strFile);
|
|
if (pet) {
|
|
pet->SetDescription(m_strDescription);
|
|
pet->Save();
|
|
}
|
|
}
|
|
}
|
|
|
|
if( LOCATIONS == m_pFolder->GetType() && !m_pFolder->IsEnumerated() ) //Raid #191582, 4/26/2001
|
|
{
|
|
DestroyWindow();
|
|
return;
|
|
}
|
|
|
|
if (pNotifier) {
|
|
pNotifier->ReloadLocation(m_pFolder,m_pCDI);
|
|
}
|
|
}
|
|
|
|
DestroyWindow();
|
|
}
|
|
|
|
|
|
BOOL CNewProfile::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
m_btnOK.EnableWindow(!m_strNewFile.IsEmpty());
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CNewProfile::OnCancel()
|
|
{
|
|
DestroyWindow();
|
|
}
|