1/* 2 * Copyright 2015, Rene Gollent, rene@gollent.com. 3 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. 4 * Distributed under the terms of the MIT License. 5 */ 6 7 8#include "BoolValueHandler.h" 9 10#include <new> 11 12#include "BoolValue.h" 13#include "BoolValueFormatter.h" 14#include "TableCellBoolEditor.h" 15#include "TableCellFormattedValueRenderer.h" 16 17 18BoolValueHandler::BoolValueHandler() 19{ 20} 21 22 23BoolValueHandler::~BoolValueHandler() 24{ 25} 26 27 28status_t 29BoolValueHandler::Init() 30{ 31 return B_OK; 32} 33 34 35float 36BoolValueHandler::SupportsValue(Value* value) 37{ 38 return dynamic_cast<BoolValue*>(value) != NULL ? 0.5f : 0; 39} 40 41 42status_t 43BoolValueHandler::GetValueFormatter(Value* value, 44 ValueFormatter*& _formatter) 45{ 46 if (dynamic_cast<BoolValue*>(value) == NULL) 47 return B_BAD_VALUE; 48 49 BoolValueFormatter* formatter = new(std::nothrow) BoolValueFormatter; 50 if (formatter == NULL) 51 return B_NO_MEMORY; 52 53 _formatter = formatter; 54 return B_OK; 55} 56 57 58status_t 59BoolValueHandler::GetTableCellValueRenderer(Value* value, 60 TableCellValueRenderer*& _renderer) 61{ 62 if (dynamic_cast<BoolValue*>(value) == NULL) 63 return B_BAD_VALUE; 64 65 ValueFormatter* formatter = NULL; 66 if (GetValueFormatter(value, formatter) != B_OK) 67 return B_NO_MEMORY; 68 BReference<ValueFormatter> formatterReference(formatter, true); 69 70 // create the renderer 71 TableCellValueRenderer* renderer 72 = new(std::nothrow) TableCellFormattedValueRenderer(formatter); 73 if (renderer == NULL) 74 return B_NO_MEMORY; 75 76 _renderer = renderer; 77 return B_OK; 78} 79 80 81status_t 82BoolValueHandler::GetTableCellValueEditor(Value* _value, Settings* settings, 83 TableCellValueEditor*& _editor) 84{ 85 BoolValue* value = dynamic_cast<BoolValue*>(_value); 86 if (value == NULL) 87 return B_BAD_VALUE; 88 89 ValueFormatter* formatter; 90 status_t error = GetValueFormatter(value, formatter); 91 if (error != B_OK) 92 return error; 93 BReference<ValueFormatter> formatterReference(formatter, true); 94 95 TableCellBoolEditor* editor = new(std::nothrow) 96 TableCellBoolEditor(value, formatter); 97 if (editor == NULL) 98 return B_NO_MEMORY; 99 100 BReference<TableCellBoolEditor> editorReference(editor, true); 101 error = editor->Init(); 102 if (error != B_OK) 103 return error; 104 105 editorReference.Detach(); 106 _editor = editor; 107 return B_OK; 108} 109