// NewSystemDlg.cpp : implementation file
//

#include "stdafx.h"
#include "snapin.h"
#include "NewSystemDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CNewSystemDlg dialog


CNewSystemDlg::CNewSystemDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CNewSystemDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CNewSystemDlg)
	m_sName = _T("");
	//}}AFX_DATA_INIT

}


void CNewSystemDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CNewSystemDlg)
	DDX_Text(pDX, IDC_EDIT_MACHINE_NAME, m_sName);
	DDV_MaxChars(pDX, m_sName, 255);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CNewSystemDlg, CDialog)
	//{{AFX_MSG_MAP(CNewSystemDlg)
	ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CNewSystemDlg message handlers

void CNewSystemDlg::OnBrowse() 
{
	LPMALLOC pMalloc;
	if( ::SHGetMalloc(&pMalloc) == NOERROR )
	{
		BROWSEINFO bi;
		TCHAR szBuffer[MAX_PATH];
		LPITEMIDLIST pidlNet;
		LPITEMIDLIST pidl;
		
		if( ::SHGetSpecialFolderLocation(GetSafeHwnd(),CSIDL_NETWORK,&pidlNet) != NOERROR )
			return;

    CString sResString;
    sResString.LoadString(IDS_STRING_BROWSE_SYSTEM);

		bi.hwndOwner = GetSafeHwnd();
		bi.pidlRoot = pidlNet;
		bi.pszDisplayName = szBuffer;
		bi.lpszTitle = LPCTSTR(sResString);
		bi.ulFlags = BIF_BROWSEFORCOMPUTER;
		bi.lpfn = NULL;
		bi.lParam = 0;

		if( (pidl = ::SHBrowseForFolder(&bi)) != NULL )
		{			
			m_sName = szBuffer;
			UpdateData(FALSE);			
			pMalloc->Free(pidl);
		}
		pMalloc->Free(pidlNet);
		pMalloc->Release();
	}
}

void CNewSystemDlg::OnOK() 
{
	UpdateData();
	
	if( m_sName.IsEmpty() )	
	{
		MessageBeep(MB_ICONEXCLAMATION);
		return;
	}

	IWbemServices* pServices = NULL;
	BOOL bAvail = FALSE;

	if( CnxGetConnection(m_sName,pServices,bAvail) == E_FAIL )
	{
		MessageBeep(MB_ICONEXCLAMATION);
		return;
	}

	if( pServices )
	{
		pServices->Release();
	}

	CDialog::OnOK();
}