2 * @file DirFilterDlg.cpp
4 * @brief Implementation file for DirCmpReport dialog
10 #include "DirFilterDlg.h"
11 #include "DirReportTypes.h"
13 #include "FileOrFolderSelect.h"
16 IMPLEMENT_DYNAMIC(DirFilterDlg, CDialog)
21 DirFilterDlg::DirFilterDlg(CWnd* pParent /*=NULL*/)
22 : CDialog(DirFilterDlg::IDD, pParent)
23 , m_bCopyToClipboard(FALSE)
24 , m_nReportType(REPORT_TYPE_COMMALIST)
29 * @brief Map dialog controls to member variables.
30 * This function maps dialog controls with member variables so
31 * when UpdateData() is called controls and member variables
34 void DirFilterDlg::DoDataExchange(CDataExchange* pDX)
36 CDialog::DoDataExchange(pDX);
37 DDX_Control(pDX, IDC_REPORT_FILE, m_ctlReportFile);
38 DDX_Control(pDX, IDC_REPORT_STYLECOMBO, m_ctlStyle);
39 DDX_Text(pDX, IDC_REPORT_FILE, m_sReportFile);
40 DDX_Check(pDX, IDC_REPORT_COPYCLIPBOARD, m_bCopyToClipboard);
43 BEGIN_MESSAGE_MAP(DirFilterDlg, CDialog)
44 ON_BN_CLICKED(IDC_REPORT_BROWSEFILE, OnBtnClickReportBrowse)
45 ON_BN_DOUBLECLICKED(IDC_REPORT_COPYCLIPBOARD, OnBtnDblclickCopyClipboard)
49 * @brief Definition for structure containing report types.
50 * This struct is used to form a report types list. This list
51 * can be then used to initialize the GUI for reports.
55 REPORT_TYPE reportType; /**< Report-type ID */
56 int idDisplay; /**< Resource-string ID (shown in file-selection dialog) */
57 int browseFilter; /**< File-extension filter (resource-string ID) */
61 * @brief List of report types.
62 * This list is used to initialize the GUI.
64 static ReportTypeInfo f_types[] = {
65 { REPORT_TYPE_COMMALIST,
69 { REPORT_TYPE_TABLIST,
73 { REPORT_TYPE_SIMPLEHTML,
74 IDS_REPORT_SIMPLEHTML,
77 { REPORT_TYPE_SIMPLEXML,
84 * @brief Dialog initializer function.
86 BOOL DirFilterDlg::OnInitDialog()
88 theApp.TranslateDialog(m_hWnd);
89 CDialog::OnInitDialog();
91 m_ctlReportFile.LoadState(_T("ReportFiles"));
93 for (int i = 0; i < sizeof(f_types) / sizeof(f_types[0]); ++i)
95 const ReportTypeInfo & info = f_types[i];
96 int ind = m_ctlStyle.InsertString(i, theApp.LoadString(info.idDisplay).c_str());
97 m_ctlStyle.SetItemData(ind, info.reportType);
100 m_ctlStyle.SetCurSel(0);
101 // Set selected path to variable so file selection dialog shows
102 // correct filename and path.
103 m_ctlReportFile.GetWindowText(m_sReportFile);
105 return TRUE; // return TRUE unless you set the focus to a control
106 // EXCEPTION: OCX Property Pages should return FALSE
110 * @brief Browse for report file.
112 void DirFilterDlg::OnBtnClickReportBrowse()
116 CString folder = m_sReportFile;
117 int filterid = f_types[m_ctlStyle.GetCurSel()].browseFilter;
119 CString chosenFilepath;
120 if (SelectFile(GetSafeHwnd(), chosenFilepath, folder, IDS_SAVE_AS_TITLE,
123 m_sReportFile = chosenFilepath;
124 m_ctlReportFile.SetWindowText(chosenFilepath);
129 * @brief Erase report file name.
131 void DirFilterDlg::OnBtnDblclickCopyClipboard()
133 m_ctlReportFile.SetWindowText(_T(""));
137 * @brief Close dialog.
139 void DirFilterDlg::OnOK()
143 int sel = m_ctlStyle.GetCurSel();
144 m_nReportType = (REPORT_TYPE)m_ctlStyle.GetItemData(sel);
146 if (m_sReportFile.IsEmpty() && !m_bCopyToClipboard)
148 LangMessageBox(IDS_MUST_SPECIFY_OUTPUT, MB_ICONSTOP);
149 m_ctlReportFile.SetFocus();
153 if (!m_sReportFile.IsEmpty())
155 if (paths_DoesPathExist(m_sReportFile) == IS_EXISTING_FILE)
157 int overWrite = LangMessageBox(IDS_REPORT_FILEOVERWRITE,
158 MB_YESNO | MB_ICONWARNING | MB_DONT_ASK_AGAIN,
159 IDS_DIFF_FILEOVERWRITE);
160 if (overWrite == IDNO)
165 m_ctlReportFile.SaveState(_T("ReportFiles"));