⛏️ index : haiku.git

/*
 * Copyright 2015, Rene Gollent, rene@gollent.com.
 * Distributed under the terms of the MIT License.
 */

#include "TableCellBoolEditor.h"

#include "BoolValue.h"


TableCellBoolEditor::TableCellBoolEditor(::Value* initialValue,
	ValueFormatter* formatter)
	:
	TableCellOptionPopUpEditor(initialValue, formatter)
{
}


TableCellBoolEditor::~TableCellBoolEditor()
{
}


status_t
TableCellBoolEditor::ConfigureOptions()
{
	BoolValue* initialValue = dynamic_cast<BoolValue*>(InitialValue());
	if (initialValue == NULL)
		return B_BAD_VALUE;

	status_t error = AddOption("true", true);
	if (error != B_OK)
		return error;

	error = AddOption("false", false);
	if (error != B_OK)
		return error;

	return SelectOptionFor(initialValue->GetValue());
}


status_t
TableCellBoolEditor::GetSelectedValue(::Value*& _value) const
{
	const char* name = NULL;
	int32 selectedValue = 0;
	SelectedOption(&name, &selectedValue);
	BoolValue* value = new(std::nothrow) BoolValue((bool)selectedValue);
	if (value == NULL)
		return B_NO_MEMORY;

	_value = value;
	return B_OK;
}