Patch by Alex Wilson:
* Added archiving/unarchiving support. * Coding style cleanup (some by myself). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37549 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
4b20c303bd
commit
e5ea208d71
@ -1,88 +1,109 @@
|
||||
/*
|
||||
* Copyright 2010, Haiku, Inc.
|
||||
* Copyright 2006, Ingo Weinhold <bonefish@cs.tu-berlin.de>.
|
||||
* All rights reserved. Distributed under the terms of the MIT License.
|
||||
*/
|
||||
|
||||
|
||||
#include "ViewLayoutItem.h"
|
||||
|
||||
#include <new>
|
||||
|
||||
#include <Layout.h>
|
||||
#include <View.h>
|
||||
|
||||
|
||||
// constructor
|
||||
namespace {
|
||||
const char* kViewField = "ViewLayoutItem:view";
|
||||
}
|
||||
|
||||
|
||||
BViewLayoutItem::BViewLayoutItem(BView* view)
|
||||
: fView(view)
|
||||
:
|
||||
fView(view)
|
||||
{
|
||||
}
|
||||
|
||||
// destructor
|
||||
|
||||
BViewLayoutItem::BViewLayoutItem(BMessage* from)
|
||||
:
|
||||
BLayoutItem(BUnarchiver::PrepareArchive(from)),
|
||||
fView(NULL)
|
||||
{
|
||||
BUnarchiver unarchiver(from);
|
||||
unarchiver.Finish(unarchiver.FindObject<BView>(kViewField, 0,
|
||||
BUnarchiver::B_DONT_ASSUME_OWNERSHIP, fView));
|
||||
}
|
||||
|
||||
|
||||
BViewLayoutItem::~BViewLayoutItem()
|
||||
{
|
||||
}
|
||||
|
||||
// MinSize
|
||||
|
||||
BSize
|
||||
BViewLayoutItem::MinSize()
|
||||
{
|
||||
return fView->MinSize();
|
||||
}
|
||||
|
||||
// MaxSize
|
||||
|
||||
BSize
|
||||
BViewLayoutItem::MaxSize()
|
||||
{
|
||||
return fView->MaxSize();
|
||||
}
|
||||
|
||||
// PreferredSize
|
||||
|
||||
BSize
|
||||
BViewLayoutItem::PreferredSize()
|
||||
{
|
||||
return fView->PreferredSize();
|
||||
}
|
||||
|
||||
// Alignment
|
||||
|
||||
BAlignment
|
||||
BViewLayoutItem::Alignment()
|
||||
{
|
||||
return fView->LayoutAlignment();
|
||||
}
|
||||
|
||||
// SetExplicitMinSize
|
||||
|
||||
void
|
||||
BViewLayoutItem::SetExplicitMinSize(BSize size)
|
||||
{
|
||||
fView->SetExplicitMinSize(size);
|
||||
}
|
||||
|
||||
// SetExplicitMaxSize
|
||||
|
||||
void
|
||||
BViewLayoutItem::SetExplicitMaxSize(BSize size)
|
||||
{
|
||||
fView->SetExplicitMaxSize(size);
|
||||
}
|
||||
|
||||
// SetExplicitPreferredSize
|
||||
|
||||
void
|
||||
BViewLayoutItem::SetExplicitPreferredSize(BSize size)
|
||||
{
|
||||
fView->SetExplicitPreferredSize(size);
|
||||
}
|
||||
|
||||
// SetExplicitAlignment
|
||||
|
||||
void
|
||||
BViewLayoutItem::SetExplicitAlignment(BAlignment alignment)
|
||||
{
|
||||
fView->SetExplicitAlignment(alignment);
|
||||
}
|
||||
|
||||
// IsVisible
|
||||
|
||||
bool
|
||||
BViewLayoutItem::IsVisible()
|
||||
{
|
||||
return !fView->IsHidden(fView);
|
||||
}
|
||||
|
||||
// SetVisible
|
||||
|
||||
void
|
||||
BViewLayoutItem::SetVisible(bool visible)
|
||||
{
|
||||
@ -94,14 +115,14 @@ BViewLayoutItem::SetVisible(bool visible)
|
||||
}
|
||||
}
|
||||
|
||||
// Frame
|
||||
|
||||
BRect
|
||||
BViewLayoutItem::Frame()
|
||||
{
|
||||
return fView->Frame();
|
||||
}
|
||||
|
||||
// SetFrame
|
||||
|
||||
void
|
||||
BViewLayoutItem::SetFrame(BRect frame)
|
||||
{
|
||||
@ -109,14 +130,14 @@ BViewLayoutItem::SetFrame(BRect frame)
|
||||
fView->ResizeTo(frame.Width(), frame.Height());
|
||||
}
|
||||
|
||||
// HasHeightForWidth
|
||||
|
||||
bool
|
||||
BViewLayoutItem::HasHeightForWidth()
|
||||
{
|
||||
return fView->HasHeightForWidth();
|
||||
}
|
||||
|
||||
// GetHeightForWidth
|
||||
|
||||
void
|
||||
BViewLayoutItem::GetHeightForWidth(float width, float* min, float* max,
|
||||
float* preferred)
|
||||
@ -124,16 +145,62 @@ BViewLayoutItem::GetHeightForWidth(float width, float* min, float* max,
|
||||
fView->GetHeightForWidth(width, min, max, preferred);
|
||||
}
|
||||
|
||||
// View
|
||||
|
||||
BView*
|
||||
BViewLayoutItem::View()
|
||||
{
|
||||
return fView;
|
||||
}
|
||||
|
||||
// InvalidateLayout
|
||||
|
||||
void
|
||||
BViewLayoutItem::InvalidateLayout()
|
||||
{
|
||||
fView->InvalidateLayout();
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
BViewLayoutItem::Archive(BMessage* into, bool deep) const
|
||||
{
|
||||
BArchiver archiver(into);
|
||||
status_t err = BLayoutItem::Archive(into, deep);
|
||||
|
||||
return archiver.Finish(err);
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
BViewLayoutItem::AllArchived(BMessage* into) const
|
||||
{
|
||||
BArchiver archiver(into);
|
||||
status_t err = BLayoutItem::AllArchived(into);
|
||||
|
||||
if (err == B_OK) {
|
||||
if (archiver.IsArchived(fView))
|
||||
err = archiver.AddArchivable(kViewField, fView);
|
||||
else
|
||||
err = B_NAME_NOT_FOUND;
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
BViewLayoutItem::AllUnarchived(const BMessage* from)
|
||||
{
|
||||
if (!fView)
|
||||
return B_ERROR;
|
||||
|
||||
return BLayoutItem::AllUnarchived(from);
|
||||
}
|
||||
|
||||
|
||||
BArchivable*
|
||||
BViewLayoutItem::Instantiate(BMessage* from)
|
||||
{
|
||||
if (validate_instantiation(from, "BViewLayoutItem"))
|
||||
return new(std::nothrow) BViewLayoutItem(from);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2006, Haiku Inc.
|
||||
* Copyright 2006-2010, Haiku Inc.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef _VIEW_LAYOUT_ITEM_H
|
||||
@ -11,6 +11,7 @@
|
||||
class BViewLayoutItem : public BLayoutItem {
|
||||
public:
|
||||
BViewLayoutItem(BView* view);
|
||||
BViewLayoutItem(BMessage* from);
|
||||
virtual ~BViewLayoutItem();
|
||||
|
||||
virtual BSize MinSize();
|
||||
@ -37,6 +38,11 @@ public:
|
||||
|
||||
virtual void InvalidateLayout();
|
||||
|
||||
virtual status_t Archive(BMessage* into, bool deep = true) const;
|
||||
virtual status_t AllArchived(BMessage* into) const;
|
||||
virtual status_t AllUnarchived(const BMessage* from);
|
||||
static BArchivable* Instantiate(BMessage* from);
|
||||
|
||||
private:
|
||||
BView* fView;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user