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