1/*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef TABLE_COLUMNS_H
6#define TABLE_COLUMNS_H
7
8
9#include <ColumnTypes.h>
10
11#include "table/TableColumn.h"
12
13
14class DelegateBasedTableColumn : public TableColumn {
15public:
16								DelegateBasedTableColumn(
17									BColumn* columnDelegate,
18									int32 modelIndex, float width,
19									float minWidth, float maxWidth,
20									alignment align);
21	virtual						~DelegateBasedTableColumn();
22
23protected:
24	virtual	void				DrawTitle(BRect rect, BView* targetView);
25	virtual	void				GetColumnName(BString* into) const;
26
27	virtual	void				DrawValue(const BVariant& value, BRect rect,
28									BView* targetView);
29	virtual	float				GetPreferredWidth(const BVariant& value,
30									BView* parent) const;
31
32	virtual	BField*				PrepareField(const BVariant& value) const = 0;
33
34protected:
35			BColumn*			fColumnDelegate;
36};
37
38
39class StringTableColumn : public DelegateBasedTableColumn {
40public:
41								StringTableColumn(int32 modelIndex,
42									const char* title, float width,
43									float minWidth, float maxWidth,
44									uint32 truncate,
45									alignment align = B_ALIGN_LEFT);
46	virtual						~StringTableColumn();
47
48protected:
49	virtual	BField*				PrepareField(const BVariant& value) const;
50
51	virtual	int					CompareValues(const BVariant& a,
52									const BVariant& b);
53
54protected:
55			BStringColumn		fColumn;
56	mutable	BStringField		fField;
57};
58
59
60class BoolStringTableColumn : public StringTableColumn {
61public:
62								BoolStringTableColumn(int32 modelIndex,
63									const char* title, float width,
64									float minWidth, float maxWidth,
65									const BString& trueString = "true",
66									const BString& falseString = "false",
67									uint32 truncate = B_TRUNCATE_MIDDLE,
68									alignment align = B_ALIGN_LEFT);
69
70protected:
71	virtual	BField*				PrepareField(const BVariant& value) const;
72
73	virtual	int					CompareValues(const BVariant& a,
74									const BVariant& b);
75
76private:
77			BString				fTrueString;
78			BString				fFalseString;
79};
80
81
82class Int32TableColumn : public StringTableColumn {
83public:
84								Int32TableColumn(int32 modelIndex,
85									const char* title, float width,
86									float minWidth, float maxWidth,
87									uint32 truncate = B_TRUNCATE_MIDDLE,
88									alignment align = B_ALIGN_RIGHT);
89
90protected:
91	virtual	BField*				PrepareField(const BVariant& value) const;
92
93	virtual	int					CompareValues(const BVariant& a,
94									const BVariant& b);
95};
96
97
98class Int64TableColumn : public StringTableColumn {
99public:
100								Int64TableColumn(int32 modelIndex,
101									const char* title, float width,
102									float minWidth, float maxWidth,
103									uint32 truncate = B_TRUNCATE_MIDDLE,
104									alignment align = B_ALIGN_RIGHT);
105
106protected:
107	virtual	BField*				PrepareField(const BVariant& value) const;
108
109	virtual	int					CompareValues(const BVariant& a,
110									const BVariant& b);
111};
112
113
114class BigtimeTableColumn : public StringTableColumn {
115public:
116								BigtimeTableColumn(int32 modelIndex,
117									const char* title, float width,
118									float minWidth, float maxWidth,
119									bool invalidFirst,
120									uint32 truncate = B_TRUNCATE_MIDDLE,
121									alignment align = B_ALIGN_RIGHT);
122
123protected:
124	virtual	BField*				PrepareField(const BVariant& value) const;
125
126	virtual	int					CompareValues(const BVariant& a,
127									const BVariant& b);
128
129private:
130			bool				fInvalidFirst;
131};
132
133
134class NanotimeTableColumn : public StringTableColumn {
135public:
136								NanotimeTableColumn(int32 modelIndex,
137									const char* title, float width,
138									float minWidth, float maxWidth,
139									bool invalidFirst,
140									uint32 truncate = B_TRUNCATE_MIDDLE,
141									alignment align = B_ALIGN_RIGHT);
142
143protected:
144	virtual	BField*				PrepareField(const BVariant& value) const;
145
146	virtual	int					CompareValues(const BVariant& a,
147									const BVariant& b);
148
149private:
150			bool				fInvalidFirst;
151};
152
153
154#endif	// TABLE_COLUMNS_H
155