repository_infos: Enable automatic updates on the main Haiku repostiory.
[haiku.git] / src / apps / drivesetup / PartitionList.h
blob849df61d0c40ec0806aec795837f36dece14bd81
1 /*
2 * Copyright 2006-2008 Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT license.
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
14 #include <ColumnListView.h>
15 #include <ColumnTypes.h>
16 #include <Partition.h>
19 class BPartition;
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();
31 void SetBitmap(BBitmap* bitmap);
32 const BBitmap* Bitmap() const
33 { return fBitmap; }
35 private:
36 BBitmap* fBitmap;
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);
50 virtual void DrawField(BField* field, BRect rect,
51 BView* parent);
52 virtual float GetPreferredWidth(BField* field, BView* parent) const;
54 virtual bool AcceptsField(const BField* field) const;
56 static void InitTextMargin(BView* parent);
58 private:
59 uint32 fTruncateMode;
60 static float sTextMargin;
64 // BRow for the PartitionListView
65 class PartitionListRow : public BRow {
66 typedef BRow Inherited;
67 public:
68 PartitionListRow(BPartition* partition);
69 PartitionListRow(partition_id parentID,
70 partition_id id, off_t offset, off_t size);
72 partition_id ID() const
73 { return fPartitionID; }
74 partition_id ParentID() const
75 { return fParentID; }
76 off_t Offset() const
77 { return fOffset; }
78 off_t Size() const
79 { return fSize; }
81 const char* DevicePath();
83 private:
84 partition_id fPartitionID;
85 partition_id fParentID;
86 off_t fOffset;
87 off_t fSize;
91 class PartitionListView : public BColumnListView {
92 typedef BColumnListView Inherited;
93 public:
94 PartitionListView(const BRect& frame,
95 uint32 resizeMode);
97 virtual void AttachedToWindow();
99 virtual bool InitiateDrag(BPoint rowPoint, bool wasSelected);
100 virtual void ExpandOrCollapse(BRow* row, bool expand);
102 PartitionListRow* FindRow(partition_id id,
103 PartitionListRow* parent = NULL);
104 PartitionListRow* AddPartition(BPartition* partition);
105 PartitionListRow* AddSpace(partition_id parent,
106 partition_id id, off_t offset, off_t size);
108 virtual BSize PreferredSize();
110 private:
111 int32 _InsertIndexForOffset(PartitionListRow* parent,
112 off_t offset) const;
116 #endif // PARTITIONLIST_H