* Copyright 2006, Haiku.
* Distributed under the terms of the MIT License.
*
* Authors:
* Stephan Aßmus <superstippi@gmx.de>
*/
#include "IconObject.h"
#include <Message.h>
#include "CommonPropertyIDs.h"
#include "Property.h"
#include "PropertyObject.h"
IconObject::IconObject(const char* name)
: Observable(),
BReferenceable(),
Selectable(),
fName(name)
{
}
IconObject::IconObject(const IconObject& other)
: Observable(),
BReferenceable(),
Selectable(),
fName(other.fName)
{
}
IconObject::IconObject(BMessage* archive)
: Observable(),
BReferenceable(),
Selectable(),
fName()
{
Unarchive(archive);
}
IconObject::~IconObject()
{
}
void
IconObject::SelectedChanged()
{
}
status_t
IconObject::Unarchive(BMessage* archive)
{
if (!archive)
return B_BAD_VALUE;
const char* name;
status_t ret = archive->FindString("name", &name);
if (ret == B_OK)
fName = name;
return ret;
}
status_t
IconObject::Archive(BMessage* into, bool deep) const
{
if (!into)
return B_BAD_VALUE;
return into->AddString("name", fName.String());
}
PropertyObject*
IconObject::MakePropertyObject() const
{
PropertyObject* object = new PropertyObject();
object->AddProperty(new StringProperty(PROPERTY_NAME, fName.String()));
return object;
}
bool
IconObject::SetToPropertyObject(const PropertyObject* object)
{
AutoNotificationSuspender _(this);
BString name;
if (object->GetValue(PROPERTY_NAME, name))
SetName(name.String());
return HasPendingNotifications();
}
void
IconObject::SetName(const char* name)
{
if (fName == name)
return;
fName = name;
Notify();
}