xref: /haiku/headers/os/package/RepositoryInfo.h (revision 7bdeef54a24d3417300f251af891df962b638b9b)
1 /*
2  * Copyright 2011, Haiku, Inc.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _PACKAGE__REPOSITORY_INFO_H_
6 #define _PACKAGE__REPOSITORY_INFO_H_
7 
8 
9 #include <Archivable.h>
10 #include <Entry.h>
11 #include <StringList.h>
12 #include <String.h>
13 
14 #include <package/PackageArchitecture.h>
15 
16 
17 namespace BPackageKit {
18 
19 
20 class BRepositoryInfo : public BArchivable {
21 	typedef	BArchivable			inherited;
22 
23 public:
24 								BRepositoryInfo();
25 								BRepositoryInfo(BMessage* data);
26 								BRepositoryInfo(const BEntry& entry);
27 	virtual						~BRepositoryInfo();
28 
29 	virtual	status_t			Archive(BMessage* data, bool deep = true) const;
30 
31 			status_t			SetTo(const BMessage* data);
32 			status_t			SetTo(const BEntry& entry);
33 			status_t			InitCheck() const;
34 
35 			const BString&		Name() const;
36 			const BString&		Vendor() const;
37 			const BString&		Summary() const;
38 			uint8				Priority() const;
39 			BPackageArchitecture	Architecture() const;
40 			const BStringList&	LicenseNames() const;
41 			const BStringList&	LicenseTexts() const;
42 
43 			void				SetName(const BString& name);
44 			void				SetVendor(const BString& vendor);
45 			void				SetSummary(const BString& summary);
46 			void				SetPriority(uint8 priority);
47 			void				SetArchitecture(BPackageArchitecture arch);
48 
49 			status_t			AddLicense(const BString& licenseName,
50 									const BString& licenseText);
51 			void				ClearLicenses();
52 
53 public:
54 	static	BRepositoryInfo*	Instantiate(BMessage* data);
55 
56 	static	const uint8			kDefaultPriority;
57 
58 	static	const char* const	kNameField;
59 	static	const char* const	kVendorField;
60 	static	const char*	const	kSummaryField;
61 	static	const char*	const	kPriorityField;
62 	static	const char*	const	kArchitectureField;
63 	static	const char*	const	kLicenseNameField;
64 	static	const char*	const	kLicenseTextField;
65 
66 private:
67 			status_t			_SetTo(const BMessage* data);
68 			status_t			_SetTo(const BEntry& entry);
69 
70 private:
71 			status_t			fInitStatus;
72 
73 			BString				fName;
74 			BString				fVendor;
75 			BString				fSummary;
76 			uint8				fPriority;
77 			BPackageArchitecture	fArchitecture;
78 			BStringList			fLicenseNames;
79 			BStringList			fLicenseTexts;
80 };
81 
82 
83 }	// namespace BPackageKit
84 
85 
86 #endif // _PACKAGE__REPOSITORY_INFO_H_
87