xref: /haiku/src/apps/drivesetup/PartitionList.h (revision cfc3fa87da824bdf593eb8b817a83b6376e77935)
1 /*
2  * Copyright 2006-2008 Haiku Inc. All rights reserved.
3  * Distributed under the terms of the MIT license.
4  *
5  * Authors:
6  *		Ithamar R. Adema <ithamar@unet.nl>
7  *		James Urquhart
8  *		Stephan Aßmus <superstippi@gmx.de>
9  */
10 #ifndef PARTITIONLIST_H
11 #define PARTITIONLIST_H
12 
13 
14 #include <ColumnListView.h>
15 #include <ColumnTypes.h>
16 #include <Partition.h>
17 
18 
19 class BPartition;
20 
21 
22 // A field type displaying both a bitmap and a string so that the
23 // tree display looks nicer (both text and bitmap are indented)
24 class BBitmapStringField : public BStringField {
25 	typedef BStringField Inherited;
26 public:
27 								BBitmapStringField(BBitmap* bitmap,
28 									const char* string);
29 	virtual						~BBitmapStringField();
30 
31 			void				SetBitmap(BBitmap* bitmap);
32 			const BBitmap*		Bitmap() const
33 									{ return fBitmap; }
34 
35 private:
36 			BBitmap*			fBitmap;
37 };
38 
39 
40 // BColumn for PartitionListView which knows how to render
41 // a BBitmapStringField
42 class PartitionColumn : public BTitledColumn {
43 	typedef BTitledColumn Inherited;
44 public:
45 								PartitionColumn(const char* title,
46 									float width, float minWidth,
47 									float maxWidth, uint32 truncateMode,
48 									alignment align = B_ALIGN_LEFT);
49 
50 	virtual	void				DrawField(BField* field, BRect rect,
51 									BView* parent);
52 
53 	virtual	bool				AcceptsField(const BField* field) const;
54 
55 private:
56 			uint32				fTruncateMode;
57 	static	float				fTextMargin;
58 };
59 
60 
61 // BRow for the PartitionListView
62 class PartitionListRow : public BRow {
63 	typedef BRow Inherited;
64 public:
65 								PartitionListRow(BPartition* partition);
66 								PartitionListRow(partition_id parentID,
67 									partition_id id, off_t offset, off_t size);
68 
69 			partition_id		ID() const
70 									{ return fPartitionID; }
71 			partition_id		ParentID() const
72 									{ return fParentID; }
73 			off_t				Offset() const
74 									{ return fOffset; }
75 			off_t				Size() const
76 									{ return fSize; }
77 private:
78 			partition_id		fPartitionID;
79 			partition_id		fParentID;
80 			off_t				fOffset;
81 			off_t				fSize;
82 };
83 
84 
85 class PartitionListView : public BColumnListView {
86 	typedef BColumnListView Inherited;
87 public:
88 								PartitionListView(const BRect& frame,
89 									uint32 resizeMode);
90 
91 			PartitionListRow*	FindRow(partition_id id,
92 									PartitionListRow* parent = NULL);
93 			PartitionListRow*	AddPartition(BPartition* partition);
94 			PartitionListRow*	AddSpace(partition_id parent,
95 									partition_id id, off_t offset, off_t size);
96 
97 private:
98 			int32				_InsertIndexForOffset(PartitionListRow* parent,
99 									off_t offset) const;
100 };
101 
102 
103 #endif // PARTITIONLIST_H
104