Develop and Download Open Source Software

Browse CVS Repository

Contents of /tombo/Tombo/Src/VFStream.h

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


Revision 1.14 - (show annotations) (download) (as text)
Sun Sep 18 06:45:40 2005 UTC (18 years, 6 months ago) by hirami
Branch: MAIN
CVS Tags: Tombo_2_0a3, Tombo_1_17_1, B191, B192, B193, B194, B196, B197, B198, B199, B200, B201, B202, B203, B205, B206, B207, B208, B187, B186, B189, B188, 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, SNAPSHOT20051220, B231, B230, Tombo_1_15, Tombo_1_17, Tombo_1_16, HEAD
Branch point for: Tombo_1_17_1_branch
Changes since 1.13: +14 -11 lines
File MIME type: text/x-chdr
* Change value format note path to uri at virtual folder's "Filter settings" source tab.
* FIX: Encrypted not is not checked on vfolder

- replace VFolder directory scan implementation.

1 #ifndef VFSTREAM_H
2 #define VFSTREAM_H
3
4 class SearchEngineA;
5 class PasswordManager;
6 class VFStore;
7 class TString;
8 class File;
9 class TomboURI;
10
11 #include "VarBuffer.h"
12
13 ////////////////////////////////////
14 ////////////////////////////////////
15 // Virtual Folder Node Stream
16 ////////////////////////////////////
17 ////////////////////////////////////
18
19 ////////////////////////////////////
20 // stream item
21 ////////////////////////////////////
22
23 class VFNote {
24 // The object lifecycle of *pURI is same as VFNote.
25 // do not point *pURI but use copy of the object. *pURI has smart pointer, so cost is not expensive.
26 TomboURI *pURI;
27 LPTSTR pTitle;
28 UINT64 uLastUpdate;
29 UINT64 uCreateDate;
30 UINT64 uFileSize;
31
32 public:
33 VFNote() : pURI(NULL), pTitle(NULL) {}
34 ~VFNote();
35 BOOL Init(const TomboURI *pURI, LPCTSTR pTitle);
36
37 const TomboURI *GetURI() { return pURI; }
38
39 // If ClearNote() is not called and VFNote is deleted,
40 // pNote is deleted, too. To prevent deleting, you should call ClearNote().
41 // In this case, deleting pNote is due to caller.
42
43 LPCTSTR GetTitle() { return pTitle; }
44
45 UINT64 GetLastUpdate() { return uLastUpdate; }
46 UINT64 GetCreateDate() { return uCreateDate; }
47 UINT64 GetFileSize() { return uFileSize; }
48 };
49
50 ////////////////////////////////////
51 // VFStream interface
52 ////////////////////////////////////
53
54 class VFStream {
55 protected:
56 VFStream *pNext;
57 public:
58
59 VFStream();
60 virtual ~VFStream();
61
62 ///////////////////////////
63 // Create/delete filter chains.
64
65 BOOL SetNext(VFStream *p);
66 virtual void FreeObject();
67 VFStream *GetNext() { return pNext; }
68
69 ///////////////////////////
70 // Notes filtering.
71
72 // Initialize classes before sequence of Store().
73 // by default, Prepare() calls pNext->Prepare().
74 virtual BOOL Prepare();
75
76 // Try to store VFNote. If success, retrun TRUE. If errors, return FALSE.
77 // if a class VFStream's subclass decide discard p, the class should delete p.
78 virtual BOOL Store(VFNote *p) = 0;
79
80 // Finalize classes after calling sequence of Store().
81 // by default PostActive() calls pNext->PostActive().
82 virtual BOOL PostActivate();
83
84 ///////////////////////////
85 // copy method
86 virtual VFStream *Clone(VFStore **ppTail) = 0;
87
88 ///////////////////////////
89 // generate XML
90 virtual BOOL GenerateXMLOpenTag(File *pFile) = 0;
91 virtual BOOL GenerateXMLCloseTag(File *pFile) = 0;
92
93 ///////////////////////////
94 // for FilterDefDlg
95 virtual LPCTSTR GetFilterType() = 0;
96 virtual BOOL ToString(TString *p) = 0;
97
98 ///////////////////////////
99 // for Setting parameter
100 virtual BOOL UpdateParamWithDialog(HINSTANCE hInst, HWND hParent) = 0;
101 // return TRUE if updated.
102 // FALSE if not updated(CANCELED) or failed.
103
104 virtual BOOL NeedEncryptedNote();
105
106 };
107
108 ////////////////////////////////////
109 // Directory generator
110 ////////////////////////////////////
111 // In current version, VFDirectoryGenerator is only generator.
112
113 class VFDirectoryGenerator : public VFStream {
114 TomboURI *pURI;
115 BOOL bCheckEncrypt;
116 public:
117 VFDirectoryGenerator();
118 ~VFDirectoryGenerator();
119
120 ////////////////////////////
121 // VFStream implimentation
122
123 // BOOL Prepare(); inherit
124 BOOL Store(VFNote *p);
125 // BOOL PostActivate(); inherit
126 BOOL Activate();
127 // void FreeObject(); inherit
128
129 BOOL Init(LPCTSTR pDir, BOOL bCheckEncrypt);
130 BOOL Init(const TomboURI *pURI, BOOL bCheckEncrypt);
131
132 VFStream *Clone(VFStore **ppTail);
133
134 BOOL GenerateXMLOpenTag(File *pFile);
135 BOOL GenerateXMLCloseTag(File *pFile);
136
137 const TomboURI *GetURI() { return pURI; }
138
139 BOOL SetDirPath(LPCTSTR pPath);
140 BOOL SetURI(const TomboURI *pURI);
141
142 LPCTSTR GetFilterType();
143 BOOL ToString(TString *p);
144
145 BOOL UpdateParamWithDialog(HINSTANCE hInst, HWND hParent);
146 };
147
148 ////////////////////////////////////
149 // Directory generator
150 ////////////////////////////////////
151
152 class VFStore : public VFStream {
153 public:
154 enum OrderInfo {
155 ORDER_TITLE,
156 ORDER_LAST_UPD,
157 };
158
159 protected:
160 enum OrderInfo oiOrder;
161 TVector <VFNote*> vNotes;
162
163 public:
164 // VFStore(enum OrderInfo odr);
165 VFStore();
166 ~VFStore();
167 BOOL Init();
168
169 void FreeObject();
170
171 BOOL Prepare();
172 BOOL Store(VFNote *p);
173 BOOL PostActivate();
174 VFStream *Clone(VFStore **ppTail);
175 BOOL GenerateXMLOpenTag(File *pFile);
176 BOOL GenerateXMLCloseTag(File *pFile);
177
178 DWORD NumItem() { return vNotes.NumItems(); }
179 VFNote *GetNote(DWORD n) { return *vNotes.GetUnit(n); }
180
181 // free VFNote array.
182 void FreeArray();
183
184 LPCTSTR GetFilterType();
185 BOOL ToString(TString *p);
186
187 BOOL UpdateParamWithDialog(HINSTANCE hInst, HWND hParent);
188 };
189
190 ////////////////////////////////////
191 // Filter by regular expression
192 ////////////////////////////////////
193
194 class VFRegexFilter : public VFStream {
195 #ifdef UNIT_TEST
196 public:
197 #endif
198 SearchEngineA *pRegex;
199 TString *pPattern;
200 BOOL bCaseSensitive;
201 BOOL bFileNameOnly;
202 BOOL bNegate;
203
204 PasswordManager *pPassMgr;
205
206 public:
207 VFRegexFilter();
208 ~VFRegexFilter();
209 BOOL Init(LPCTSTR pPattern, BOOL bCase, BOOL bEnc, BOOL bFileName, BOOL bNeg, PasswordManager *pPassMgr);
210 BOOL Reset(LPCTSTR pPattern, BOOL bCase, BOOL bEnc, BOOL bFileName, BOOL bNeg);
211
212 ////////////////////////////
213 // VFStream implimentation
214
215 // BOOL Prepare(); inherit to VFStream
216 virtual BOOL Store(VFNote *p);
217 // BOOL PostActivate(); inherit to VFStream
218 // void FreeObject(); inherit to VFStream
219
220 VFStream *Clone(VFStore **ppTail);
221 BOOL GenerateXMLOpenTag(File *pFile);
222 BOOL GenerateXMLCloseTag(File *pFile);
223
224 LPCTSTR GetFilterType();
225 BOOL ToString(TString *p);
226
227 BOOL UpdateParamWithDialog(HINSTANCE hInst, HWND hParent);
228 BOOL NeedEncryptedNote();
229 };
230
231 ////////////////////////////////////
232 // Limit number of notes
233 ////////////////////////////////////
234
235 class VFLimitFilter : public VFStream {
236 #ifdef UNIT_TEST
237 public:
238 #endif
239 DWORD nLimit;
240 DWORD nCount;
241 public:
242 VFLimitFilter();
243 ~VFLimitFilter();
244 BOOL Init(DWORD nLimit);
245
246 BOOL Prepare();
247 BOOL Store(VFNote *p);
248
249 VFStream *Clone(VFStore **ppTail);
250 BOOL GenerateXMLOpenTag(File *pFile);
251 BOOL GenerateXMLCloseTag(File *pFile);
252
253 LPCTSTR GetFilterType();
254 BOOL ToString(TString *p);
255
256 BOOL UpdateParamWithDialog(HINSTANCE hInst, HWND hParent);
257 };
258
259 ////////////////////////////////////
260 // Check timestamp
261 ////////////////////////////////////
262
263 class VFTimestampFilter : public VFStream {
264 #ifdef UNIT_TEST
265 public:
266 #endif
267 BOOL bNewer;
268 DWORD nDeltaDays;
269 UINT64 uBase;
270 public:
271 VFTimestampFilter();
272 ~VFTimestampFilter();
273 BOOL Reset(DWORD nDeltaDays, BOOL bNewer);
274 BOOL Init(DWORD nDelta = 0, BOOL bNew = FALSE) { return Reset(nDelta, bNew); }
275
276 // BOOL Prepare();
277 BOOL Store(VFNote *p);
278
279 VFStream *Clone(VFStore **ppTail);
280 BOOL GenerateXMLOpenTag(File *pFile);
281 BOOL GenerateXMLCloseTag(File *pFile);
282
283 LPCTSTR GetFilterType();
284 BOOL ToString(TString *p);
285
286 BOOL UpdateParamWithDialog(HINSTANCE hInst, HWND hParent);
287 };
288
289 ////////////////////////////////////
290 // Sort
291 ////////////////////////////////////
292
293 class VFSortFilter : public VFStream {
294 public:
295 enum SortFuncType {
296 SortFunc_Unknown,
297 SortFunc_FileNameAsc,
298 SortFunc_FileNameDsc,
299 SortFunc_LastUpdateAsc,
300 SortFunc_LastUpdateDsc,
301 SortFunc_CreateDateAsc,
302 SortFunc_CreateDateDsc,
303 SortFunc_FileSizeAsc,
304 SortFunc_FileSizeDsc
305 };
306 #ifndef UNIT_TEST
307 protected:
308 #endif
309 SortFuncType sfType;
310 TVector<VFNote*> vNotes;
311 public:
312 VFSortFilter();
313 ~VFSortFilter();
314 BOOL Init(SortFuncType sf);
315
316 BOOL Prepare();
317 BOOL Store(VFNote *p);
318 BOOL PostActivate();
319
320 VFStream *Clone(VFStore **ppTail);
321 BOOL GenerateXMLOpenTag(File *pFile);
322 BOOL GenerateXMLCloseTag(File *pFile);
323
324 LPCTSTR GetFilterType();
325 BOOL ToString(TString *p);
326
327 BOOL UpdateParamWithDialog(HINSTANCE hInst, HWND hParent);
328 };
329
330 #endif

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