Files
ayanova7/archive/ayanova 1.9.4 CE final release db schema 171/sp/UserPrefsDlg.cpp

261 lines
6.0 KiB
C++

// UserPrefsDlg.cpp : implementation file
//
#include "stdafx.h"
#include "sp.h"
#include "UserPrefsDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CUserPrefsDlg dialog
CUserPrefsDlg::CUserPrefsDlg(CWnd* pParent /*=NULL*/)
: CDialog(CUserPrefsDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CUserPrefsDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_pApp= (CSpApp*)AfxGetApp();
/*
rs=new GZRset("User preferences RSET dialog");
rs->SetConnect(m_pApp->strConnectString);
*/
//Initialize recordset pointer
rs=m_pApp->rsPool->GetRS("CUserPrefsDlg");
}
void CUserPrefsDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CUserPrefsDlg)
DDX_Control(pDX, IDC_CKONEDAY, m_ckOneDay);
DDX_Control(pDX, IDC_CK_SCHEDROUND, m_ckSchedRnd);
DDX_Control(pDX, IDC_DTSCHEDSTOP, m_dtStop);
DDX_Control(pDX, IDC_DTSCHEDSTART, m_dtStart);
DDX_Control(pDX, IDC_CKONSITE, m_ckOnsite);
DDX_Control(pDX, IDC_CBDEFTRAVEL, m_cbDefTravelRate);
DDX_Control(pDX, IDC_CBDEFRATE, m_cbRate);
//}}AFX_DATA_MAP
DDX_Control(pDX, IDC_CKHGRID, m_ckHGrid);
}
BEGIN_MESSAGE_MAP(CUserPrefsDlg, CDialog)
//{{AFX_MSG_MAP(CUserPrefsDlg)
ON_BN_CLICKED(IDC_BTNDONE, OnBtndone)
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_CKHGRID, OnBnClickedCkhgrid)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CUserPrefsDlg message handlers
void CUserPrefsDlg::OnBtndone()
{
//save preferences
CString q,defonsite,schedrnd,schedoneday,strHGrid;
long lStart,lStop;
COleDateTime dtData;
m_dtStop.GetTime(dtData);
lStop=dtData.GetHour();
m_dtStart.GetTime(dtData);
lStart=dtData.GetHour();
//default onsite/inhouse
if(m_ckOnsite.GetCheck()==TRUE)
{
defonsite="True";
m_pApp->m_bDefOnsite=true;
}
else
{
defonsite="False";
m_pApp->m_bDefOnsite=false;
}
//default Horizontal grid on main workorder list screen
if(m_ckHGrid.GetCheck()==TRUE)
{
strHGrid="True";
m_pApp->m_bDefShowHGridOnMainScreen=true;
}
else
{
strHGrid="False";
m_pApp->m_bDefShowHGridOnMainScreen=false;
}
//schedule rounding
if(m_ckSchedRnd.GetCheck()==TRUE)
{
schedrnd="True";
m_pApp->m_bDefSchedRnd=true;
}
else
{
schedrnd="False";
m_pApp->m_bDefSchedRnd=false;
}
//schedule schedoneday
if(m_ckOneDay.GetCheck()==TRUE)
{
schedoneday="True";
m_pApp->m_bDefSchedOneDay=true;
}
else
{
schedoneday="False";
m_pApp->m_bDefSchedOneDay=false;
}
q.Format("UPDATE users SET users.defonsite = %s, users.hgrid = %s, users.defrate = %s, users.deftravelrate = %s, "
"users.defschedstarthour=%u, users.defschedstophour=%u, schedrnd = %s, schedoneday=%s "
"WHERE (((users.id)=%u));",defonsite,strHGrid,m_cbRate.GetCurrentRowID(),
m_cbDefTravelRate.GetCurrentRowID(),lStart,lStop,schedrnd, schedoneday, m_pApp->m_lusrID);
rs->Ex(q);
CDialog::OnOK();
}
void CUserPrefsDlg::FillLists()
{
//fill travel and regular rates list boxes
CString strData;
CString strIndex;
long lData;
bool bData;
m_cbDefTravelRate.Clear();
m_cbRate.Clear();
m_cbDefTravelRate.AddRow(" <no default>","0");
m_cbRate.AddRow(" <no default>","0");
rs->Query("SELECT rates.* FROM rates ORDER BY rates.name;");
if(!rs->IsEmpty())
{
//fill combo box with available categories
rs->MoveFirst();
rs->FetchField("travelrate",&bData);
rs->FetchField("name",&strData);
rs->FetchField("id",&lData);
strIndex.Format("%u",lData);
if(bData==true)//it's a travel rate
m_cbDefTravelRate.AddRow(strData,strIndex);
else
m_cbRate.AddRow(strData,strIndex);
while(rs->MoveForward())
{
rs->FetchField("travelrate",&bData);
rs->FetchField("name",&strData);
rs->FetchField("id",&lData);
strIndex.Format("%u",lData);
if(bData==true)//it's a travel rate
m_cbDefTravelRate.AddRow(strData,strIndex);
else
m_cbRate.AddRow(strData,strIndex);
}
//select default rate
m_cbRate.SetCurSel(0);
m_cbDefTravelRate.SetCurSel(0);
}
}
BOOL CUserPrefsDlg::OnInitDialog()
{
CDialog::OnInitDialog();
Security();
FillLists();
FillFields();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
CUserPrefsDlg::~CUserPrefsDlg()
{
m_pApp->rsPool->ReleaseRS(&rs->m_nID);
}
void CUserPrefsDlg::FillFields()
{
CString q,strData;
long lData;
bool bData;
COleDateTime dtData;
q.Format("SELECT users.* "
"FROM users "
"WHERE (((users.id)=%u));",m_pApp->m_lusrID);
rs->Query(q);
rs->FetchField("defrate",&lData);
strData.Format("%u",lData);
m_cbRate.Select(strData);
rs->FetchField("deftravelrate",&lData);
strData.Format("%u",lData);
m_cbDefTravelRate.Select(strData);
rs->FetchField("defonsite",&bData);
m_ckOnsite.SetCheck(bData ? TRUE:FALSE);
rs->FetchField("hgrid",&bData);
m_ckHGrid.SetCheck(bData ? TRUE:FALSE);
rs->FetchField("defschedstarthour",&lData);
dtData.SetTime((int)lData,0,0);
m_dtStart.SetTime(dtData);
rs->FetchField("defschedstophour",&lData);
dtData.SetTime((int)lData,0,0);
m_dtStop.SetTime(dtData);
rs->FetchField("schedrnd",&bData);
m_ckSchedRnd.SetCheck(bData ? TRUE:FALSE);
rs->FetchField("schedoneday",&bData);
m_ckOneDay.SetCheck(bData ? TRUE:FALSE);
}
void CUserPrefsDlg::Security()
{
int x=m_pApp->Allowed(RUSERPREFS,true);
if(x==0)
{
m_pApp->SecurityWarning();
CDialog::OnCancel();
}
if(x==2)
{
m_bReadOnly=true;
m_cbDefTravelRate.EnableWindow(FALSE);
m_cbRate.EnableWindow(FALSE);
m_ckOnsite.EnableWindow(FALSE);
m_ckHGrid.EnableWindow(FALSE);
m_dtStart.EnableWindow(FALSE);
m_dtStop.EnableWindow(FALSE);
}
else
m_bReadOnly=false;
}
void CUserPrefsDlg::OnBnClickedCkhgrid()
{
// Didn't need this, but easier to leave in
}