/******************************************************************************* / / File: ColumnTypes.h / / Description: Experimental classes that implement particular column/field / data types for use in BColumnListView. / / Copyright 2000+, Be Incorporated, All Rights Reserved / *******************************************************************************/ #ifndef _COLUMN_TYPES_H #define _COLUMN_TYPES_H #include "ColumnListView.h" #include #include #include //===================================================================== // Common base-class: a column that draws a standard title at its top. class BTitledColumn : public BColumn { public: BTitledColumn (const char *title, float width, float minWidth, float maxWidth, alignment align = B_ALIGN_LEFT); virtual void DrawTitle (BRect rect, BView* parent); virtual void GetColumnName (BString* into) const; void DrawString (const char*, BView*, BRect); void SetTitle (const char* title); void Title (BString* forTitle) const; // sets the BString arg to be the title float FontHeight () const; virtual float GetPreferredWidth(BField* field, BView* parent) const; private: float fFontHeight; BString fTitle; }; //===================================================================== // Field and column classes for strings. class BStringField : public BField { public: BStringField (const char* string); void SetString (const char* string); const char* String () const; void SetClippedString (const char* string); bool HasClippedString () const; const char* ClippedString (); void SetWidth (float); float Width (); private: float fWidth; BString fString; BString fClippedString; }; //-------------------------------------------------------------------- class BStringColumn : public BTitledColumn { public: BStringColumn (const char *title, float width, float minWidth, float maxWidth, uint32 truncate, alignment align = B_ALIGN_LEFT); virtual void DrawField (BField* field, BRect rect, BView* parent); virtual int CompareFields (BField* field1, BField* field2); virtual float GetPreferredWidth(BField* field, BView* parent) const; virtual bool AcceptsField (const BField* field) const; private: uint32 fTruncate; }; //===================================================================== // Field and column classes for dates. class BDateField : public BField { public: BDateField (time_t* t); void SetWidth (float); float Width (); void SetClippedString (const char*); const char* ClippedString (); time_t Seconds (); time_t UnixTime (); private: struct tm fTime; time_t fUnixTime; time_t fSeconds; BString fClippedString; float fWidth; }; //-------------------------------------------------------------------- class BDateColumn : public BTitledColumn { public: BDateColumn (const char* title, float width, float minWidth, float maxWidth, alignment align = B_ALIGN_LEFT); virtual void DrawField (BField* field, BRect rect, BView* parent); virtual int CompareFields (BField* field1, BField* field2); private: BString fTitle; }; //===================================================================== // Field and column classes for numeric sizes. class BSizeField : public BField { public: BSizeField (off_t size); void SetSize (off_t); off_t Size (); private: off_t fSize; }; //-------------------------------------------------------------------- class BSizeColumn : public BTitledColumn { public: BSizeColumn (const char* title, float width, float minWidth, float maxWidth, alignment align = B_ALIGN_LEFT); virtual void DrawField (BField* field, BRect rect, BView* parent); virtual int CompareFields (BField* field1, BField* field2); }; //===================================================================== // Field and column classes for integers. class BIntegerField : public BField { public: BIntegerField (int32 number); void SetValue (int32); int32 Value (); private: int32 fInteger; }; //-------------------------------------------------------------------- class BIntegerColumn : public BTitledColumn { public: BIntegerColumn (const char* title, float width, float minWidth, float maxWidth, alignment align = B_ALIGN_LEFT); virtual void DrawField (BField* field, BRect rect, BView* parent); virtual int CompareFields (BField* field1, BField* field2); }; //===================================================================== // Field and column classes for bitmaps class BBitmapField : public BField { public: BBitmapField (BBitmap* bitmap); const BBitmap* Bitmap (); void SetBitmap (BBitmap* bitmap); private: BBitmap* fBitmap; }; //-------------------------------------------------------------------- class BBitmapColumn : public BTitledColumn { public: BBitmapColumn (const char* title, float width, float minWidth, float maxWidth, alignment align = B_ALIGN_LEFT); virtual void DrawField (BField*field, BRect rect, BView* parent); virtual int CompareFields (BField* field1, BField* field2); virtual bool AcceptsField (const BField* field) const; }; //===================================================================== // Column to display BIntegerField objects as a graph. class GraphColumn : public BIntegerColumn { public: GraphColumn (const char* name, float width, float minWidth, float maxWidth, alignment align = B_ALIGN_LEFT); virtual void DrawField (BField*field, BRect rect, BView* parent); }; #endif