00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "DlgFindAdvanced.h"
00009 #include "DownloadsWnd.h"
00010 #include "DlgT1ToT2.h"
00011 #include "vmsDialogHelper.h"
00012
00013 extern CDownloadsWnd* _pwndDownloads;
00014
00015 #ifdef _DEBUG
00016 #define new DEBUG_NEW
00017 #undef THIS_FILE
00018 static char THIS_FILE[] = __FILE__;
00019 #endif
00020
00021 CDlgFindAdvanced::CDlgFindAdvanced(CWnd* pParent )
00022 : CDialog(CDlgFindAdvanced::IDD, pParent)
00023 {
00024 m_bTimeSet = FALSE;
00025 m_wndGroups.m_bHasAllGroupsItem = true;
00026 }
00027
00028 void CDlgFindAdvanced::DoDataExchange(CDataExchange* pDX)
00029 {
00030 CDialog::DoDataExchange(pDX);
00031
00032 DDX_Control(pDX, IDC_MINSIZEDIM, m_wndDim2);
00033 DDX_Control(pDX, IDC_MAXSIZEDIM, m_wndDim1);
00034 DDX_Control(pDX, IDC_GROUPS, m_wndGroups);
00035
00036 }
00037
00038 BEGIN_MESSAGE_MAP(CDlgFindAdvanced, CDialog)
00039
00040 ON_WM_CONTEXTMENU()
00041 ON_WM_HELPINFO()
00042 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00043 ON_CBN_SELCHANGE(IDC_GROUPS, OnSelchangeGroups)
00044 ON_BN_CLICKED(IDC_LISTOFDLDS, OnListofdlds)
00045 ON_BN_CLICKED(IDC_DELETED, OnDeleted)
00046 ON_BN_CLICKED(IDC_HISTOFDLDS, OnHistofdlds)
00047 ON_BN_CLICKED(IDC_USETIME, OnUsetime)
00048 ON_BN_CLICKED(IDC_USESIZE, OnUsesize)
00049 ON_BN_CLICKED(IDC_SETTIME, OnSettime)
00050
00051 END_MESSAGE_MAP()
00052
00053 BOOL CDlgFindAdvanced::OnInitDialog()
00054 {
00055 CDialog::OnInitDialog();
00056
00057 DWORD dwFlags = _App.Find_Flags ();
00058
00059 if (dwFlags & SEARCHWH_LISTOFDLDS)
00060 CheckDlgButton (IDC_LISTOFDLDS, BST_CHECKED);
00061
00062 if (dwFlags & SEARCHWH_HISTOFDLDS)
00063 CheckDlgButton (IDC_HISTOFDLDS, BST_CHECKED);
00064
00065 if (dwFlags & SEARCHWH_DELETED)
00066 CheckDlgButton (IDC_DELETED, BST_CHECKED);
00067
00068 m_wndGroups.Fill ();
00069 m_wndGroups.SelectGroup (NULL);
00070
00071 if (dwFlags & SEARCHU_DLDGROUP)
00072 m_wndGroups.SelectGroupById (_App.Find_GroupId ());
00073
00074 if (dwFlags & SEARCHU_TIME)
00075 CheckDlgButton (IDC_USETIME, BST_CHECKED);
00076
00077 if (dwFlags & SEARCHU_FILESIZE)
00078 CheckDlgButton (IDC_USESIZE, BST_CHECKED);
00079
00080 m_t1 = _App.Find_TimeFrom ();
00081 m_t2 = _App.Find_TimeTo ();
00082 if (m_t1.dwHighDateTime && m_t2.dwHighDateTime)
00083 m_bTimeSet = TRUE;
00084
00085 m_wndDim1.AddString (LS (L_B)); m_wndDim2.AddString (LS (L_B));
00086 m_wndDim1.AddString (LS (L_KB)); m_wndDim2.AddString (LS (L_KB));
00087 m_wndDim1.AddString (LS (L_MB)); m_wndDim2.AddString (LS (L_MB));
00088
00089 vmsDialogHelper::SetDlgBytesGroup (this, _App.Find_FileSizeFrom (), IDC_MINSIZEVAL, IDC_MINSIZEDIM);
00090 vmsDialogHelper::SetDlgBytesGroup (this, _App.Find_FileSizeTo (), IDC_MAXSIZEVAL, IDC_MAXSIZEDIM);
00091
00092 ApplyLanguage ();
00093 UpdateEnabled ();
00094
00095 return TRUE;
00096 }
00097
00098 void CDlgFindAdvanced::OnContextMenu(CWnd* , CPoint point)
00099 {
00100 PrepareCHMgr (point);
00101 _CHMgr.ShowMenu ();
00102 }
00103
00104 BOOL CDlgFindAdvanced::OnHelpInfo(HELPINFO* pHelpInfo)
00105 {
00106 RECT rc;
00107
00108 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00109 if (pItem == NULL)
00110 return TRUE;
00111
00112 pItem->GetWindowRect (&rc);
00113 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00114 {
00115 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00116 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00117 }
00118
00119 PrepareCHMgr (pHelpInfo->MousePos);
00120
00121 _CHMgr.OnWT ();
00122 return TRUE;
00123 }
00124
00125 void CDlgFindAdvanced::OnWhatisthis()
00126 {
00127 _CHMgr.OnWT ();
00128 }
00129
00130 void CDlgFindAdvanced::UpdateEnabled()
00131 {
00132 BOOL b = IsDlgButtonChecked (IDC_LISTOFDLDS) == BST_CHECKED;
00133 b = b || IsDlgButtonChecked (IDC_DELETED) == BST_CHECKED;
00134 GetDlgItem (IDC__SEARCHINGROUP)->EnableWindow (b);
00135 GetDlgItem (IDC_GROUPS)->EnableWindow (b);
00136
00137 b = IsDlgButtonChecked (IDC_HISTOFDLDS) == BST_CHECKED;
00138 GetDlgItem (IDC_USETIME)->EnableWindow (b);
00139 b = b && IsDlgButtonChecked (IDC_USETIME) == BST_CHECKED;
00140 GetDlgItem (IDC_SETTIME)->EnableWindow (b);
00141
00142 b = IsDlgButtonChecked (IDC_USESIZE) == BST_CHECKED;
00143 GetDlgItem (IDC__MINIMUM)->EnableWindow (b);
00144 GetDlgItem (IDC_MINSIZEVAL)->EnableWindow (b);
00145 GetDlgItem (IDC_MINSIZEDIM)->EnableWindow (b);
00146 GetDlgItem (IDC__MAXIMUM)->EnableWindow (b);
00147 GetDlgItem (IDC_MAXSIZEVAL)->EnableWindow (b);
00148 GetDlgItem (IDC_MAXSIZEDIM)->EnableWindow (b);
00149
00150 b = IsDlgButtonChecked (IDC_LISTOFDLDS) == BST_CHECKED;
00151 b = b || IsDlgButtonChecked (IDC_DELETED) == BST_CHECKED;
00152 b = b || IsDlgButtonChecked (IDC_HISTOFDLDS) == BST_CHECKED;
00153 GetDlgItem (IDOK)->EnableWindow (b);
00154 }
00155
00156 void CDlgFindAdvanced::ApplyLanguage()
00157 {
00158 fsDlgLngInfo lnginfo [] = {
00159 fsDlgLngInfo (IDC__FINDWHERE, L_FINDWHERE),
00160 fsDlgLngInfo (IDC_LISTOFDLDS, L_FINDINLISTOFDLDS),
00161 fsDlgLngInfo (IDC__SEARCHINGROUP, L_FINDINGROUP),
00162 fsDlgLngInfo (IDC_HISTOFDLDS, L_FINDINHISTOFDLDS),
00163 fsDlgLngInfo (IDC_USETIME, L_FINDUSETIME),
00164 fsDlgLngInfo (IDC_SETTIME, L_SETTIME),
00165 fsDlgLngInfo (IDC_DELETED, L_FINDINDELETED),
00166 fsDlgLngInfo (IDC_USESIZE, L_FINDUSESIZE),
00167 fsDlgLngInfo (IDC__MINIMUM, L_MAXIMAL),
00168 fsDlgLngInfo (IDC__MAXIMUM, L_MINIMAL),
00169 fsDlgLngInfo (IDCANCEL, L_CANCEL),
00170 };
00171
00172 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), L_FIND);
00173 }
00174
00175 void CDlgFindAdvanced::PrepareCHMgr(CPoint point)
00176 {
00177 fsCtrlContextHelp aCH1 [] = {
00178 fsCtrlContextHelp (IDC_LISTOFDLDS, LS (L_FINDLISTOFDLDSHERE)),
00179 fsCtrlContextHelp (IDC__SEARCHINGROUP, LS (L_FINDINGROUPHERE)),
00180 fsCtrlContextHelp (IDC_GROUPS, LS (L_FINDINGROUPHERE)),
00181 fsCtrlContextHelp (IDC_HISTOFDLDS, LS (L_FINDHISTOFDLDSHERE)),
00182 fsCtrlContextHelp (IDC_USETIME, LS (L_FINDUSETIMEHERE)),
00183 fsCtrlContextHelp (IDC_SETTIME, LS (L_FINDSETTIMEHERE)),
00184 fsCtrlContextHelp (IDC_DELETED, LS (L_FINDDELETEDHERE)),
00185 fsCtrlContextHelp (IDC_USESIZE, LS (L_FINDUSESIZEHERE)),
00186 fsCtrlContextHelp (IDC__MINIMUM, LS (L_FINDMINSIZEHERE)),
00187 fsCtrlContextHelp (IDC_MINSIZEVAL, LS (L_FINDMINSIZEHERE)),
00188 fsCtrlContextHelp (IDC__MAXIMUM, LS (L_FINDMAXSIZEHERE)),
00189 fsCtrlContextHelp (IDC_MAXSIZEVAL, LS (L_FINDMAXSIZEHERE)),
00190 fsCtrlContextHelp (IDC_MINSIZEDIM, LS (L_DIMHERE)),
00191 fsCtrlContextHelp (IDC_MAXSIZEDIM, LS (L_DIMHERE)),
00192 };
00193
00194 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00195 CopyMemory (aCH, aCH1, sizeof (aCH));
00196
00197 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00198 }
00199
00200 void CDlgFindAdvanced::OnOK()
00201 {
00202 BOOL bListOfDlds = IsDlgButtonChecked (IDC_LISTOFDLDS) == BST_CHECKED;
00203 BOOL bDeleted = IsDlgButtonChecked (IDC_DELETED) == BST_CHECKED;
00204 BOOL bHistory = IsDlgButtonChecked (IDC_HISTOFDLDS) == BST_CHECKED;
00205
00206 DWORD dwFlags = _App.Find_Flags ();
00207
00208 dwFlags &= ~(SEARCHWH_LISTOFDLDS|SEARCHWH_HISTOFDLDS|SEARCHWH_DELETED);
00209
00210 if (bListOfDlds)
00211 dwFlags |= SEARCHWH_LISTOFDLDS;
00212
00213 if (bDeleted)
00214 dwFlags |= SEARCHWH_DELETED;
00215
00216 if (bHistory)
00217 dwFlags |= SEARCHWH_HISTOFDLDS;
00218
00219 dwFlags &= ~SEARCHU_DLDGROUP;
00220
00221 if (bListOfDlds || bDeleted)
00222 {
00223 if (m_wndGroups.GetSelectedGroup () != NULL)
00224 {
00225 dwFlags |= SEARCHU_DLDGROUP;
00226 _App.Find_GroupId (m_wndGroups.GetSelectedGroup ()->nId);
00227 }
00228 }
00229
00230 if (bHistory)
00231 {
00232 if (IsDlgButtonChecked (IDC_USETIME) == BST_CHECKED)
00233 {
00234 dwFlags |= SEARCHU_TIME;
00235 _App.Find_TimeFrom (m_t1);
00236 _App.Find_TimeTo (m_t2);
00237 }
00238 else
00239 dwFlags &= ~SEARCHU_TIME;
00240 }
00241
00242 if (IsDlgButtonChecked (IDC_USESIZE) == BST_CHECKED)
00243 {
00244 dwFlags |= SEARCHU_FILESIZE;
00245
00246 UINT64 u;
00247
00248 vmsDialogHelper::GetDlgBytesGroup (this, IDC_MINSIZEVAL, IDC_MINSIZEDIM, &u);
00249 _App.Find_FileSizeFrom (u);
00250
00251 vmsDialogHelper::GetDlgBytesGroup (this, IDC_MAXSIZEVAL, IDC_MAXSIZEDIM, &u);
00252 _App.Find_FileSizeTo (u);
00253 }
00254 else
00255 dwFlags &= ~SEARCHU_FILESIZE;
00256
00257 _App.Find_Flags (dwFlags);
00258
00259 CDialog::OnOK();
00260 }
00261
00262 void CDlgFindAdvanced::OnSelchangeGroups()
00263 {
00264
00265 }
00266
00267 void CDlgFindAdvanced::OnListofdlds()
00268 {
00269 UpdateEnabled ();
00270 }
00271
00272 void CDlgFindAdvanced::OnDeleted()
00273 {
00274 UpdateEnabled ();
00275 }
00276
00277 void CDlgFindAdvanced::OnHistofdlds()
00278 {
00279 UpdateEnabled ();
00280 }
00281
00282 void CDlgFindAdvanced::OnUsetime()
00283 {
00284 if (IsDlgButtonChecked (IDC_USETIME) == BST_CHECKED && m_bTimeSet == FALSE)
00285 {
00286 if (FALSE == SetTime ())
00287 CheckDlgButton (IDC_USETIME, BST_UNCHECKED);
00288 }
00289
00290 UpdateEnabled ();
00291 }
00292
00293 void CDlgFindAdvanced::OnUsesize()
00294 {
00295 UpdateEnabled ();
00296 }
00297
00298 void CDlgFindAdvanced::OnSettime()
00299 {
00300 SetTime ();
00301 }
00302
00303 BOOL CDlgFindAdvanced::SetTime()
00304 {
00305 CDlgT1ToT2 dlg;
00306
00307 if (m_bTimeSet == FALSE)
00308 {
00309 ZeroMemory (&m_t1, sizeof (m_t1));
00310 ZeroMemory (&m_t2, sizeof (m_t2));
00311 }
00312
00313 dlg.m_t1 = m_t1;
00314 dlg.m_t2 = m_t2;
00315
00316 if (IDOK == _DlgMgr.DoModal (&dlg))
00317 {
00318 m_t1 = dlg.m_t1;
00319 m_t2 = dlg.m_t2;
00320 m_bTimeSet = TRUE;
00321 return TRUE;
00322 }
00323
00324 return FALSE;
00325 }