00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "DlgFind.h"
00009 #include "DlgFindAdvanced.h"
00010
00011 #ifdef _DEBUG
00012 #define new DEBUG_NEW
00013 #undef THIS_FILE
00014 static char THIS_FILE[] = __FILE__;
00015 #endif
00016
00017 CDlgFind::CDlgFind(CWnd* pParent )
00018 : CDialog(CDlgFind::IDD, pParent)
00019 {
00020
00021
00022
00023 }
00024
00025 void CDlgFind::DoDataExchange(CDataExchange* pDX)
00026 {
00027 CDialog::DoDataExchange(pDX);
00028
00029 DDX_Control(pDX, IDC_FINDWHAT, m_wndWhat);
00030
00031 }
00032
00033 BEGIN_MESSAGE_MAP(CDlgFind, CDialog)
00034
00035 ON_WM_CONTEXTMENU()
00036 ON_WM_HELPINFO()
00037 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00038 ON_BN_CLICKED(IDC_ADVANCED, OnAdvanced)
00039 ON_CBN_EDITCHANGE(IDC_FINDWHAT, OnEditchangeFindwhat)
00040 ON_CBN_SELCHANGE(IDC_FINDWHAT, OnSelchangeFindwhat)
00041 ON_BN_CLICKED(IDC_FILENAME, OnFilename)
00042 ON_BN_CLICKED(IDC_URL, OnUrl)
00043 ON_BN_CLICKED(IDC_COMMENT, OnComment)
00044 ON_BN_CLICKED(IDC_LOCALNAME, OnLocalname)
00045
00046 END_MESSAGE_MAP()
00047
00048 BOOL CDlgFind::OnInitDialog()
00049 {
00050 CDialog::OnInitDialog();
00051
00052 for (int i = 0; i < _LastFind.GetRecordCount (); i++)
00053 m_wndWhat.AddString (_LastFind.GetRecord (i));
00054 m_wndWhat.SetCurSel (0);
00055
00056 DWORD dwFlags = _App.Find_Flags ();
00057
00058 CheckDlgButton (IDC_FILENAME, dwFlags & SEARCHIN_FILENAME ? BST_CHECKED : BST_UNCHECKED);
00059 CheckDlgButton (IDC_COMMENT, dwFlags & SEARCHIN_COMMENT ? BST_CHECKED : BST_UNCHECKED);
00060 CheckDlgButton (IDC_URL, dwFlags & SEARCHIN_URL ? BST_CHECKED : BST_UNCHECKED);
00061 CheckDlgButton (IDC_LOCALNAME, dwFlags & SEARCHIN_LOCFILENAME ? BST_CHECKED : BST_UNCHECKED);
00062
00063 ApplyLanguage ();
00064 UpdateEnabled ();
00065
00066 return TRUE;
00067 }
00068
00069 void CDlgFind::OnContextMenu(CWnd* , CPoint point)
00070 {
00071 PrepareCHMgr (point);
00072 _CHMgr.ShowMenu ();
00073 }
00074
00075 BOOL CDlgFind::OnHelpInfo(HELPINFO* pHelpInfo)
00076 {
00077 RECT rc;
00078
00079 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00080 if (pItem == NULL)
00081 return TRUE;
00082
00083 pItem->GetWindowRect (&rc);
00084 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00085 {
00086 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00087 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00088 }
00089
00090 PrepareCHMgr (pHelpInfo->MousePos);
00091
00092 _CHMgr.OnWT ();
00093 return TRUE;
00094 }
00095
00096 void CDlgFind::OnWhatisthis()
00097 {
00098 _CHMgr.OnWT ();
00099 }
00100
00101 void CDlgFind::ApplyLanguage()
00102 {
00103 fsDlgLngInfo lnginfo [] = {
00104 fsDlgLngInfo (IDC__FINDWHAT, L_FINDWHAT),
00105 fsDlgLngInfo (IDC__SEARCHIN, L_SEARCHIN),
00106 fsDlgLngInfo (IDC_FILENAME, L_FILENAME),
00107 fsDlgLngInfo (IDC_COMMENT, L_COMMENT),
00108 fsDlgLngInfo (IDC_LOCALNAME, L_LOCFILENAME),
00109 fsDlgLngInfo (IDC_ADVANCED, L_ADVANCED),
00110 fsDlgLngInfo (IDOK, L_FIND),
00111 fsDlgLngInfo (IDCANCEL, L_CANCEL),
00112 };
00113
00114 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), L_FIND);
00115 }
00116
00117 void CDlgFind::PrepareCHMgr(CPoint point)
00118 {
00119 fsCtrlContextHelp aCH1 [] = {
00120 fsCtrlContextHelp (IDC__FINDWHAT, LS (L_FINDWHATHERE)),
00121 fsCtrlContextHelp (IDC_FINDWHAT, LS (L_FINDWHATHERE)),
00122 fsCtrlContextHelp (IDC_FILENAME, LS (L_SEARCHIN_FILENAMEHERE)),
00123 fsCtrlContextHelp (IDC_URL, LS (L_SEARCHIN_URLHERE)),
00124 fsCtrlContextHelp (IDC_COMMENT, LS (L_SEARCHIN_COMMENTHERE)),
00125 fsCtrlContextHelp (IDC_LOCALNAME, LS (L_SEARCHIN_LOCALFILENAMEHERE)),
00126 fsCtrlContextHelp (IDC_ADVANCED, LS (L_SEARCHADVANCEDHERE)),
00127 };
00128
00129 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00130 CopyMemory (aCH, aCH1, sizeof (aCH));
00131
00132 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00133 }
00134
00135 void CDlgFind::OnAdvanced()
00136 {
00137 CDlgFindAdvanced dlg;
00138 _DlgMgr.DoModal (&dlg);
00139 }
00140
00141 void CDlgFind::OnOK()
00142 {
00143 CString str;
00144 GetDlgItemText (IDC_FINDWHAT, str);
00145
00146 BOOL bFile = IsDlgButtonChecked (IDC_FILENAME) == BST_CHECKED;
00147 BOOL bComment = IsDlgButtonChecked (IDC_COMMENT) == BST_CHECKED;
00148 BOOL bURL = IsDlgButtonChecked (IDC_URL) == BST_CHECKED;
00149 BOOL bLoc = IsDlgButtonChecked (IDC_LOCALNAME) == BST_CHECKED;
00150
00151 DWORD dwFlags = _App.Find_Flags ();
00152
00153 dwFlags &= ~(SEARCHIN_FILENAME|SEARCHIN_COMMENT|SEARCHIN_URL|SEARCHIN_LOCFILENAME);
00154
00155 if (bFile)
00156 dwFlags |= SEARCHIN_FILENAME;
00157
00158 if (bComment)
00159 dwFlags |= SEARCHIN_COMMENT;
00160
00161 if (bURL)
00162 dwFlags |= SEARCHIN_URL;
00163
00164 if (bLoc)
00165 dwFlags |= SEARCHIN_LOCFILENAME;
00166
00167 _App.Find_Flags (dwFlags);
00168 _App.Find_What (str);
00169
00170 _LastFind.AddRecord (str);
00171
00172 CDialog::OnOK();
00173 }
00174
00175 void CDlgFind::UpdateEnabled()
00176 {
00177 CString str;
00178 GetDlgItemText (IDC_FINDWHAT, str);
00179 if (str.GetLength ())
00180 {
00181 BOOL bFile = IsDlgButtonChecked (IDC_FILENAME) == BST_CHECKED;
00182 BOOL bComment = IsDlgButtonChecked (IDC_COMMENT) == BST_CHECKED;
00183 BOOL bURL = IsDlgButtonChecked (IDC_URL) == BST_CHECKED;
00184 BOOL bLoc = IsDlgButtonChecked (IDC_LOCALNAME) == BST_CHECKED;
00185
00186 if (bFile == FALSE && bComment == FALSE && bURL == FALSE && bLoc == FALSE)
00187 GetDlgItem (IDOK)->EnableWindow (FALSE);
00188 else
00189 GetDlgItem (IDOK)->EnableWindow (TRUE);
00190 }
00191 else
00192 GetDlgItem (IDOK)->EnableWindow (FALSE);
00193 }
00194
00195 void CDlgFind::OnEditchangeFindwhat()
00196 {
00197 UpdateEnabled ();
00198 }
00199
00200 void CDlgFind::OnSelchangeFindwhat()
00201 {
00202 UpdateEnabled ();
00203 }
00204
00205 void CDlgFind::OnFilename()
00206 {
00207 UpdateEnabled ();
00208 }
00209
00210 void CDlgFind::OnUrl()
00211 {
00212 UpdateEnabled ();
00213 }
00214
00215 void CDlgFind::OnComment()
00216 {
00217 UpdateEnabled ();
00218 }
00219
00220 void CDlgFind::OnLocalname()
00221 {
00222 UpdateEnabled ();
00223 }