xref: /haiku/src/apps/installer/PackageViews.h (revision f1e5a6c914a9341f2b874f43b8f945db7c895d4c)
1 /*
2  * Copyright 2005, Jérôme DUVAL. All rights reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef __PACKAGEVIEWS_H__
6 #define __PACKAGEVIEWS_H__
7 
8 #include <stdlib.h>
9 #include <string.h>
10 
11 #include <Bitmap.h>
12 #include <CheckBox.h>
13 #include <Entry.h>
14 #include <List.h>
15 #include <Path.h>
16 #include <String.h>
17 #include <StringView.h>
18 
19 
20 class Group {
21 public:
22 								Group();
23 	virtual						~Group();
SetGroupName(const char * group)24 			void				SetGroupName(const char* group)
25 									{ strcpy(fGroup, group); }
GroupName()26 			const char*			GroupName() const
27 									{ return fGroup; }
28 private:
29 			char				fGroup[64];
30 };
31 
32 
33 class Package : public Group {
34 public:
35 								Package(const BPath &path);
36 	virtual						~Package();
37 
SetPath(const BPath & path)38 			void				SetPath(const BPath &path)
39 									{ fPath = path; }
SetName(const BString name)40 			void				SetName(const BString name)
41 									{ fName = name; }
SetDescription(const BString description)42 			void				SetDescription(const BString description)
43 									{ fDescription = description; }
SetSize(const int32 size)44 			void				SetSize(const int32 size)
45 									{ fSize = size; }
SetIcon(BBitmap * icon)46 			void				SetIcon(BBitmap* icon)
47 									{ delete fIcon; fIcon = icon; }
SetOnByDefault(bool onByDefault)48 			void				SetOnByDefault(bool onByDefault)
49 									{ fOnByDefault = onByDefault; }
SetAlwaysOn(bool alwaysOn)50 			void				SetAlwaysOn(bool alwaysOn)
51 									{ fAlwaysOn = alwaysOn; }
Path()52 			BPath				Path() const
53 									{ return fPath; }
Name()54 			BString				Name() const
55 									{ return fName; }
Description()56 			BString				Description() const
57 									{ return fDescription; }
Size()58 			const int32			Size() const
59 									{ return fSize; }
60 			void				GetSizeAsString(char* string,
61 									size_t stringSize);
Icon()62 			const BBitmap*		Icon() const
63 									{ return fIcon; }
OnByDefault()64 			bool				OnByDefault() const
65 									{ return fOnByDefault; }
AlwaysOn()66 			bool				AlwaysOn() const
67 									{ return fAlwaysOn; }
68 
69 	static	Package*			PackageFromEntry(BEntry &dir);
70 
71 private:
72 			BPath				fPath;
73 			BString				fName;
74 			BString				fDescription;
75 			int32				fSize;
76 			BBitmap*			fIcon;
77 			bool				fAlwaysOn;
78 			bool				fOnByDefault;
79 };
80 
81 
82 class PackageCheckBox : public BCheckBox {
83 public:
84 								PackageCheckBox(Package* item);
85 	virtual						~PackageCheckBox();
86 
87 	virtual	void				Draw(BRect updateRect);
88 	virtual	void				MouseMoved(BPoint point, uint32 transit,
89 									const BMessage* dragMessage);
90 
GetPackage()91 			Package*			GetPackage()
92 									{ return fPackage; };
93 private:
94 			Package*			fPackage;
95 };
96 
97 
98 class GroupView : public BStringView {
99 public:
100 								GroupView(Group* group);
101 	virtual						~GroupView();
102 
103 private:
104 			Group*				fGroup;
105 };
106 
107 
108 class PackagesView : public BView {
109 public:
110 								PackagesView(const char* name);
111 	virtual						~PackagesView();
112 
113 			void				Clean();
114 			void				AddPackages(BList& list, BMessage* message);
115 			void				GetTotalSizeAsString(char* string,
116 									size_t stringSize);
117 			void				GetPackagesToInstall(BList* list, int32* size);
118 
119 	virtual	void				Draw(BRect updateRect);
120 };
121 
122 #endif	// __PACKAGEVIEWS_H__
123