// 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(" ","0"); m_cbRate.AddRow(" ","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 }