1f9d5f90eSIthamar R. Adema /******************************************************************************* 2f9d5f90eSIthamar R. Adema / 3f9d5f90eSIthamar R. Adema / File: ColumnTypes.h 4f9d5f90eSIthamar R. Adema / 5f9d5f90eSIthamar R. Adema / Description: Experimental classes that implement particular column/field 6f9d5f90eSIthamar R. Adema / data types for use in BColumnListView. 7f9d5f90eSIthamar R. Adema / 8f9d5f90eSIthamar R. Adema / Copyright 2000+, Be Incorporated, All Rights Reserved 9f9d5f90eSIthamar R. Adema / 10f9d5f90eSIthamar R. Adema *******************************************************************************/ 11f9d5f90eSIthamar R. Adema 12f9d5f90eSIthamar R. Adema 13f9d5f90eSIthamar R. Adema #ifndef _COLUMN_TYPES_H 14f9d5f90eSIthamar R. Adema #define _COLUMN_TYPES_H 15f9d5f90eSIthamar R. Adema 16539dc1bcSJohn Scipione 17f9d5f90eSIthamar R. Adema #include "ColumnListView.h" 18539dc1bcSJohn Scipione 19f9d5f90eSIthamar R. Adema #include <Bitmap.h> 20*058be77bSEmir SARI #include <DateFormat.h> 21*058be77bSEmir SARI #include <DateTimeFormat.h> 22*058be77bSEmir SARI #include <Font.h> 23*058be77bSEmir SARI #include <NumberFormat.h> 24*058be77bSEmir SARI #include <String.h> 25f9d5f90eSIthamar R. Adema 26f9d5f90eSIthamar R. Adema 27f9d5f90eSIthamar R. Adema //===================================================================== 28f9d5f90eSIthamar R. Adema // Common base-class: a column that draws a standard title at its top. 29f9d5f90eSIthamar R. Adema 30f9d5f90eSIthamar R. Adema class BTitledColumn : public BColumn 31f9d5f90eSIthamar R. Adema { 32f9d5f90eSIthamar R. Adema public: 33539dc1bcSJohn Scipione BTitledColumn(const char* title, float width, float minWidth, 34539dc1bcSJohn Scipione float maxWidth, alignment align = B_ALIGN_LEFT); 35539dc1bcSJohn Scipione virtual void DrawTitle(BRect rect, BView* parent); 36f9d5f90eSIthamar R. Adema virtual void GetColumnName(BString* into) const; 37f9d5f90eSIthamar R. Adema 38539dc1bcSJohn Scipione void DrawString(const char*, BView*, BRect); 39f9d5f90eSIthamar R. Adema void SetTitle(const char* title); 40539dc1bcSJohn Scipione void Title(BString* forTitle) const; 41539dc1bcSJohn Scipione // sets the BString arg to be the title 42f9d5f90eSIthamar R. Adema float FontHeight() const; 43f9d5f90eSIthamar R. Adema 4413cb3584SJérôme Duval virtual float GetPreferredWidth(BField* field, BView* parent) const; 4513cb3584SJérôme Duval 46*058be77bSEmir SARI protected: 47*058be77bSEmir SARI BNumberFormat fNumberFormat; 48*058be77bSEmir SARI 49f9d5f90eSIthamar R. Adema private: 50f9d5f90eSIthamar R. Adema float fFontHeight; 51f9d5f90eSIthamar R. Adema BString fTitle; 52f9d5f90eSIthamar R. Adema }; 53f9d5f90eSIthamar R. Adema 54f9d5f90eSIthamar R. Adema 55f9d5f90eSIthamar R. Adema //===================================================================== 56f9d5f90eSIthamar R. Adema // Field and column classes for strings. 57f9d5f90eSIthamar R. Adema 58f9d5f90eSIthamar R. Adema class BStringField : public BField 59f9d5f90eSIthamar R. Adema { 60f9d5f90eSIthamar R. Adema public: 61f9d5f90eSIthamar R. Adema BStringField(const char* string); 62f9d5f90eSIthamar R. Adema 63f9d5f90eSIthamar R. Adema void SetString(const char* string); 64f9d5f90eSIthamar R. Adema const char* String() const; 65f9d5f90eSIthamar R. Adema void SetClippedString(const char* string); 6669d85497SRene Gollent bool HasClippedString() const; 67f9d5f90eSIthamar R. Adema const char* ClippedString(); 68f9d5f90eSIthamar R. Adema void SetWidth(float); 69f9d5f90eSIthamar R. Adema float Width(); 70f9d5f90eSIthamar R. Adema 71f9d5f90eSIthamar R. Adema private: 72f9d5f90eSIthamar R. Adema float fWidth; 73f9d5f90eSIthamar R. Adema BString fString; 74f9d5f90eSIthamar R. Adema BString fClippedString; 75f9d5f90eSIthamar R. Adema }; 76f9d5f90eSIthamar R. Adema 77f9d5f90eSIthamar R. Adema 78f9d5f90eSIthamar R. Adema //-------------------------------------------------------------------- 79f9d5f90eSIthamar R. Adema 80f9d5f90eSIthamar R. Adema class BStringColumn : public BTitledColumn 81f9d5f90eSIthamar R. Adema { 82f9d5f90eSIthamar R. Adema public: 83539dc1bcSJohn Scipione BStringColumn(const char* title, float width, 84539dc1bcSJohn Scipione float minWidth, float maxWidth, uint32 truncate, 85f9d5f90eSIthamar R. Adema alignment align = B_ALIGN_LEFT); 86539dc1bcSJohn Scipione virtual void DrawField(BField* field, BRect rect, BView* parent); 87539dc1bcSJohn Scipione virtual int CompareFields(BField* field1, BField* field2); 882c558054SJérôme Duval virtual float GetPreferredWidth(BField* field, BView* parent) const; 89f9d5f90eSIthamar R. Adema virtual bool AcceptsField(const BField* field) const; 90f9d5f90eSIthamar R. Adema 91f9d5f90eSIthamar R. Adema private: 92f9d5f90eSIthamar R. Adema uint32 fTruncate; 93f9d5f90eSIthamar R. Adema }; 94f9d5f90eSIthamar R. Adema 95f9d5f90eSIthamar R. Adema 96f9d5f90eSIthamar R. Adema //===================================================================== 97f9d5f90eSIthamar R. Adema // Field and column classes for dates. 98f9d5f90eSIthamar R. Adema 99f9d5f90eSIthamar R. Adema class BDateField : public BField 100f9d5f90eSIthamar R. Adema { 101f9d5f90eSIthamar R. Adema public: 102f9d5f90eSIthamar R. Adema BDateField(time_t* t); 103f9d5f90eSIthamar R. Adema void SetWidth(float); 104f9d5f90eSIthamar R. Adema float Width(); 105f9d5f90eSIthamar R. Adema void SetClippedString(const char*); 106f9d5f90eSIthamar R. Adema const char* ClippedString(); 107f9d5f90eSIthamar R. Adema time_t Seconds(); 108f9d5f90eSIthamar R. Adema time_t UnixTime(); 109f9d5f90eSIthamar R. Adema 110f9d5f90eSIthamar R. Adema private: 111f9d5f90eSIthamar R. Adema struct tm fTime; 112f9d5f90eSIthamar R. Adema time_t fUnixTime; 113f9d5f90eSIthamar R. Adema time_t fSeconds; 114f9d5f90eSIthamar R. Adema BString fClippedString; 115f9d5f90eSIthamar R. Adema float fWidth; 116f9d5f90eSIthamar R. Adema }; 117f9d5f90eSIthamar R. Adema 118f9d5f90eSIthamar R. Adema 119f9d5f90eSIthamar R. Adema //-------------------------------------------------------------------- 120f9d5f90eSIthamar R. Adema 121f9d5f90eSIthamar R. Adema class BDateColumn : public BTitledColumn 122f9d5f90eSIthamar R. Adema { 123f9d5f90eSIthamar R. Adema public: 124539dc1bcSJohn Scipione BDateColumn(const char* title, float width, 125539dc1bcSJohn Scipione float minWidth, float maxWidth, 126f9d5f90eSIthamar R. Adema alignment align = B_ALIGN_LEFT); 127539dc1bcSJohn Scipione virtual void DrawField(BField* field, BRect rect, BView* parent); 128539dc1bcSJohn Scipione virtual int CompareFields(BField* field1, BField* field2); 129539dc1bcSJohn Scipione 130f9d5f90eSIthamar R. Adema private: 131*058be77bSEmir SARI BDateTimeFormat fDateTimeFormat; 132*058be77bSEmir SARI BDateFormat fDateFormat; 133f9d5f90eSIthamar R. Adema BString fTitle; 134f9d5f90eSIthamar R. Adema }; 135f9d5f90eSIthamar R. Adema 136f9d5f90eSIthamar R. Adema 137f9d5f90eSIthamar R. Adema //===================================================================== 138f9d5f90eSIthamar R. Adema // Field and column classes for numeric sizes. 139f9d5f90eSIthamar R. Adema 140f9d5f90eSIthamar R. Adema class BSizeField : public BField 141f9d5f90eSIthamar R. Adema { 142f9d5f90eSIthamar R. Adema public: 143f9d5f90eSIthamar R. Adema BSizeField(off_t size); 144f9d5f90eSIthamar R. Adema void SetSize(off_t); 145f9d5f90eSIthamar R. Adema off_t Size(); 146f9d5f90eSIthamar R. Adema 147f9d5f90eSIthamar R. Adema private: 148f9d5f90eSIthamar R. Adema off_t fSize; 149f9d5f90eSIthamar R. Adema }; 150f9d5f90eSIthamar R. Adema 151f9d5f90eSIthamar R. Adema 152f9d5f90eSIthamar R. Adema //-------------------------------------------------------------------- 153f9d5f90eSIthamar R. Adema 154f9d5f90eSIthamar R. Adema class BSizeColumn : public BTitledColumn 155f9d5f90eSIthamar R. Adema { 156f9d5f90eSIthamar R. Adema public: 157539dc1bcSJohn Scipione BSizeColumn(const char* title, float width, 158539dc1bcSJohn Scipione float minWidth, float maxWidth, 159f9d5f90eSIthamar R. Adema alignment align = B_ALIGN_LEFT); 160539dc1bcSJohn Scipione virtual void DrawField(BField* field, BRect rect, BView* parent); 161539dc1bcSJohn Scipione virtual int CompareFields(BField* field1, BField* field2); 162f9d5f90eSIthamar R. Adema }; 163f9d5f90eSIthamar R. Adema 164f9d5f90eSIthamar R. Adema 165f9d5f90eSIthamar R. Adema //===================================================================== 166f9d5f90eSIthamar R. Adema // Field and column classes for integers. 167f9d5f90eSIthamar R. Adema 168f9d5f90eSIthamar R. Adema class BIntegerField : public BField 169f9d5f90eSIthamar R. Adema { 170f9d5f90eSIthamar R. Adema public: 171f9d5f90eSIthamar R. Adema BIntegerField(int32 number); 172f9d5f90eSIthamar R. Adema void SetValue(int32); 173f9d5f90eSIthamar R. Adema int32 Value(); 174f9d5f90eSIthamar R. Adema 175f9d5f90eSIthamar R. Adema private: 176f9d5f90eSIthamar R. Adema int32 fInteger; 177f9d5f90eSIthamar R. Adema }; 178f9d5f90eSIthamar R. Adema 179f9d5f90eSIthamar R. Adema 180f9d5f90eSIthamar R. Adema //-------------------------------------------------------------------- 181f9d5f90eSIthamar R. Adema 182f9d5f90eSIthamar R. Adema class BIntegerColumn : public BTitledColumn 183f9d5f90eSIthamar R. Adema { 184f9d5f90eSIthamar R. Adema public: 185539dc1bcSJohn Scipione BIntegerColumn(const char* title, float width, 186539dc1bcSJohn Scipione float minWidth, float maxWidth, 187f9d5f90eSIthamar R. Adema alignment align = B_ALIGN_LEFT); 188539dc1bcSJohn Scipione virtual void DrawField(BField* field, BRect rect, BView* parent); 189539dc1bcSJohn Scipione virtual int CompareFields(BField* field1, BField* field2); 190f9d5f90eSIthamar R. Adema }; 191f9d5f90eSIthamar R. Adema 192f9d5f90eSIthamar R. Adema 193f9d5f90eSIthamar R. Adema //===================================================================== 194f9d5f90eSIthamar R. Adema // Field and column classes for bitmaps 195f9d5f90eSIthamar R. Adema 196f9d5f90eSIthamar R. Adema class BBitmapField : public BField 197f9d5f90eSIthamar R. Adema { 198f9d5f90eSIthamar R. Adema public: 199f9d5f90eSIthamar R. Adema BBitmapField(BBitmap* bitmap); 200f9d5f90eSIthamar R. Adema const BBitmap* Bitmap(); 201f9d5f90eSIthamar R. Adema void SetBitmap(BBitmap* bitmap); 202f9d5f90eSIthamar R. Adema 203f9d5f90eSIthamar R. Adema private: 204f9d5f90eSIthamar R. Adema BBitmap* fBitmap; 205f9d5f90eSIthamar R. Adema }; 206f9d5f90eSIthamar R. Adema 207f9d5f90eSIthamar R. Adema 208f9d5f90eSIthamar R. Adema //-------------------------------------------------------------------- 209f9d5f90eSIthamar R. Adema 210f9d5f90eSIthamar R. Adema class BBitmapColumn : public BTitledColumn 211f9d5f90eSIthamar R. Adema { 212f9d5f90eSIthamar R. Adema public: 213539dc1bcSJohn Scipione BBitmapColumn(const char* title, float width, 214539dc1bcSJohn Scipione float minWidth, float maxWidth, 215f9d5f90eSIthamar R. Adema alignment align = B_ALIGN_LEFT); 216539dc1bcSJohn Scipione virtual void DrawField(BField* field, BRect rect, BView* parent); 217f9d5f90eSIthamar R. Adema virtual int CompareFields(BField* field1, BField* field2); 218f9d5f90eSIthamar R. Adema virtual bool AcceptsField(const BField* field) const; 219f9d5f90eSIthamar R. Adema }; 220f9d5f90eSIthamar R. Adema 221f9d5f90eSIthamar R. Adema 222f9d5f90eSIthamar R. Adema //===================================================================== 223f9d5f90eSIthamar R. Adema // Column to display BIntegerField objects as a graph. 224f9d5f90eSIthamar R. Adema 225f9d5f90eSIthamar R. Adema class GraphColumn : public BIntegerColumn 226f9d5f90eSIthamar R. Adema { 227f9d5f90eSIthamar R. Adema public: 228539dc1bcSJohn Scipione GraphColumn(const char* name, float width, 229539dc1bcSJohn Scipione float minWidth, float maxWidth, 230f9d5f90eSIthamar R. Adema alignment align = B_ALIGN_LEFT); 231539dc1bcSJohn Scipione virtual void DrawField(BField* field, BRect rect, BView* parent); 232f9d5f90eSIthamar R. Adema }; 233f9d5f90eSIthamar R. Adema 234f9d5f90eSIthamar R. Adema 235539dc1bcSJohn Scipione #endif // _COLUMN_TYPES_H 236