xref: /haiku/headers/os/package/RepositoryInfo.h (revision 692fe5550319c0342c9525e674b7f10105d977ee)
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 	// XXX: Kill me after everyone upgrades
59 	static  const char* const	kURLField;
60 
61 	static	const char* const	kNameField;
62 	static	const char* const	kVendorField;
63 	static	const char*	const	kSummaryField;
64 	static	const char*	const	kPriorityField;
65 	static	const char*	const	kArchitectureField;
66 	static	const char*	const	kLicenseNameField;
67 	static	const char*	const	kLicenseTextField;
68 
69 private:
70 			status_t			_SetTo(const BMessage* data);
71 			status_t			_SetTo(const BEntry& entry);
72 
73 private:
74 			status_t			fInitStatus;
75 
76 			BString				fName;
77 			BString				fVendor;
78 			BString				fSummary;
79 			uint8				fPriority;
80 			BPackageArchitecture	fArchitecture;
81 			BStringList			fLicenseNames;
82 			BStringList			fLicenseTexts;
83 };
84 
85 
86 }	// namespace BPackageKit
87 
88 
89 #endif // _PACKAGE__REPOSITORY_INFO_H_
90