* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
* Distributed under the terms of the MIT License.
*/
#ifndef TABLE_COLUMNS_H
#define TABLE_COLUMNS_H
#include <ColumnTypes.h>
#include "table/TableColumn.h"
class DelegateBasedTableColumn : public TableColumn {
public:
DelegateBasedTableColumn(
BColumn* columnDelegate,
int32 modelIndex, float width,
float minWidth, float maxWidth,
alignment align);
virtual ~DelegateBasedTableColumn();
protected:
virtual void DrawTitle(BRect rect, BView* targetView);
virtual void GetColumnName(BString* into) const;
virtual void DrawValue(const BVariant& value, BRect rect,
BView* targetView);
virtual float GetPreferredWidth(const BVariant& value,
BView* parent) const;
virtual BField* PrepareField(const BVariant& value) const = 0;
protected:
BColumn* fColumnDelegate;
};
class StringTableColumn : public DelegateBasedTableColumn {
public:
StringTableColumn(int32 modelIndex,
const char* title, float width,
float minWidth, float maxWidth,
uint32 truncate,
alignment align = B_ALIGN_LEFT);
virtual ~StringTableColumn();
protected:
virtual BField* PrepareField(const BVariant& value) const;
virtual int CompareValues(const BVariant& a,
const BVariant& b);
protected:
BStringColumn fColumn;
mutable BStringField fField;
};
class BoolStringTableColumn : public StringTableColumn {
public:
BoolStringTableColumn(int32 modelIndex,
const char* title, float width,
float minWidth, float maxWidth,
const BString& trueString = "true",
const BString& falseString = "false",
uint32 truncate = B_TRUNCATE_MIDDLE,
alignment align = B_ALIGN_LEFT);
protected:
virtual BField* PrepareField(const BVariant& value) const;
virtual int CompareValues(const BVariant& a,
const BVariant& b);
private:
BString fTrueString;
BString fFalseString;
};
class Int32TableColumn : public StringTableColumn {
public:
Int32TableColumn(int32 modelIndex,
const char* title, float width,
float minWidth, float maxWidth,
uint32 truncate = B_TRUNCATE_MIDDLE,
alignment align = B_ALIGN_RIGHT);
protected:
virtual BField* PrepareField(const BVariant& value) const;
virtual int CompareValues(const BVariant& a,
const BVariant& b);
};
class Int64TableColumn : public StringTableColumn {
public:
Int64TableColumn(int32 modelIndex,
const char* title, float width,
float minWidth, float maxWidth,
uint32 truncate = B_TRUNCATE_MIDDLE,
alignment align = B_ALIGN_RIGHT);
protected:
virtual BField* PrepareField(const BVariant& value) const;
virtual int CompareValues(const BVariant& a,
const BVariant& b);
};
class BigtimeTableColumn : public StringTableColumn {
public:
BigtimeTableColumn(int32 modelIndex,
const char* title, float width,
float minWidth, float maxWidth,
bool invalidFirst,
uint32 truncate = B_TRUNCATE_MIDDLE,
alignment align = B_ALIGN_RIGHT);
protected:
virtual BField* PrepareField(const BVariant& value) const;
virtual int CompareValues(const BVariant& a,
const BVariant& b);
private:
bool fInvalidFirst;
};
class NanotimeTableColumn : public StringTableColumn {
public:
NanotimeTableColumn(int32 modelIndex,
const char* title, float width,
float minWidth, float maxWidth,
bool invalidFirst,
uint32 truncate = B_TRUNCATE_MIDDLE,
alignment align = B_ALIGN_RIGHT);
protected:
virtual BField* PrepareField(const BVariant& value) const;
virtual int CompareValues(const BVariant& a,
const BVariant& b);
private:
bool fInvalidFirst;
};
#endif