xref: /haiku/headers/private/interface/ColumnTypes.h (revision 058be77bec97cbcd19cd8328efa63a4d58d80844)
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