Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

197 lines
4.4 KiB

//+---------------------------------------------------------------------------
//
// 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();
}