pcsx2/plugins/cdvd/CDVDdraft/Src/Config.cpp

173 lines
4.3 KiB
C++

// Config.cpp : implementation file
//
#include "stdafx.h"
#include "cdvddraft.h"
#include "Config.h"
#include <atlbase.h>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CConfig dialog
CConfig::CConfig(CWnd* pParent /*=NULL*/)
: CDialog(CConfig::IDD, pParent)
{
//{{AFX_DATA_INIT(CConfig)
m_nInterface = 0;
m_nBuffMode = 0;
m_nDrive = 0;
m_nReadMode = 0;
//}}AFX_DATA_INIT
}
void CConfig::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CConfig)
DDX_Control(pDX, IDC_DRIVE, m_ctrlDrive);
DDX_CBIndex(pDX, IDC_INTERFACE, m_nInterface);
DDX_CBIndex(pDX, IDC_PREFETCH, m_nBuffMode);
DDX_CBIndex(pDX, IDC_DRIVE, m_nDrive);
DDX_CBIndex(pDX, IDC_READMODE, m_nReadMode);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CConfig, CDialog)
//{{AFX_MSG_MAP(CConfig)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CConfig message handlers
BOOL CConfig::OnInitDialog()
{
int nResult = CDialog::OnInitDialog();
TRACE("on init dialog.\n");
int curr_intf = (CDVD_INTERFACE_TYPE)
cdvd_init(CDVD_INTF_UNKNOWN);
int init_okay = CDVD_ERROR_FAIL;
if(curr_intf == CDVD_INTF_UNKNOWN)
{
if(CCdvd::Aspi_CheckValidInstallation()
== CDVD_ERROR_SUCCESS)
{
init_okay = cdvd_init(CDVD_INTF_ASPI);
TRACE("config: init_aspi: %ld\n", init_okay);
}
else if(CCdvd::GetWin32OSType() == WINNTNEW)
{
TRACE("config: init_ioctl: %ld\n", init_okay);
init_okay = cdvd_init(CDVD_INTF_IOCTL);
}
else
{
curr_intf = CDVD_INTF_UNKNOWN;
TRACE("config: init_unknown: %ld\n", init_okay);
}
}
// else already either init to ioctl or aspi
else
{
TRACE("config: already previously init.\n");
init_okay = CDVD_ERROR_SUCCESS;
}
if(init_okay == CDVD_ERROR_SUCCESS)
{
ADAPTERINFO info;
int ndrives = cdvd_getnumdrives();
if(ndrives > 0)
{
for(int i = 0; i < ndrives; i++)
{
CString str;
info = cdvd_getadapterdetail(i);
str.Format(_T(" %d:%d:%d %s"),
info.ha, info.id, info.lun, info.name
);
TRACE("str: %s\n", str);
m_ctrlDrive.InsertString(i, str);
}
}
else
{
MessageBox(_T("Unable to locate c/dvd drives on this computer\n"),
_T("Drive Error"),
MB_OK|MB_ICONERROR);
}
if(curr_intf == CDVD_INTF_UNKNOWN &&
init_okay == CDVD_ERROR_SUCCESS)
cdvd_shutdown();
}
LoadConfig();
return TRUE;
}
void CConfig::OnOK()
{
SaveConfig();
CDialog::OnOK();
}
/////////////////////////////////////////////////////////////////////////////
// save/load stuff
BOOL CConfig::SaveConfig()
{
CRegKey rKey;
if(rKey.Create(HKEY_CURRENT_USER, PLUGIN_REG_PATH) == ERROR_SUCCESS)
{
UpdateData(TRUE);
if(m_nDrive != -1)
{
rKey.SetValue(m_nDrive, _T("DriveNum"));
rKey.SetValue(m_nBuffMode, _T("BuffMode"));
rKey.SetValue(m_nInterface, _T("Interface"));
rKey.SetValue(m_nReadMode, _T("ReadMode"));
}
rKey.Close();
}
return TRUE;
}
BOOL CConfig::LoadConfig()
{
CRegKey rKey;
if(rKey.Create(HKEY_CURRENT_USER, PLUGIN_REG_PATH) == ERROR_SUCCESS)
{
DWORD val;
if(rKey.QueryValue(val, _T("DriveNum")) == ERROR_SUCCESS)
m_nDrive = val;
if(rKey.QueryValue(val, _T("BuffMode")) == ERROR_SUCCESS)
m_nBuffMode = val;
if(rKey.QueryValue(val, _T("Interface")) == ERROR_SUCCESS)
m_nInterface = val;
if(rKey.QueryValue(val, _T("ReadMode")) == ERROR_SUCCESS)
m_nReadMode = val;
UpdateData(FALSE);
rKey.Close();
}
return TRUE;
}