Develop and Download Open Source Software

Browse CVS Repository

Contents of /tombo/Tombo/Src/FilterAddDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.5 - (show annotations) (download) (as text)
Sat Jan 21 08:11:54 2006 UTC (18 years, 2 months ago) by hirami
Branch: MAIN
CVS Tags: Tombo_2_0a3, Tombo_1_17_1, B197, B198, B199, B200, B201, B202, B203, B205, B206, B207, B208, B213, B212, B211, B217, B216, B215, B214, B219, B218, Tombo_2_0b2, Tombo_2_0b3, Tombo_2_0b1, Tombo_2_0b4, B228, B229, B226, B227, B224, B225, B222, B223, B220, B221, B231, B230, Tombo_1_17, Tombo_1_16, HEAD
Branch point for: Tombo_1_17_1_branch
Changes since 1.4: +3 -2 lines
File MIME type: text/x-c++src
* some properties(window size, topmost, one/two screen mode,..) write back timing are changed.

1 #include <windows.h>
2 #include <tchar.h>
3 #if defined(PLATFORM_WIN32)
4 #include <stdio.h>
5 #endif
6 #include "resource.h"
7 #include "Tombo.h"
8 #include "Message.h"
9 #include "DialogTemplate.h"
10 #include "VFStream.h"
11 #include "FilterAddDlg.h"
12 #include "Property.h"
13 #include "TString.h"
14
15 ////////////////////////////////////////////////////////////////
16 ////////////////////////////////////////////////////////////////
17 // Regex filter
18 ////////////////////////////////////////////////////////////////
19 ////////////////////////////////////////////////////////////////
20
21 ////////////////////////////////////////////////////////////////
22 // ctor & dtor
23 ////////////////////////////////////////////////////////////////
24
25 RegexFilterAddDlg::~RegexFilterAddDlg()
26 {
27 delete pMatchStr;
28 }
29
30 BOOL RegexFilterAddDlg::Init(LPCTSTR pMatch, BOOL bCS, BOOL bCE, BOOL bFile, BOOL bNeg)
31 {
32 pMatchStr = new TString();
33 if (pMatchStr == NULL) return FALSE;
34
35 if (pMatch) {
36 if (!pMatchStr->Set(pMatch)) return FALSE;
37 bCaseSensitive = bCS;
38 bCheckEncrypt = bCE;
39 bMatchFileName = bFile;
40 bNegate = bNeg;
41 }
42
43 return TRUE;
44 }
45
46 static DlgMsgRes aRegexRes[] = {
47 { IDC_FILTERDEF_ADD_REGEX_LABEL, MSG_ID_DLG_FILTERDEF_ADD_REGEX_FINDSTR },
48 { IDC_FILTERDEF_REGEX_CASESENSITIVE, MSG_ID_DLG_FILTERDEF_ADD_REGEX_CASESENSITIVE },
49 { IDC_FILTERDEF_REGEX_CRYPTMEMO, MSG_ID_DLG_FILTERDEF_ADD_REGEX_INCLUDECRYPTED },
50 { IDC_FILTERDEF_REGEX_FILENAME, MSG_ID_DLG_FILTERDEF_ADD_REGEX_FORFILENAME },
51 { IDC_FILTERDEF_REGEX_NEGATE, MSG_ID_DLG_FILTERDEF_ADD_REGEX_EXCLUDE },
52 { IDOK, MSG_ID_DLG_CMN_OK },
53 { IDCANCEL, MSG_ID_DLG_CMN_CANCEL },
54 };
55
56 void RegexFilterAddDlg::InitDialog(HWND hDlg)
57 {
58 OverrideDlgMsg(hDlg, MSG_ID_DLG_FILTERDEF_ADD_REGEX_TITLE, aRegexRes, sizeof(aRegexRes) / sizeof(DlgMsgRes));
59
60 HWND hSearchStr = GetDlgItem(hDlg, IDC_FILTERDEF_REGEX_SEARCHSTR);
61 LPCTSTR pHist = g_Property.GetSearchHist();
62 SetHistoryToComboBox(hSearchStr, pHist);
63
64 if (pMatchStr->Get() != NULL) {
65 SendMessage(hSearchStr, CB_INSERTSTRING, 0, (LPARAM)(pMatchStr->Get()));
66 SendMessage(hSearchStr, CB_SETCURSEL, 0, 0);
67
68 HWND hCS = GetDlgItem(hDlg, IDC_FILTERDEF_REGEX_CASESENSITIVE);
69 HWND hCE = GetDlgItem(hDlg, IDC_FILTERDEF_REGEX_CRYPTMEMO);
70 HWND hCF = GetDlgItem(hDlg, IDC_FILTERDEF_REGEX_FILENAME);
71 HWND hNg = GetDlgItem(hDlg, IDC_FILTERDEF_REGEX_NEGATE);
72
73 SendMessage(hCS, BM_SETCHECK, bCaseSensitive ? BST_CHECKED : BST_UNCHECKED, 0);
74 SendMessage(hCE, BM_SETCHECK, bCheckEncrypt ? BST_CHECKED : BST_UNCHECKED, 0);
75 SendMessage(hCF, BM_SETCHECK, bMatchFileName ? BST_CHECKED : BST_UNCHECKED, 0);
76 SendMessage(hNg, BM_SETCHECK, bNegate ? BST_CHECKED : BST_UNCHECKED, 0);
77 }
78 }
79
80 BOOL RegexFilterAddDlg::OnOK()
81 {
82 HWND hSearchStr = GetDlgItem(hDialog, IDC_FILTERDEF_REGEX_SEARCHSTR);
83 HWND hCase = GetDlgItem(hDialog, IDC_FILTERDEF_REGEX_CASESENSITIVE);
84 HWND hEncrypt = GetDlgItem(hDialog, IDC_FILTERDEF_REGEX_CRYPTMEMO);
85 HWND hFilteTarget = GetDlgItem(hDialog, IDC_FILTERDEF_REGEX_FILENAME);
86 HWND hNegate = GetDlgItem(hDialog, IDC_FILTERDEF_REGEX_NEGATE);
87
88 DWORD nLen = GetWindowTextLength(hSearchStr);
89 if (!pMatchStr->Alloc(nLen + 1)) return FALSE;
90 GetWindowText(hSearchStr, pMatchStr->Get(), nLen + 1);
91 g_Property.SetSearchHist(GetHistoryFromComboBox(hSearchStr, pMatchStr->Get(), NUM_SEARCH_HISTORY));
92
93 bCaseSensitive = SendMessage(hCase, BM_GETCHECK, 0, 0) == BST_CHECKED;
94 bCheckEncrypt = SendMessage(hEncrypt, BM_GETCHECK, 0, 0) == BST_CHECKED;
95 bMatchFileName = SendMessage(hFilteTarget, BM_GETCHECK, 0, 0) == BST_CHECKED;
96 bNegate = SendMessage(hNegate, BM_GETCHECK, 0, 0) == BST_CHECKED;
97
98 return TRUE;
99 }
100
101 ////////////////////////////////////////////////////////////////
102 ////////////////////////////////////////////////////////////////
103 // Limit filter
104 ////////////////////////////////////////////////////////////////
105 ////////////////////////////////////////////////////////////////
106
107 static DlgMsgRes aLimitRes[] = {
108 { IDC_FILTERDEF_ADD_LIMIT_ITEMS, MSG_ID_DLG_FILTERDEF_ADD_LIMIT_ITEMS },
109 { IDOK, MSG_ID_DLG_CMN_OK },
110 { IDCANCEL, MSG_ID_DLG_CMN_CANCEL },
111 };
112
113 void LimitFilterAddDlg::InitDialog(HWND hDlg)
114 {
115 OverrideDlgMsg(hDlg, MSG_ID_DLG_FILTERDEF_ADD_LIMIT_TITLE, aLimitRes, sizeof(aLimitRes) / sizeof(DlgMsgRes));
116 if (nLimit != 0) {
117 TCHAR buf[32];
118 HWND hNumLimit = GetDlgItem(hDlg, IDC_FILTERDEF_LIMIT_NUMLIMIT);
119 _stprintf(buf, TEXT("%d"), nLimit);
120 SetWindowText(hNumLimit, buf);
121 }
122 }
123
124 BOOL LimitFilterAddDlg::OnOK()
125 {
126 HWND hNumLimit = GetDlgItem(hDialog, IDC_FILTERDEF_LIMIT_NUMLIMIT);
127
128 TCHAR buf[32];
129 GetWindowText(hNumLimit, buf, 32);
130 int iNum = _ttoi(buf);
131 if (iNum <= 0) {
132 MessageBox(hDialog, MSG_SET_POSITIVE, TOMBO_APP_NAME, MB_OK | MB_ICONWARNING);
133 return FALSE;
134 }
135 nLimit = iNum;
136 return TRUE;
137 }
138
139 ////////////////////////////////////////////////////////////////
140 ////////////////////////////////////////////////////////////////
141 // Timestamp filter
142 ////////////////////////////////////////////////////////////////
143 ////////////////////////////////////////////////////////////////
144 BOOL TimestampFilterAddDlg::Init(DWORD nD, BOOL b)
145 {
146 nDeltaDays = nD;
147 bNewer = b;
148 return TRUE;
149 }
150
151 static DlgMsgRes aTimestampRes[] = {
152 { IDC_FILTERDEF_ADD_TIMESTAMP_BASEPOINT, MSG_ID_DLG_FILTERDEF_ADD_TIMESTAMP_BASETIME },
153 { IDC_FILTERDEF_TS_NEWER, MSG_ID_DLG_FILTERDEF_ADD_TIMESTAMP_NEWER },
154 { IDC_FILTERDEF_TS_OLDER, MSG_ID_DLG_FILTERDEF_ADD_TIMESTAMP_OLDER },
155 { IDOK, MSG_ID_DLG_CMN_OK },
156 { IDCANCEL, MSG_ID_DLG_CMN_CANCEL },
157 };
158
159 void TimestampFilterAddDlg::InitDialog(HWND hDlg)
160 {
161 OverrideDlgMsg(hDlg, MSG_ID_DLG_FILTERDEF_ADD_TIMESTAMP_TITLE, aTimestampRes, sizeof(aTimestampRes)/sizeof(DlgMsgRes));
162
163 HWND hNewer = GetDlgItem(hDlg, IDC_FILTERDEF_TS_NEWER);
164
165 if (nDeltaDays == 0) {
166 SendMessage(hNewer, BM_SETCHECK, BST_CHECKED, 0);
167 } else {
168 HWND hDelta = GetDlgItem(hDialog, IDC_FILTERDEF_TS_DELTADAY);
169 TCHAR buf[32];
170 _stprintf(buf, TEXT("%d"), nDeltaDays);
171 SetWindowText(hDelta, buf);
172 if (bNewer) {
173 SendMessage(hNewer, BM_SETCHECK, BST_CHECKED, 0);
174 } else {
175 HWND hOlder = GetDlgItem(hDlg, IDC_FILTERDEF_TS_OLDER);
176 SendMessage(hOlder, BM_SETCHECK, BST_CHECKED, 0);
177 }
178 }
179 }
180
181 BOOL TimestampFilterAddDlg::OnOK()
182 {
183 // get day
184 HWND hDelta = GetDlgItem(hDialog, IDC_FILTERDEF_TS_DELTADAY);
185 TCHAR buf[32];
186 GetWindowText(hDelta, buf, 32);
187 int iNum = _ttoi(buf);
188 if (iNum <= 0) {
189 MessageBox(hDialog, MSG_SET_POSITIVE, TOMBO_APP_NAME, MB_OK | MB_ICONWARNING);
190 return FALSE;
191 }
192 nDeltaDays = iNum;
193
194 // get mode
195 HWND hNewer = GetDlgItem(hDialog, IDC_FILTERDEF_TS_NEWER);
196 bNewer = SendMessage(hNewer, BM_GETCHECK, 0, 0) == BST_CHECKED;
197
198 return TRUE;
199 }
200
201 ////////////////////////////////////////////////////////////////
202 ////////////////////////////////////////////////////////////////
203 // Sort filter
204 ////////////////////////////////////////////////////////////////
205 ////////////////////////////////////////////////////////////////
206
207 static DlgMsgRes aSortRes[] = {
208 { IDC_FILTERDEF_ADD_SORT_LABEL, MSG_ID_DLG_FILTERDEF_ADD_SORT_METHOD },
209 { IDOK, MSG_ID_DLG_CMN_OK },
210 { IDCANCEL, MSG_ID_DLG_CMN_CANCEL },
211 };
212
213 void SortFilterAddDlg::InitDialog(HWND hDlg)
214 {
215 OverrideDlgMsg(hDlg, MSG_ID_DLG_FILTERDEF_ADD_SORT_TITLE, aSortRes, sizeof(aSortRes)/sizeof(DlgMsgRes));
216
217 HWND hSortType = GetDlgItem(hDlg, IDC_FILTERDEF_SORT_TYPE);
218 SendMessage(hSortType, CB_ADDSTRING, 0, (LPARAM)MSG_STREAM_VALUE_SORT_FNAME_ASC);
219 SendMessage(hSortType, CB_ADDSTRING, 0, (LPARAM)MSG_STREAM_VALUE_SORT_FNAME_DSC);
220 SendMessage(hSortType, CB_ADDSTRING, 0, (LPARAM)MSG_STREAM_VALUE_SORT_LASTUPD_ASC);
221 SendMessage(hSortType, CB_ADDSTRING, 0, (LPARAM)MSG_STREAM_VALUE_SORT_LASTUPD_DSC);
222 SendMessage(hSortType, CB_ADDSTRING, 0, (LPARAM)MSG_STREAM_VALUE_SORT_CREATE_ASC);
223 SendMessage(hSortType, CB_ADDSTRING, 0, (LPARAM)MSG_STREAM_VALUE_SORT_CREATE_DSC);
224 SendMessage(hSortType, CB_ADDSTRING, 0, (LPARAM)MSG_STREAM_VALUE_SORT_FILESIZE_ASC);
225 SendMessage(hSortType, CB_ADDSTRING, 0, (LPARAM)MSG_STREAM_VALUE_SORT_FILESIZE_DSC);
226
227 DWORD n;
228 switch (sfType) {
229 case VFSortFilter::SortFunc_FileNameAsc: n = 0; break;
230 case VFSortFilter::SortFunc_FileNameDsc: n = 1; break;
231 case VFSortFilter::SortFunc_LastUpdateAsc: n = 2; break;
232 case VFSortFilter::SortFunc_LastUpdateDsc: n = 3; break;
233 case VFSortFilter::SortFunc_CreateDateAsc: n = 4; break;
234 case VFSortFilter::SortFunc_CreateDateDsc: n = 5; break;
235 case VFSortFilter::SortFunc_FileSizeAsc: n = 6; break;
236 case VFSortFilter::SortFunc_FileSizeDsc: n = 7; break;
237 default:
238 n = 0;
239 }
240
241 SendMessage(hSortType, CB_SETCURSEL, n, 0);
242 }
243
244 #define NUM_SOFTFILTER_SORT_TYPE 8
245
246 static VFSortFilter::SortFuncType sfComboList[NUM_SOFTFILTER_SORT_TYPE] = {
247 VFSortFilter::SortFunc_FileNameAsc,
248 VFSortFilter::SortFunc_FileNameDsc,
249 VFSortFilter::SortFunc_LastUpdateAsc,
250 VFSortFilter::SortFunc_LastUpdateDsc,
251 VFSortFilter::SortFunc_CreateDateAsc,
252 VFSortFilter::SortFunc_CreateDateDsc,
253 VFSortFilter::SortFunc_FileSizeAsc,
254 VFSortFilter::SortFunc_FileSizeDsc
255
256 };
257
258 BOOL SortFilterAddDlg::OnOK()
259 {
260 HWND hSortType = GetDlgItem(hDialog, IDC_FILTERDEF_SORT_TYPE);
261 DWORD n = SendMessage(hSortType, CB_GETCURSEL, 0, 0);
262 if (n >= NUM_SOFTFILTER_SORT_TYPE) {
263 sfType = VFSortFilter::SortFunc_Unknown;
264 } else {
265 sfType = sfComboList[n];
266 }
267 return TRUE;
268 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26