1181638Skmacy/* 2181638Skmacy * Copyright 2006-2010, Haiku, Inc. All rights reserved. 3181638Skmacy * Distributed under the terms of the MIT License. 4181638Skmacy */ 5181638Skmacy#ifndef _LIST_ITEM_H 6181638Skmacy#define _LIST_ITEM_H 7181638Skmacy 8181638Skmacy 9181638Skmacy#include <Archivable.h> 10181638Skmacy#include <Rect.h> 11181638Skmacy 12181638Skmacy 13181638Skmacyclass BFont; 14181638Skmacyclass BList; 15181638Skmacyclass BMessage; 16181638Skmacyclass BOutlineListView; 17181638Skmacyclass BView; 18181638Skmacy 19181638Skmacy 20181638Skmacyclass BListItem : public BArchivable { 21181638Skmacypublic: 22181638Skmacy BListItem(uint32 outlineLevel = 0, 23181638Skmacy bool expanded = true); 24181638Skmacy BListItem(BMessage* archive); 25181638Skmacy virtual ~BListItem(); 26181638Skmacy 27181638Skmacy virtual status_t Archive(BMessage* archive, 28181638Skmacy bool deep = true) const; 29181638Skmacy 30181638Skmacy float Height() const; 31181638Skmacy float Width() const; 32181638Skmacy bool IsSelected() const; 33181638Skmacy void Select(); 34181638Skmacy void Deselect(); 35181638Skmacy 36181638Skmacy virtual void SetEnabled(bool enabled); 37181638Skmacy bool IsEnabled() const; 38181638Skmacy 39181638Skmacy void SetHeight(float height); 40181638Skmacy void SetWidth(float width); 41181638Skmacy virtual void DrawItem(BView* owner, BRect frame, 42181638Skmacy bool complete = false) = 0; 43181638Skmacy virtual void Update(BView* owner, const BFont* font); 44181638Skmacy 45181638Skmacy bool IsExpanded() const; 46181638Skmacy void SetExpanded(bool expanded); 47181638Skmacy uint32 OutlineLevel() const; 48181638Skmacy void SetOutlineLevel(uint32 level); 49181638Skmacy 50181638Skmacy virtual status_t Perform(perform_code code, void* arg); 51181638Skmacy 52181638Skmacyprivate: 53181638Skmacy // FBC padding 54181638Skmacy virtual void _ReservedListItem1(); 55181638Skmacy virtual void _ReservedListItem2(); 56181638Skmacy 57181638Skmacy // Forbidden 58181638Skmacy BListItem(const BListItem& item); 59181638Skmacy BListItem& operator=(const BListItem& item); 60181638Skmacy 61181638Skmacyprivate: 62181638Skmacy friend class BOutlineListView; 63181638Skmacy friend class BListView; 64181638Skmacy 65181638Skmacy bool HasSubitems() const; 66181638Skmacy 67181638Skmacy bool IsItemVisible() const; 68181638Skmacy void SetItemVisible(bool visible); 69181638Skmacy inline float Top() const; 70181638Skmacy inline float Bottom() const; 71181638Skmacy void SetTop(float top); 72181638Skmacy 73181638Skmacyprivate: 74181638Skmacy float fTop; 75181638Skmacy BList* fTemporaryList; 76181638Skmacy float fWidth; 77181638Skmacy float fHeight; 78181638Skmacy uint32 fLevel; 79181638Skmacy bool fSelected; 80181638Skmacy bool fEnabled; 81181638Skmacy bool fExpanded; 82181638Skmacy bool fHasSubitems : 1; 83181638Skmacy bool fVisible : 1; 84181638Skmacy}; 85181638Skmacy 86181638Skmacy 87181638Skmacyinline float 88181638SkmacyBListItem::Top(void) const 89181638Skmacy{ 90181638Skmacy return fTop; 91181638Skmacy} 92181638Skmacy 93181638Skmacy 94181638Skmacyinline float 95181638SkmacyBListItem::Bottom(void) const 96181638Skmacy{ 97181638Skmacy return fTop + ceilf(fHeight) - 1.0; 98181638Skmacy} 99181638Skmacy 100181638Skmacy 101181638Skmacy#include <StringItem.h> 102181638Skmacy // to maintain source compatibility 103181638Skmacy 104181638Skmacy 105181638Skmacy#endif // _LIST_ITEM_H 106181638Skmacy