00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "Schedule_AdvancedPage.h"
00009
00010 #ifdef _DEBUG
00011 #define new DEBUG_NEW
00012 #undef THIS_FILE
00013 static char THIS_FILE[] = __FILE__;
00014 #endif
00015
00016 IMPLEMENT_DYNCREATE(CSchedule_AdvancedPage, CPropertyPage)
00017
00018 CSchedule_AdvancedPage::CSchedule_AdvancedPage() : CPropertyPage(CSchedule_AdvancedPage::IDD)
00019 {
00020 m_psp.dwFlags |= PSP_USETITLE;
00021 m_psp.pszTitle = LS (L_ADVANCED);
00022 }
00023
00024 CSchedule_AdvancedPage::~CSchedule_AdvancedPage()
00025 {
00026 }
00027
00028 void CSchedule_AdvancedPage::DoDataExchange(CDataExchange* pDX)
00029 {
00030 CPropertyPage::DoDataExchange(pDX);
00031
00032
00033
00034 }
00035
00036 BEGIN_MESSAGE_MAP(CSchedule_AdvancedPage, CPropertyPage)
00037
00038 ON_BN_CLICKED(IDC_USECONFIRMATION, OnUseconfirmation)
00039 ON_BN_CLICKED(IDC_USEWAIT, OnUsewait)
00040 ON_EN_CHANGE(IDC_DURING, OnChangeDuring)
00041 ON_WM_CONTEXTMENU()
00042 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00043 ON_WM_HELPINFO()
00044 ON_BN_CLICKED(IDC_DISABLE, OnDisable)
00045 ON_BN_CLICKED(IDC_DELETE, OnDelete)
00046
00047 END_MESSAGE_MAP()
00048
00049 BOOL CSchedule_AdvancedPage::OnInitDialog()
00050 {
00051 CPropertyPage::OnInitDialog();
00052
00053 CheckDlgButton (IDC_USECONFIRMATION, m_task->uWaitForConfirmation > 0 ? BST_CHECKED : BST_UNCHECKED);
00054 CheckDlgButton (IDC_USEWAIT, m_task->uWaitForConfirmation == UINT_MAX || m_task->uWaitForConfirmation == 0 ? BST_UNCHECKED : BST_CHECKED);
00055
00056 CheckDlgButton (IDC_DELETE, m_task->dwFlags & SCHEDULE_AUTODEL ? BST_CHECKED : BST_UNCHECKED);
00057 CheckDlgButton (IDC_DISABLE, m_task->dwFlags & SCHEDULE_AUTODIS ? BST_CHECKED : BST_UNCHECKED);
00058
00059 ((CSpinButtonCtrl*) GetDlgItem (IDC_DURINGSPIN))->SetRange (1, UD_MAXVAL);
00060
00061 if (m_task->uWaitForConfirmation == UINT_MAX || m_task->uWaitForConfirmation == 0)
00062 SetDlgItemInt (IDC_DURING, 30);
00063 else
00064 SetDlgItemInt (IDC_DURING, m_task->uWaitForConfirmation);
00065
00066 UpdateEnabled ();
00067
00068 ApplyLanguage ();
00069
00070 return TRUE;
00071 }
00072
00073 void CSchedule_AdvancedPage::UpdateEnabled()
00074 {
00075 BOOL b;
00076
00077 b = IsDlgButtonChecked (IDC_USECONFIRMATION) == BST_CHECKED;
00078 GetDlgItem (IDC_USEWAIT)->EnableWindow (b);
00079
00080 b = b && IsDlgButtonChecked (IDC_USEWAIT) == BST_CHECKED;
00081 GetDlgItem (IDC_DURING)->EnableWindow (b);
00082 GetDlgItem (IDC_DURINGSPIN)->EnableWindow (b);
00083 GetDlgItem (IDC__SECONDS)->EnableWindow (b);
00084
00085 GetDlgItem (IDC_DISABLE)->EnableWindow (IsDlgButtonChecked (IDC_DELETE) != BST_CHECKED);
00086 }
00087
00088 void CSchedule_AdvancedPage::OnUseconfirmation()
00089 {
00090 UpdateEnabled ();
00091 SetModified ();
00092 }
00093
00094 void CSchedule_AdvancedPage::OnUsewait()
00095 {
00096 UpdateEnabled ();
00097 SetModified ();
00098 }
00099
00100 void CSchedule_AdvancedPage::OnChangeDuring()
00101 {
00102 SetModified ();
00103 }
00104
00105 BOOL CSchedule_AdvancedPage::OnApply()
00106 {
00107 if (IsDlgButtonChecked (IDC_USECONFIRMATION) == BST_UNCHECKED)
00108 m_task->uWaitForConfirmation = 0;
00109 else
00110 {
00111 if (IsDlgButtonChecked (IDC_USEWAIT) == BST_UNCHECKED)
00112 m_task->uWaitForConfirmation = UINT_MAX;
00113 else
00114 m_task->uWaitForConfirmation = GetDlgItemInt (IDC_DURING);
00115 }
00116
00117 if (IsDlgButtonChecked (IDC_DELETE) == BST_CHECKED)
00118 m_task->dwFlags |= SCHEDULE_AUTODEL;
00119 else
00120 {
00121 m_task->dwFlags &= ~ SCHEDULE_AUTODEL;
00122 if (IsDlgButtonChecked (IDC_DISABLE) == BST_CHECKED)
00123 m_task->dwFlags |= SCHEDULE_AUTODIS;
00124 else
00125 m_task->dwFlags &= ~ SCHEDULE_AUTODIS;
00126 }
00127
00128 return CPropertyPage::OnApply();
00129 }
00130
00131 void CSchedule_AdvancedPage::OnContextMenu(CWnd* , CPoint point)
00132 {
00133 PrepareCHMgr (point);
00134 _CHMgr.ShowMenu ();
00135 }
00136
00137 void CSchedule_AdvancedPage::OnWhatisthis()
00138 {
00139 _CHMgr.OnWT ();
00140 }
00141
00142 void CSchedule_AdvancedPage::ApplyLanguage()
00143 {
00144 fsDlgLngInfo lnginfo [] = {
00145 fsDlgLngInfo (IDC__CONFIRMATION, L_CONFIRMATION),
00146 fsDlgLngInfo (IDC_USECONFIRMATION, L_CONFIRMREQ),
00147 fsDlgLngInfo (IDC_USEWAIT, L_WAITFORCONFIRM),
00148 fsDlgLngInfo (IDC__SECONDS, L_SECS),
00149 fsDlgLngInfo (IDC_DISABLE, L_DISAFTEREXEC),
00150 fsDlgLngInfo (IDC_DELETE, L_DELAFTEREXEC),
00151 };
00152
00153 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), 0);
00154 }
00155
00156 void CSchedule_AdvancedPage::PrepareCHMgr(CPoint point)
00157 {
00158 fsCtrlContextHelp aCH1 [] = {
00159 fsCtrlContextHelp (IDC_USECONFIRMATION, LS (L_USECONFIRMHERE)),
00160 fsCtrlContextHelp (IDC_USEWAIT, LS (L_WAITFORCONFIRMHERE)),
00161 fsCtrlContextHelp (IDC_DISABLE, LS (L_DISSCHEDHERE)),
00162 fsCtrlContextHelp (IDC_DELETE, LS (L_DELSCHEDHERE)),
00163 };
00164
00165 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00166 CopyMemory (aCH, aCH1, sizeof (aCH));
00167
00168 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00169 }
00170
00171 BOOL CSchedule_AdvancedPage::OnHelpInfo(HELPINFO* pHelpInfo)
00172 {
00173 RECT rc;
00174 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00175 if (pItem == NULL)
00176 return TRUE;
00177 pItem->GetWindowRect (&rc);
00178 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00179 {
00180 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00181 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00182 }
00183 PrepareCHMgr (pHelpInfo->MousePos);
00184 _CHMgr.OnWT ();
00185 return TRUE;
00186 }
00187
00188 void CSchedule_AdvancedPage::OnDisable()
00189 {
00190 SetModified ();
00191 }
00192
00193 void CSchedule_AdvancedPage::OnDelete()
00194 {
00195 SetModified ();
00196 UpdateEnabled ();
00197 }