haiku/headers/os/interface/ListItem.h

106 lines
2.1 KiB
C++

/*
* Copyright 2006-2010, Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#ifndef _LIST_ITEM_H
#define _LIST_ITEM_H
#include <Archivable.h>
#include <Rect.h>
class BFont;
class BList;
class BMessage;
class BOutlineListView;
class BView;
class BListItem : public BArchivable {
public:
BListItem(uint32 outlineLevel = 0,
bool expanded = true);
BListItem(BMessage* archive);
virtual ~BListItem();
virtual status_t Archive(BMessage* archive,
bool deep = true) const;
float Height() const;
float Width() const;
bool IsSelected() const;
void Select();
void Deselect();
virtual void SetEnabled(bool enabled);
bool IsEnabled() const;
void SetHeight(float height);
void SetWidth(float width);
virtual void DrawItem(BView* owner, BRect frame,
bool complete = false) = 0;
virtual void Update(BView* owner, const BFont* font);
bool IsExpanded() const;
void SetExpanded(bool expanded);
uint32 OutlineLevel() const;
void SetOutlineLevel(uint32 level);
virtual status_t Perform(perform_code code, void* arg);
private:
// FBC padding
virtual void _ReservedListItem1();
virtual void _ReservedListItem2();
// Forbidden
BListItem(const BListItem& item);
BListItem& operator=(const BListItem& item);
private:
friend class BOutlineListView;
friend class BListView;
bool HasSubitems() const;
bool IsItemVisible() const;
void SetItemVisible(bool visible);
inline float Top() const;
inline float Bottom() const;
void SetTop(float top);
private:
float fTop;
BList* fTemporaryList;
float fWidth;
float fHeight;
uint32 fLevel;
bool fSelected;
bool fEnabled;
bool fExpanded;
bool fHasSubitems : 1;
bool fVisible : 1;
};
inline float
BListItem::Top(void) const
{
return fTop;
}
inline float
BListItem::Bottom(void) const
{
return fTop + ceilf(fHeight) - 1.0;
}
#include <StringItem.h>
// to maintain source compatibility
#endif // _LIST_ITEM_H