b137ab3eb3
features: * Some cosmetic adjustments of the API, like using references instead of pointers, argument order, method names, etc. * Added convenience template methods for archiving and unarchiving to BArchiver and BUnarchiver. * BUnarchiver (respectively the private BUnarchiveManager) explicitly deals with object ownership, now. This is necessary since an error while unarchiving could leave an already unarchived object without owning object, which would result in it being leaked. The BUnarchiver::{Get,Find}Object() methods do now have an optional parameter to specify whether object ownership shall be transferred. * Fixed incorrect header guard in headers/private/binary_compatibility/Global.h. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37538 a95241bf-73f2-0310-859d-f6bbb57e9c96
79 lines
1.9 KiB
C++
79 lines
1.9 KiB
C++
/*
|
|
* Copyright 2006-2010, Haiku, Inc. All rights reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _LAYOUT_H
|
|
#define _LAYOUT_H
|
|
|
|
|
|
#include <Alignment.h>
|
|
#include <Archivable.h>
|
|
#include <List.h>
|
|
#include <Size.h>
|
|
|
|
|
|
class BLayoutItem;
|
|
class BView;
|
|
|
|
|
|
class BLayout : public BArchivable {
|
|
public:
|
|
BLayout();
|
|
BLayout(BMessage* archive);
|
|
virtual ~BLayout();
|
|
|
|
BView* View() const;
|
|
|
|
virtual BLayoutItem* AddView(BView* child);
|
|
virtual BLayoutItem* AddView(int32 index, BView* child);
|
|
|
|
virtual bool AddItem(BLayoutItem* item);
|
|
virtual bool AddItem(int32 index, BLayoutItem* item);
|
|
|
|
virtual bool RemoveView(BView* child);
|
|
virtual bool RemoveItem(BLayoutItem* item);
|
|
virtual BLayoutItem* RemoveItem(int32 index);
|
|
|
|
BLayoutItem* ItemAt(int32 index) const;
|
|
int32 CountItems() const;
|
|
int32 IndexOfItem(const BLayoutItem* item) const;
|
|
int32 IndexOfView(BView* child) const;
|
|
|
|
virtual BSize MinSize() = 0;
|
|
virtual BSize MaxSize() = 0;
|
|
virtual BSize PreferredSize() = 0;
|
|
virtual BAlignment Alignment() = 0;
|
|
|
|
virtual bool HasHeightForWidth() = 0;
|
|
virtual void GetHeightForWidth(float width, float* min,
|
|
float* max, float* preferred) = 0;
|
|
|
|
virtual void InvalidateLayout();
|
|
|
|
virtual void LayoutView() = 0;
|
|
|
|
virtual status_t Archive(BMessage* into, bool deep = true) const;
|
|
virtual status_t AllUnarchived(const BMessage* from);
|
|
|
|
virtual status_t ItemArchived(BMessage* into, BLayoutItem* item,
|
|
int32 index) const;
|
|
virtual status_t ItemUnarchived(const BMessage* from,
|
|
BLayoutItem* item, int32 index);
|
|
protected:
|
|
// TODO: Since memory allocations can fail, we should return a bool and
|
|
// undo the addition, if false.
|
|
virtual void ItemAdded(BLayoutItem* item);
|
|
virtual void ItemRemoved(BLayoutItem* item);
|
|
|
|
private:
|
|
friend class BView;
|
|
|
|
void SetView(BView* view);
|
|
|
|
BView* fView;
|
|
BList fItems;
|
|
};
|
|
|
|
|
|
#endif // _LAYOUT_H
|