* Copyright 2011, Rene Gollent, rene@gollent.com.
* Distributed under the terms of the MIT License.
*/
#include "GuiTeamUiSettings.h"
#include <Message.h>
GuiTeamUiSettings::GuiTeamUiSettings()
{
}
GuiTeamUiSettings::GuiTeamUiSettings(const char* settingsID)
:
fID(settingsID)
{
}
GuiTeamUiSettings::GuiTeamUiSettings(const GuiTeamUiSettings& other)
{
if (_SetTo(other) != B_OK)
throw std::bad_alloc();
}
GuiTeamUiSettings::~GuiTeamUiSettings()
{
_Unset();
}
team_ui_settings_type
GuiTeamUiSettings::Type() const
{
return TEAM_UI_SETTINGS_TYPE_GUI;
}
const char*
GuiTeamUiSettings::ID() const
{
return fID.String();
}
status_t
GuiTeamUiSettings::SetTo(const BMessage& archive)
{
status_t error = archive.FindString("ID", &fID);
if (error != B_OK)
return error;
error = archive.FindMessage("values", &fValues);
return error;
}
status_t
GuiTeamUiSettings::WriteTo(BMessage& archive) const
{
archive.MakeEmpty();
status_t error = archive.AddString("ID", fID);
if (error != B_OK)
return error;
error = archive.AddInt32("type", Type());
if (error != B_OK)
return error;
error = archive.AddMessage("values", &fValues);
return error;
}
TeamUiSettings*
GuiTeamUiSettings::Clone() const
{
GuiTeamUiSettings* settings = new(std::nothrow) GuiTeamUiSettings(fID);
if (settings == NULL)
return NULL;
if (settings->_SetTo(*this) != B_OK) {
delete settings;
return NULL;
}
return settings;
}
bool
GuiTeamUiSettings::AddSettings(const char* settingID, const BMessage& data)
{
fValues.RemoveName(settingID);
return fValues.AddMessage(settingID, &data) == B_OK;
}
status_t
GuiTeamUiSettings::Settings(const char* settingID, BMessage &data) const
{
return fValues.FindMessage(settingID, &data);
}
const BMessage&
GuiTeamUiSettings::Values() const
{
return fValues;
}
GuiTeamUiSettings&
GuiTeamUiSettings::operator=(const GuiTeamUiSettings& other)
{
if (_SetTo(other) != B_OK)
throw std::bad_alloc();
return *this;
}
status_t
GuiTeamUiSettings::_SetTo(const GuiTeamUiSettings& other)
{
_Unset();
fID = other.fID;
fValues = other.fValues;
return B_OK;
}
void
GuiTeamUiSettings::_Unset()
{
fID.Truncate(0);
fValues.MakeEmpty();
}