00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "Prg_HistoryPage.h"
00009 #include "DlgDownloadsHistory.h"
00010
00011 #ifdef _DEBUG
00012 #define new DEBUG_NEW
00013 #undef THIS_FILE
00014 static char THIS_FILE[] = __FILE__;
00015 #endif
00016
00017 IMPLEMENT_DYNCREATE(CPrg_HistoryPage, CPropertyPage)
00018
00019 CPrg_HistoryPage::CPrg_HistoryPage() : CPropertyPage(CPrg_HistoryPage::IDD)
00020 {
00021 m_psp.dwFlags |= PSP_USETITLE;
00022 m_psp.pszTitle = LS (L_HISTORY);
00023 }
00024
00025 CPrg_HistoryPage::~CPrg_HistoryPage()
00026 {
00027 }
00028
00029 void CPrg_HistoryPage::DoDataExchange(CDataExchange* pDX)
00030 {
00031 CPropertyPage::DoDataExchange(pDX);
00032
00033 DDX_Control(pDX, IDC_DAYSSPIN, m_wndSpin2);
00034 DDX_Control(pDX, IDC_MAXNUMBERSPIN, m_wndSpin1);
00035
00036 }
00037
00038 BEGIN_MESSAGE_MAP(CPrg_HistoryPage, CPropertyPage)
00039
00040 ON_WM_CONTEXTMENU()
00041 ON_WM_HELPINFO()
00042 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00043 ON_BN_CLICKED(IDC_USEHIST, OnUsehist)
00044 ON_BN_CLICKED(IDC_FOLDERSONLY, OnFoldersonly)
00045 ON_BN_CLICKED(IDC_DELRECTHATEXISTS, OnDelrecthatexists)
00046 ON_BN_CLICKED(IDC_MAXNUMBER, OnMaxnumber)
00047 ON_BN_CLICKED(IDC_CLEARHISTORY, OnClearhistory)
00048 ON_EN_CHANGE(IDC_DAYS, OnChangeDays)
00049 ON_EN_CHANGE(IDC_MAXNUMBERVAL, OnChangeMaxnumberval)
00050 ON_BN_CLICKED(IDC_SWITCHDLHIST, OnSwitchdlhist)
00051
00052 END_MESSAGE_MAP()
00053
00054 BOOL CPrg_HistoryPage::OnInitDialog()
00055 {
00056 CPropertyPage::OnInitDialog();
00057
00058 CheckDlgButton (IDC_USEHIST, _App.History_Use () ? BST_CHECKED : BST_UNCHECKED);
00059 CheckDlgButton (IDC_FOLDERSONLY, _App.History_FoldersOnly () ? BST_CHECKED : BST_UNCHECKED);
00060
00061 m_wndSpin1.SetRange (1, 99);
00062 m_wndSpin2.SetRange (1, 99);
00063
00064 if (_App.History_KeepDays () != INT_MAX)
00065 {
00066 CheckDlgButton (IDC_DELRECTHATEXISTS, BST_CHECKED);
00067 SetDlgItemInt (IDC_DAYS, _App.History_KeepDays ());
00068 }
00069 else
00070 SetDlgItemInt (IDC_DAYS, 15);
00071
00072 if (_App.History_MaxRecords () != INT_MAX)
00073 {
00074 CheckDlgButton (IDC_MAXNUMBER, BST_CHECKED);
00075 SetDlgItemInt (IDC_MAXNUMBERVAL, _App.History_MaxRecords ());
00076 }
00077 else
00078 SetDlgItemInt (IDC_MAXNUMBERVAL, 30);
00079
00080 ApplyLanguage ();
00081 UpdateEnabled ();
00082
00083 return TRUE;
00084 }
00085
00086 void CPrg_HistoryPage::OnContextMenu(CWnd* , CPoint point)
00087 {
00088 PrepareCHMgr (point);
00089 _CHMgr.ShowMenu ();
00090 }
00091
00092 BOOL CPrg_HistoryPage::OnHelpInfo(HELPINFO* pHelpInfo)
00093 {
00094 RECT rc;
00095 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00096 if (pItem == NULL)
00097 return TRUE;
00098 pItem->GetWindowRect (&rc);
00099 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00100 {
00101 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00102 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00103 }
00104 PrepareCHMgr (pHelpInfo->MousePos);
00105 _CHMgr.OnWT ();
00106 return TRUE;
00107 }
00108
00109 void CPrg_HistoryPage::OnWhatisthis()
00110 {
00111 _CHMgr.OnWT ();
00112 }
00113
00114 void CPrg_HistoryPage::PrepareCHMgr(CPoint point)
00115 {
00116 fsCtrlContextHelp aCH1 [] = {
00117 fsCtrlContextHelp (IDC_USEHIST, LS (L_USEHISTHERE)),
00118 fsCtrlContextHelp (IDC_FOLDERSONLY, LS (L_FOLDERSONLYHERE)),
00119 fsCtrlContextHelp (IDC_DELRECTHATEXISTS, LS (L_DELRECTHATEXISTSHERE)),
00120 fsCtrlContextHelp (IDC_DAYS, LS (L_DELRECTHATEXISTSHERE)),
00121 fsCtrlContextHelp (IDC_MAXNUMBER, LS (L_HISTMAXNUMBERHERE)),
00122 fsCtrlContextHelp (IDC_MAXNUMBERVAL, LS (L_HISTMAXNUMBERHERE)),
00123 fsCtrlContextHelp (IDC_CLEARHISTORY, LS (L_CLEARHISTORYHERE)),
00124 };
00125
00126 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00127 CopyMemory (aCH, aCH1, sizeof (aCH));
00128
00129 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00130 }
00131
00132 void CPrg_HistoryPage::ApplyLanguage()
00133 {
00134 fsDlgLngInfo lnginfo [] = {
00135 fsDlgLngInfo (IDC_USEHIST, L_SAVEHISTOFLINKSANDFOLDERS),
00136 fsDlgLngInfo (IDC_FOLDERSONLY, L_SAVEFOLDERSHISTONLY),
00137 fsDlgLngInfo (IDC_DELRECTHATEXISTS, L_DELRECTHATEXISTS),
00138 fsDlgLngInfo (IDC__DAYS, L_DAYS),
00139 fsDlgLngInfo (IDC_MAXNUMBER, L_MAXRECORDS),
00140 fsDlgLngInfo (IDC_CLEARHISTORY, L_CLEARHISTORY),
00141 fsDlgLngInfo (IDC_SWITCHDLHIST, L_DLHISTSETTINGS),
00142 };
00143
00144 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), 0);
00145 }
00146
00147 void CPrg_HistoryPage::OnUsehist()
00148 {
00149 SetModified ();
00150 UpdateEnabled ();
00151 }
00152
00153 void CPrg_HistoryPage::OnFoldersonly()
00154 {
00155 SetModified ();
00156 }
00157
00158 void CPrg_HistoryPage::OnDelrecthatexists()
00159 {
00160 SetModified ();
00161 UpdateEnabled ();
00162 }
00163
00164 void CPrg_HistoryPage::OnMaxnumber()
00165 {
00166 SetModified ();
00167 UpdateEnabled ();
00168 }
00169
00170 void CPrg_HistoryPage::OnClearhistory()
00171 {
00172 if (IDNO == MessageBox (LS (L_AREYOUSURE), LS (L_CONFIRMATION), MB_YESNO))
00173 return;
00174
00175 _HsMgr.ClearAll ();
00176 GetDlgItem (IDC_CLEARHISTORY)->EnableWindow (FALSE);
00177 }
00178
00179 BOOL CPrg_HistoryPage::OnApply()
00180 {
00181 if (IsDlgButtonChecked (IDC_USEHIST) == BST_UNCHECKED)
00182 {
00183 _App.History_Use (FALSE);
00184 }
00185 else
00186 {
00187 int cMaxDays = INT_MAX;
00188 if (IsDlgButtonChecked (IDC_DELRECTHATEXISTS) == BST_CHECKED)
00189 {
00190 cMaxDays = GetDlgItemInt (IDC_DAYS);
00191 if (cMaxDays == 0)
00192 {
00193 CString str;
00194 str.Format (LS (L_ENTERGREATER), 0);
00195 MessageBox (str, LS (L_INPERR), MB_ICONEXCLAMATION);
00196 CEdit *pE = (CEdit*) GetDlgItem (IDC_DAYS);
00197 pE->SetSel (0, -1);
00198 pE->SetFocus ();
00199 return FALSE;
00200 }
00201 }
00202
00203 int cMaxRecs = INT_MAX;
00204 if (IsDlgButtonChecked (IDC_MAXNUMBER) == BST_CHECKED)
00205 {
00206 cMaxRecs = GetDlgItemInt (IDC_MAXNUMBERVAL);
00207 if (cMaxRecs == 0)
00208 {
00209 CString str;
00210 str.Format (LS (L_ENTERGREATER), 0);
00211 MessageBox (str, LS (L_INPERR), MB_ICONEXCLAMATION);
00212 CEdit *pE = (CEdit*) GetDlgItem (IDC_MAXNUMBERVAL);
00213 pE->SetSel (0, -1);
00214 pE->SetFocus ();
00215 return FALSE;
00216 }
00217 }
00218
00219 _App.History_FoldersOnly (
00220 IsDlgButtonChecked (IDC_FOLDERSONLY) == BST_CHECKED);
00221
00222 _App.History_KeepDays (cMaxDays);
00223 _App.History_MaxRecords (cMaxRecs);
00224 _App.History_Use (TRUE);
00225 }
00226
00227 _HsMgr.ReadSettings ();
00228
00229 return CPropertyPage::OnApply();
00230 }
00231
00232 void CPrg_HistoryPage::UpdateEnabled()
00233 {
00234 BOOL b = IsDlgButtonChecked (IDC_USEHIST) == BST_CHECKED;
00235 GetDlgItem (IDC_FOLDERSONLY)->EnableWindow (b);
00236 GetDlgItem (IDC_DELRECTHATEXISTS)->EnableWindow (b);
00237
00238 BOOL b2 = IsDlgButtonChecked (IDC_DELRECTHATEXISTS) == BST_CHECKED;
00239 GetDlgItem (IDC_DAYS)->EnableWindow (b && b2);
00240 GetDlgItem (IDC_DAYSSPIN)->EnableWindow (b && b2);
00241 GetDlgItem (IDC__DAYS)->EnableWindow (b && b2);
00242
00243 GetDlgItem (IDC_MAXNUMBER)->EnableWindow (b);
00244 b2 = IsDlgButtonChecked (IDC_MAXNUMBER) == BST_CHECKED;
00245 GetDlgItem (IDC_MAXNUMBERVAL)->EnableWindow (b && b2);
00246 GetDlgItem (IDC_MAXNUMBERSPIN)->EnableWindow (b && b2);
00247
00248 BOOL bEnClear = b;
00249 if (bEnClear)
00250 {
00251 bEnClear = _LastUrlFiles.GetRecordCount () != 0 ||
00252 _LastUrlPaths.GetRecordCount () != 0 ||
00253 _LastBatchUrls.GetRecordCount () != 0 ||
00254 _LastFolders.GetRecordCount () != 0;
00255 }
00256 GetDlgItem (IDC_CLEARHISTORY)->EnableWindow (bEnClear);
00257 }
00258
00259 void CPrg_HistoryPage::OnChangeDays()
00260 {
00261 SetModified ();
00262 }
00263
00264 void CPrg_HistoryPage::OnChangeMaxnumberval()
00265 {
00266 SetModified ();
00267 }
00268
00269 void CPrg_HistoryPage::OnSwitchdlhist()
00270 {
00271 CDlgDownloadsHistory dlg (this);
00272 _DlgMgr.DoModal (&dlg);
00273 }