411 lines
11 KiB
C++
411 lines
11 KiB
C++
// DataProvidersOptions.cpp : implementation file
|
|
//
|
|
// This file is a part of the XTREME TOOLKIT PRO MFC class library.
|
|
// (c)1998-2008 Codejock Software, All Rights Reserved.
|
|
//
|
|
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
|
|
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
|
|
// CONSENT OF CODEJOCK SOFTWARE.
|
|
//
|
|
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
|
|
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
|
|
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
|
|
// SINGLE COMPUTER.
|
|
//
|
|
// CONTACT INFORMATION:
|
|
// support@codejock.com
|
|
// http://www.codejock.com
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "stdafx.h"
|
|
#include "calendardemo.h"
|
|
#include "DataProvidersOptions.h"
|
|
#include "CalendarDemoDoc.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
const CString cstrMemExt = _T(".xtp_cal");
|
|
const CString cstrDbExt = _T(".mdb");
|
|
|
|
extern BOOL IsFileExist(LPCTSTR pcszFile);
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDataProvidersOptions dialog
|
|
|
|
CDataProvidersOptions::CDataProvidersOptions(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CDataProvidersOptions::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CDataProvidersOptions)
|
|
//}}AFX_DATA_INIT
|
|
|
|
m_bWarnIfExist = FALSE;
|
|
m_strTitle = _T("Select data provider and data file");
|
|
|
|
m_bOpenMode = FALSE;
|
|
|
|
m_eMode = modeAll;
|
|
|
|
m_bIsDPWasChanged = FALSE;
|
|
m_bIsFileWasChanged = FALSE;
|
|
|
|
m_bInitFromProfile = TRUE;
|
|
m_bSaveToProfile = TRUE;
|
|
}
|
|
|
|
void CDataProvidersOptions::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CDataProvidersOptions)
|
|
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_MEM_DP, m_ctrlUseMemDP);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_DB_DP, m_ctrlUseDBDP);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_MAPI_DP, m_ctrlUseMAPIDP);
|
|
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_MEM_DP_HELP, m_ctrlMemFileHelp);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_MEM_DP_FRAME, m_ctrlMemFrame);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_MEM_DP_FILE_BROWSE, m_ctrlMemFileBrowse);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_MEM_DP_FILE_LABEL, m_ctrlMemFileLabel);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_MEM_DP_FILE, m_ctrlMemFile);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_DB_DP_HELP, m_ctrlDBFileHelp);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_DB_DP_FRAME, m_ctrlDBFrame);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_DB_DP_FILE_LABEL, m_ctrlDBFileLabel);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_DB_DP_FILE_BROWSE, m_ctrlDBFileBrowse);
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_DB_DP_FILE, m_ctrlDBFile);
|
|
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_MAPI_DP_FRAME, m_ctrlMAPIFrame);
|
|
|
|
DDX_Control(pDX, IDC_DPFOPT_USE_DB_MAPI_LABEL, m_ctrlMAPILabel);
|
|
|
|
DDX_Control(pDX, IDOK, m_ctrlOK);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CDataProvidersOptions, CDialog)
|
|
//{{AFX_MSG_MAP(CDataProvidersOptions)
|
|
ON_BN_CLICKED(IDC_DPFOPT_USE_MEM_DP_FILE_BROWSE, OnMemDPFileBrowse)
|
|
ON_BN_CLICKED(IDC_DPFOPT_USE_DB_DP_FILE_BROWSE, OnDBDPFileBrowse)
|
|
ON_BN_CLICKED(IDC_DPFOPT_USE_DB_DP, OnUseDBDP)
|
|
ON_BN_CLICKED(IDC_DPFOPT_USE_MEM_DP, OnUseMemDP)
|
|
ON_BN_CLICKED(IDC_DPFOPT_USE_MAPI_DP, OnUseMAPIDP)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CDataProvidersOptions message handlers
|
|
|
|
BOOL CDataProvidersOptions::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
SetWindowText(m_strTitle);
|
|
|
|
if (m_bInitFromProfile)
|
|
{
|
|
m_strUseDP_Prev = AfxGetApp()->GetProfileString(cstrDP_Opt_section, cstrUseDP_opt);
|
|
|
|
m_strMemDPFile_Prev = AfxGetApp()->GetProfileString(cstrDP_Opt_section, cstrUseDP_Mem_File_opt);
|
|
m_ctrlMemFile.SetWindowText(m_strMemDPFile_Prev);
|
|
|
|
m_strDBDPFile_Prev = AfxGetApp()->GetProfileString(cstrDP_Opt_section, cstrUseDP_DB_File_opt);
|
|
m_ctrlDBFile.SetWindowText(m_strDBDPFile_Prev);
|
|
|
|
if(m_strUseDP_Prev.CompareNoCase(cstrUseDP_Mem_optval) == 0) {
|
|
OnUseMemDP();
|
|
}
|
|
else if(m_strUseDP_Prev.CompareNoCase(cstrUseDP_DB_optval) == 0) {
|
|
OnUseDBDP();
|
|
}
|
|
else if(m_strUseDP_Prev.CompareNoCase(cstrUseDP_MAPI_optval) == 0) {
|
|
OnUseMAPIDP();
|
|
}
|
|
else {
|
|
ASSERT(m_strUseDP_Prev.IsEmpty());
|
|
|
|
OnUseMemDP();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
int eDPType = CXTPCalendarControl::DataProviderTypeFromConStr(m_strConnectionString);
|
|
CString strFile = CXTPCalendarControl::DataSourceFromConStr(m_strConnectionString);
|
|
|
|
switch (eDPType)
|
|
{
|
|
case xtpCalendarDataProviderMemory:
|
|
m_ctrlMemFile.SetWindowText(strFile);
|
|
OnUseMemDP();
|
|
break;
|
|
case xtpCalendarDataProviderDatabase:
|
|
m_ctrlDBFile.SetWindowText(strFile);
|
|
OnUseDBDP();
|
|
break;
|
|
case xtpCalendarDataProviderMAPI:
|
|
OnUseMAPIDP();
|
|
break;
|
|
default:
|
|
OnUseMemDP();
|
|
}
|
|
}
|
|
|
|
if (m_eMode == modeMemOnly)
|
|
{
|
|
m_ctrlUseMemDP.EnableWindow(TRUE);
|
|
m_ctrlUseDBDP.EnableWindow(FALSE);
|
|
m_ctrlUseMAPIDP.EnableWindow(FALSE);
|
|
}
|
|
if (m_eMode == modeDBOnly)
|
|
{
|
|
m_ctrlUseMemDP.EnableWindow(FALSE);
|
|
m_ctrlUseDBDP.EnableWindow(TRUE);
|
|
m_ctrlUseMAPIDP.EnableWindow(FALSE);
|
|
}
|
|
|
|
CenterWindow();
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
BOOL CDataProvidersOptions::CheckExist(LPCTSTR pcszFile)
|
|
{
|
|
if(m_bWarnIfExist && IsFileExist(pcszFile))
|
|
{
|
|
int nRes = AfxMessageBox(_T("The spesified file is exist.\n Wold You like to overwrite it?"), MB_YESNO);
|
|
return (nRes == IDYES);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void CDataProvidersOptions::OnOK()
|
|
{
|
|
CString strConn_Prev = m_strConnectionString;
|
|
|
|
CString strDataFile;
|
|
if(m_ctrlUseMemDP.GetCheck())
|
|
{
|
|
m_ctrlMemFile.GetWindowText(strDataFile);
|
|
|
|
if(strDataFile.IsEmpty()) {
|
|
AfxMessageBox(_T("Please enter Data file name."));
|
|
m_ctrlMemFile.SetFocus();
|
|
return;
|
|
}
|
|
if (strDataFile.Right(cstrMemExt.GetLength()).CompareNoCase(cstrMemExt))
|
|
{
|
|
CString strMsg;
|
|
strMsg.Format(IDS_MSG_EXT, cstrMemExt);
|
|
if (AfxMessageBox(strMsg, MB_YESNO) == IDYES)
|
|
{
|
|
strDataFile += cstrMemExt;
|
|
m_ctrlMemFile.SetWindowText(strDataFile);
|
|
}
|
|
}
|
|
if(!CheckExist(strDataFile)) {
|
|
m_ctrlMemFile.SetFocus();
|
|
return;
|
|
}
|
|
|
|
//*******************
|
|
m_strConnectionString.Format(_T("Provider=XML;Data Source='%s';"), strDataFile);
|
|
|
|
if (m_bSaveToProfile)
|
|
{
|
|
AfxGetApp()->WriteProfileString(cstrDP_Opt_section, cstrUseDP_opt,
|
|
cstrUseDP_Mem_optval);
|
|
AfxGetApp()->WriteProfileString(cstrDP_Opt_section, cstrUseDP_Mem_File_opt,
|
|
strDataFile);
|
|
}
|
|
|
|
m_bIsDPWasChanged = m_strUseDP_Prev.CompareNoCase(cstrUseDP_Mem_optval);
|
|
m_bIsFileWasChanged = m_strMemDPFile_Prev.CompareNoCase(strDataFile);
|
|
}
|
|
else if(m_ctrlUseDBDP.GetCheck())
|
|
{
|
|
m_ctrlDBFile.GetWindowText(strDataFile);
|
|
|
|
if(strDataFile.IsEmpty()) {
|
|
AfxMessageBox(_T("Please enter Data file name."));
|
|
m_ctrlDBFile.SetFocus();
|
|
return;
|
|
}
|
|
if (strDataFile.Right(cstrDbExt.GetLength()).CompareNoCase(cstrDbExt))
|
|
{
|
|
CString strMsg;
|
|
strMsg.Format(IDS_MSG_EXT, cstrDbExt);
|
|
if (AfxMessageBox(strMsg, MB_YESNO) == IDYES)
|
|
{
|
|
strDataFile += cstrDbExt;
|
|
m_ctrlDBFile.SetWindowText(strDataFile);
|
|
}
|
|
}
|
|
if(!CheckExist(strDataFile)) {
|
|
m_ctrlDBFile.SetFocus();
|
|
return;
|
|
}
|
|
|
|
//*******************
|
|
m_strConnectionString.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='%s';"), strDataFile);
|
|
|
|
if (m_bSaveToProfile)
|
|
{
|
|
|
|
AfxGetApp()->WriteProfileString(cstrDP_Opt_section, cstrUseDP_opt,
|
|
cstrUseDP_DB_optval);
|
|
AfxGetApp()->WriteProfileString(cstrDP_Opt_section, cstrUseDP_DB_File_opt,
|
|
strDataFile);
|
|
}
|
|
|
|
m_bIsDPWasChanged = m_strUseDP_Prev.CompareNoCase(cstrUseDP_DB_optval);
|
|
m_bIsFileWasChanged = m_strDBDPFile_Prev.CompareNoCase(strDataFile);
|
|
}
|
|
else if(m_ctrlUseMAPIDP.GetCheck())
|
|
{
|
|
m_strConnectionString.Format(_T("Provider=MAPI;"));
|
|
|
|
if (m_bSaveToProfile)
|
|
{
|
|
AfxGetApp()->WriteProfileString(cstrDP_Opt_section, cstrUseDP_opt,
|
|
cstrUseDP_MAPI_optval);
|
|
}
|
|
|
|
m_bIsDPWasChanged = m_strUseDP_Prev.CompareNoCase(cstrUseDP_MAPI_optval);
|
|
}
|
|
else {
|
|
ASSERT(FALSE);
|
|
return;
|
|
}
|
|
|
|
//======================
|
|
if (!m_bInitFromProfile)
|
|
{
|
|
m_bIsDPWasChanged = CXTPCalendarControl::DataProviderTypeFromConStr(strConn_Prev) !=
|
|
CXTPCalendarControl::DataProviderTypeFromConStr(m_strConnectionString);
|
|
|
|
m_bIsFileWasChanged = CXTPCalendarControl::DataSourceFromConStr(strConn_Prev) !=
|
|
CXTPCalendarControl::DataSourceFromConStr(m_strConnectionString);
|
|
}
|
|
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
CString CDataProvidersOptions::FileBrowse(const CString& strFileName,
|
|
const CString& strDefExt,
|
|
const CString& strFilter)
|
|
{
|
|
CFileDialog dlgFile(m_bOpenMode, strDefExt, strFileName,
|
|
OFN_PATHMUSTEXIST | OFN_ENABLESIZING,
|
|
strFilter, this);
|
|
|
|
dlgFile.m_ofn.lpstrTitle = _T("Select file");
|
|
|
|
if(dlgFile.DoModal() == IDOK) {
|
|
return dlgFile.GetPathName();
|
|
}
|
|
return _T("");
|
|
}
|
|
|
|
void CDataProvidersOptions::OnMemDPFileBrowse()
|
|
{
|
|
CString strFileName;
|
|
m_ctrlMemFile.GetWindowText(strFileName);
|
|
|
|
strFileName = FileBrowse(strFileName, _T("xtp_cal"),
|
|
_T("Calendar binary files(*.xtp_cal)|*.xtp_cal|All Files (*.*)|*.*||"));
|
|
|
|
if(!strFileName.IsEmpty()) {
|
|
m_ctrlMemFile.SetWindowText(strFileName);
|
|
}
|
|
}
|
|
|
|
void CDataProvidersOptions::OnDBDPFileBrowse()
|
|
{
|
|
CString strFileName;
|
|
m_ctrlDBFile.GetWindowText(strFileName);
|
|
|
|
strFileName = FileBrowse(strFileName, _T("mdb"),
|
|
_T("Calendar DB(*.mdb)|*.mdb|All Files (*.*)|*.*||"));
|
|
|
|
if(!strFileName.IsEmpty()) {
|
|
m_ctrlDBFile.SetWindowText(strFileName);
|
|
}
|
|
|
|
}
|
|
|
|
void CDataProvidersOptions::OnUseMAPIDP()
|
|
{
|
|
m_ctrlUseMemDP.SetCheck(0);
|
|
m_ctrlUseDBDP.SetCheck(0);
|
|
m_ctrlUseMAPIDP.SetCheck(1);
|
|
|
|
EnableMemDPcontrols(FALSE);
|
|
EnableDBDPcontrols(FALSE);
|
|
EnableMAPIDPcontrols(TRUE);
|
|
}
|
|
|
|
void CDataProvidersOptions::OnUseDBDP()
|
|
{
|
|
m_ctrlUseMemDP.SetCheck(0);
|
|
m_ctrlUseDBDP.SetCheck(1);
|
|
m_ctrlUseMAPIDP.SetCheck(0);
|
|
|
|
EnableMemDPcontrols(FALSE);
|
|
EnableDBDPcontrols(TRUE);
|
|
EnableMAPIDPcontrols(FALSE);
|
|
}
|
|
|
|
void CDataProvidersOptions::OnUseMemDP()
|
|
{
|
|
m_ctrlUseMemDP.SetCheck(1);
|
|
m_ctrlUseDBDP.SetCheck(0);
|
|
m_ctrlUseMAPIDP.SetCheck(0);
|
|
|
|
EnableMemDPcontrols(TRUE);
|
|
EnableDBDPcontrols(FALSE);
|
|
EnableMAPIDPcontrols(FALSE);
|
|
}
|
|
|
|
void CDataProvidersOptions::OnCancel()
|
|
{
|
|
// TODO: Add extra cleanup here
|
|
|
|
CDialog::OnCancel();
|
|
}
|
|
|
|
void CDataProvidersOptions::EnableMAPIDPcontrols(BOOL bEnable)
|
|
{
|
|
m_ctrlMAPIFrame.EnableWindow(bEnable);
|
|
m_ctrlMAPILabel.EnableWindow(bEnable);
|
|
}
|
|
|
|
void CDataProvidersOptions::EnableDBDPcontrols(BOOL bEnable)
|
|
{
|
|
m_ctrlDBFrame.EnableWindow(bEnable);
|
|
m_ctrlDBFileLabel.EnableWindow(bEnable);
|
|
m_ctrlDBFile.EnableWindow(bEnable);
|
|
m_ctrlDBFileBrowse.EnableWindow(bEnable);
|
|
m_ctrlDBFileHelp.EnableWindow(bEnable);
|
|
}
|
|
|
|
void CDataProvidersOptions::EnableMemDPcontrols(BOOL bEnable)
|
|
{
|
|
m_ctrlMemFrame.EnableWindow(bEnable);
|
|
m_ctrlMemFileLabel.EnableWindow(bEnable);
|
|
m_ctrlMemFile.EnableWindow(bEnable);
|
|
m_ctrlMemFileBrowse.EnableWindow(bEnable);
|
|
m_ctrlMemFileHelp.EnableWindow(bEnable);
|
|
}
|
|
|
|
BOOL CDataProvidersOptions::IsDPWasChanged() const
|
|
{
|
|
return m_bIsDPWasChanged;
|
|
}
|
|
|
|
BOOL CDataProvidersOptions::IsFileWasChanged() const
|
|
{
|
|
return m_bIsFileWasChanged;
|
|
}
|