2 * @file TestFilterDlg.cpp
4 * @brief Dialog for testing file filters
8 #include "TestFilterDlg.h"
10 #include "UnicodeString.h"
11 #include "FileFilterMgr.h"
19 * @param [in] pParent Parent window.
20 * @param [in] pFileFilter File filter to test.
21 * @param [in] pFilterMgr File filter manager.
23 CTestFilterDlg::CTestFilterDlg(CWnd* pParent, FileFilter * pFileFilter, FileFilterMgr *pFilterMgr)
24 : CTrDialog(CTestFilterDlg::IDD, pParent)
25 , m_pFileFilter(pFileFilter)
26 , m_pFileFilterMgr(pFilterMgr)
30 void CTestFilterDlg::DoDataExchange(CDataExchange* pDX)
32 CTrDialog::DoDataExchange(pDX);
33 //{{AFX_DATA_MAP(CTestFilterDlg)
34 // NOTE: the ClassWizard will add DDX and DDV calls here
39 BEGIN_MESSAGE_MAP(CTestFilterDlg, CTrDialog)
40 //{{AFX_MSG_MAP(CTestFilterDlg)
41 ON_BN_CLICKED(IDC_TEST_BTN, OnTestBtn)
45 /////////////////////////////////////////////////////////////////////////////
46 // CTestFilterDlg message handlers
49 * @brief Initialize the dialog.
50 * @return FALSE always.
52 BOOL CTestFilterDlg::OnInitDialog()
54 CTrDialog::OnInitDialog();
56 SetDlgItemFocus(IDC_TEST_TEXT);
58 String name = m_pFileFilterMgr->GetFilterName(m_pFileFilter);
59 SetDlgItemText(IDC_HEADER_FILTER_NAME, name);
61 return FALSE; // return TRUE unless you set the focus to a control
62 // EXCEPTION: OCX Property Pages should return FALSE
65 /** @brief User pressed Text button. */
66 void CTestFilterDlg::OnTestBtn()
69 GetDlgItemText(IDC_TEST_TEXT, text);
71 bool passed = CheckText(text);
73 String result = (passed ? _T("passed") : _T("failed"));
74 text += _T(": ") + result;
80 * @brief Test text against filter.
81 * @param [in] text Text to test.
82 * @return true if text passes the filter, `false` otherwise.
84 bool CTestFilterDlg::CheckText(String text) const
86 bool isDir = (IsDlgButtonChecked(IDC_IS_DIRECTORY) == 1);
89 // Convert any forward slashes to canonical Windows-style backslashes
90 strutils::replace(text, _T("/"), _T("\\"));
91 return m_pFileFilterMgr->TestDirNameAgainstFilter(m_pFileFilter, text);
95 return m_pFileFilterMgr->TestFileNameAgainstFilter(m_pFileFilter, text);
100 * @brief Add new result to end of result edit box.
101 * @param [in] result Result text to add.
103 void CTestFilterDlg::AppendResult(const String& result)
106 GetDlgItemText(IDC_RESULTS, text);
107 if (text.length() > 0)
108 text += _T("\r\n") + result;
111 SetDlgItemText(IDC_RESULTS, text);
112 SendDlgItemMessage(IDC_RESULTS, WM_VSCROLL, SB_BOTTOM, 0L);