haiku/headers/os/interface/ListItem.h
Stephan Aßmus fef3930499 patch by Rene Gollent:
* BListItems now store the top offset of the frame within the parent BListView.
* This allows binary searching the clicked item.
* ItemFrame() is now a cheap call.
* Fixed several bugs in the sorting code of BOutlineListView which lead to
  crashes of client applications.
* Implemented previously unimplemented functions in BOutlineListView.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24092 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-24 14:15:28 +00:00

94 lines
2.0 KiB
C++

/*
* Copyright 2006-2007, 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);
virtual status_t Perform(perform_code code, void* arg);
bool IsExpanded() const;
void SetExpanded(bool expanded);
uint32 OutlineLevel() const;
private:
friend class BOutlineListView;
friend class BListView;
bool HasSubitems() const;
virtual void _ReservedListItem1();
virtual void _ReservedListItem2();
BListItem(const BListItem& item);
BListItem& operator=(const BListItem& item);
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