00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "DlgDownloadsHistory.h"
00009 #include "DownloadsWnd.h"
00010
00011 extern CDownloadsWnd* _pwndDownloads;
00012
00013 #ifdef _DEBUG
00014 #define new DEBUG_NEW
00015 #undef THIS_FILE
00016 static char THIS_FILE[] = __FILE__;
00017 #endif
00018
00019 CDlgDownloadsHistory::CDlgDownloadsHistory(CWnd* pParent )
00020 : CDialog(CDlgDownloadsHistory::IDD, pParent)
00021 {
00022
00023
00024
00025 }
00026
00027 void CDlgDownloadsHistory::DoDataExchange(CDataExchange* pDX)
00028 {
00029 CDialog::DoDataExchange(pDX);
00030
00031 DDX_Control(pDX, IDC_DAYSSPIN, m_wndSpin);
00032
00033 }
00034
00035 BEGIN_MESSAGE_MAP(CDlgDownloadsHistory, CDialog)
00036
00037 ON_WM_CONTEXTMENU()
00038 ON_WM_HELPINFO()
00039 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00040 ON_BN_CLICKED(IDC_USE, OnUse)
00041 ON_BN_CLICKED(IDC_DELRECTHATEXISTS, OnDelrecthatexists)
00042 ON_BN_CLICKED(IDC_CLEARHISTORY, OnClearhistory)
00043
00044 END_MESSAGE_MAP()
00045
00046 BOOL CDlgDownloadsHistory::OnInitDialog()
00047 {
00048 CDialog::OnInitDialog();
00049
00050 m_wndSpin.SetRange (1, 99);
00051
00052 CheckDlgButton (IDC_USE, _App.History_Downloads_Use () ? BST_CHECKED : BST_UNCHECKED);
00053 if (_App.History_Downloads_KeepDays () != UINT_MAX)
00054 {
00055 CheckDlgButton (IDC_DELRECTHATEXISTS, BST_CHECKED);
00056 SetDlgItemInt (IDC_DAYS, _App.History_Downloads_KeepDays ());
00057 }
00058 else
00059 SetDlgItemInt (IDC_DAYS, 15);
00060
00061 CheckDlgButton (IDC_COMPONLY, _App.History_Downloads_CompletedOnly () ? BST_CHECKED : BST_UNCHECKED);
00062
00063 ApplyLanguage ();
00064 UpdateEnabled ();
00065
00066 return TRUE;
00067 }
00068
00069 void CDlgDownloadsHistory::OnContextMenu(CWnd* , CPoint point)
00070 {
00071 PrepareCHMgr (point);
00072 _CHMgr.ShowMenu ();
00073 }
00074
00075 BOOL CDlgDownloadsHistory::OnHelpInfo(HELPINFO* pHelpInfo)
00076 {
00077 RECT rc;
00078 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00079 if (pItem == NULL)
00080 return TRUE;
00081 pItem->GetWindowRect (&rc);
00082 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00083 {
00084 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00085 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00086 }
00087 PrepareCHMgr (pHelpInfo->MousePos);
00088 _CHMgr.OnWT ();
00089 return TRUE;
00090 }
00091
00092 void CDlgDownloadsHistory::OnWhatisthis()
00093 {
00094 _CHMgr.OnWT ();
00095 }
00096
00097 void CDlgDownloadsHistory::UpdateEnabled()
00098 {
00099 BOOL b = IsDlgButtonChecked (IDC_USE) == BST_CHECKED;
00100 GetDlgItem (IDC_DELRECTHATEXISTS)->EnableWindow (b);
00101 GetDlgItem (IDC_COMPONLY)->EnableWindow (b);
00102 GetDlgItem (IDC_CLEARHISTORY)->EnableWindow (b && _DldsMgr.m_histmgr.GetRecordCount () != 0);
00103 b = b && IsDlgButtonChecked (IDC_DELRECTHATEXISTS) == BST_CHECKED;
00104 GetDlgItem (IDC_DAYS)->EnableWindow (b);
00105 GetDlgItem (IDC_DAYSSPIN)->EnableWindow (b);
00106 GetDlgItem (IDC__DAYS)->EnableWindow (b);
00107 }
00108
00109 void CDlgDownloadsHistory::ApplyLanguage()
00110 {
00111 fsDlgLngInfo lnginfo [] = {
00112 fsDlgLngInfo (IDC_USE, L_SAVEDLHIST),
00113 fsDlgLngInfo (IDC_DELRECTHATEXISTS, L_DELRECTHATEXISTS),
00114 fsDlgLngInfo (IDC__DAYS, L_DAYS),
00115 fsDlgLngInfo (IDC_COMPONLY, L_DLHISTCOMPONLY),
00116 fsDlgLngInfo (IDC_CLEARHISTORY, L_CLEARHISTORY2),
00117 fsDlgLngInfo (IDCANCEL, L_CANCEL),
00118 };
00119
00120 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), L_DLHISTSETTINGS);
00121 }
00122
00123 void CDlgDownloadsHistory::PrepareCHMgr(CPoint point)
00124 {
00125 fsCtrlContextHelp aCH1 [] = {
00126 fsCtrlContextHelp (IDC_USE, LS (L_USEDLHISTHERE)),
00127 fsCtrlContextHelp (IDC_DELRECTHATEXISTS, LS (L_DELRECTHATEXISTSHERE)),
00128 fsCtrlContextHelp (IDC_DAYS, LS (L_DELRECTHATEXISTSHERE)),
00129 fsCtrlContextHelp (IDC_COMPONLY, LS (L_DLHISTCOMPONLYHERE)),
00130 fsCtrlContextHelp (IDC_CLEARHISTORY, LS (L_CLEARHISTORYHERE)),
00131 };
00132
00133 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00134 CopyMemory (aCH, aCH1, sizeof (aCH));
00135
00136 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00137 }
00138
00139 void CDlgDownloadsHistory::OnUse()
00140 {
00141 UpdateEnabled ();
00142 }
00143
00144 void CDlgDownloadsHistory::OnDelrecthatexists()
00145 {
00146 UpdateEnabled ();
00147 }
00148
00149 void CDlgDownloadsHistory::OnClearhistory()
00150 {
00151 if (IDYES == MessageBox (LS (L_AREYOUSURE), LS (L_CONFIRMATION), MB_YESNO | MB_ICONQUESTION))
00152 {
00153 _DldsMgr.m_histmgr.ClearHistory ();
00154 GetDlgItem (IDC_CLEARHISTORY)->EnableWindow (FALSE);
00155 }
00156 }
00157
00158 void CDlgDownloadsHistory::OnOK()
00159 {
00160 if (IsDlgButtonChecked (IDC_USE) == BST_UNCHECKED)
00161 {
00162 _App.History_Downloads_Use (FALSE);
00163 }
00164 else
00165 {
00166 UINT cMaxDays = UINT_MAX;
00167 if (IsDlgButtonChecked (IDC_DELRECTHATEXISTS) == BST_CHECKED)
00168 {
00169 cMaxDays = GetDlgItemInt (IDC_DAYS);
00170 if (cMaxDays == 0)
00171 {
00172 CString str;
00173 str.Format (LS (L_ENTERGREATER), 0);
00174 MessageBox (str, LS (L_INPERR), MB_ICONEXCLAMATION);
00175 CEdit *pE = (CEdit*) GetDlgItem (IDC_DAYS);
00176 pE->SetSel (0, -1);
00177 pE->SetFocus ();
00178 return;
00179 }
00180 }
00181
00182 _App.History_Downloads_CompletedOnly (
00183 IsDlgButtonChecked (IDC_COMPONLY) == BST_CHECKED);
00184
00185 _App.History_Downloads_KeepDays (cMaxDays);
00186 _App.History_Downloads_Use (TRUE);
00187 }
00188
00189 _pwndDownloads->m_wndHistory.ShowWindow (SW_HIDE);
00190 try {
00191 _DldsMgr.m_histmgr.ReadSettings ();
00192 }catch (...) {}
00193 _pwndDownloads->m_wndHistory.ShowWindow (SW_SHOW);
00194
00195 CDialog::OnOK();
00196 }