xref: /haiku/src/apps/expander/ExpanderRules.h (revision fef6144999c2fa611f59ee6ffe6dd7999501385c)
1 /*****************************************************************************/
2 // Expander
3 // Written by Jérôme Duval
4 //
5 // ExpanderRules.h
6 //
7 //
8 // Copyright (c) 2004 OpenBeOS Project
9 //
10 // Permission is hereby granted, free of charge, to any person obtaining a
11 // copy of this software and associated documentation files (the "Software"),
12 // to deal in the Software without restriction, including without limitation
13 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
14 // and/or sell copies of the Software, and to permit persons to whom the
15 // Software is furnished to do so, subject to the following conditions:
16 //
17 // The above copyright notice and this permission notice shall be included
18 // in all copies or substantial portions of the Software.
19 //
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
25 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
26 // DEALINGS IN THE SOFTWARE.
27 /*****************************************************************************/
28 
29 #ifndef _ExpanderRules_h
30 #define _ExpanderRules_h
31 
32 #include <List.h>
33 #include <File.h>
34 #include <String.h>
35 #include <MimeType.h>
36 #include <FilePanel.h>
37 
38 class ExpanderRule {
39 	public:
40 		ExpanderRule(BString mimetype, BString filenameExtension,
41 			BString listingCmd, BString expandCmd);
42 		ExpanderRule(const char*  mimetype, const char*  filenameExtension,
43 			const char*  listingCmd, const char* expandCmd);
44 		BMimeType	&MimeType() { return fMimeType;}
45 		BString		&FilenameExtension() { return fFilenameExtension;}
46 		BString		&ListingCmd() { return fListingCmd;}
47 		BString		&ExpandCmd() { return fExpandCmd;}
48 	private:
49 		BMimeType 	fMimeType;
50 		BString 	fFilenameExtension;
51 		BString 	fListingCmd;
52 		BString 	fExpandCmd;
53 };
54 
55 
56 class ExpanderRules {
57 	public:
58 		ExpanderRules();
59 		~ExpanderRules();
60 		ExpanderRule *MatchingRule(BString &fileName, const char *filetype);
61 		ExpanderRule *MatchingRule(const entry_ref *ref);
62 	private:
63 		status_t Open(BFile *file);
64 
65 		BList	fList;
66 };
67 
68 
69 class RuleRefFilter : public BRefFilter {
70 	public:
71 		RuleRefFilter(ExpanderRules &rules);
72 		bool Filter(const entry_ref *ref, BNode* node, struct stat *st,
73 			const char *filetype);
74 	protected:
75 		ExpanderRules &fRules;
76 };
77 
78 #endif /* _ExpanderRules_h */
79