1/* 2 * Copyright 2011-2016, Rene Gollent, rene@gollent.com. 3 * Distributed under the terms of the MIT License. 4 */ 5 6 7#include "DebuggerUiSettingsFactory.h" 8 9#include <Message.h> 10 11#include "GuiTeamUiSettings.h" 12 13 14DebuggerUiSettingsFactory* DebuggerUiSettingsFactory::sDefaultInstance = NULL; 15 16 17DebuggerUiSettingsFactory::DebuggerUiSettingsFactory() 18{ 19} 20 21 22DebuggerUiSettingsFactory::~DebuggerUiSettingsFactory() 23{ 24} 25 26 27DebuggerUiSettingsFactory* 28DebuggerUiSettingsFactory::Default() 29{ 30 return sDefaultInstance; 31} 32 33 34status_t 35DebuggerUiSettingsFactory::CreateDefault() 36{ 37 sDefaultInstance = new(std::nothrow) DebuggerUiSettingsFactory(); 38 if (sDefaultInstance == NULL) 39 return B_NO_MEMORY; 40 41 return B_OK; 42} 43 44 45void 46DebuggerUiSettingsFactory::DeleteDefault() 47{ 48 delete sDefaultInstance; 49 sDefaultInstance = NULL; 50} 51 52 53status_t 54DebuggerUiSettingsFactory::Create(const BMessage& archive, 55 TeamUiSettings*& settings) const 56{ 57 int32 type; 58 status_t error = archive.FindInt32("type", &type); 59 if (error != B_OK) 60 return error; 61 62 switch (type) { 63 case TEAM_UI_SETTINGS_TYPE_GUI: 64 settings = new(std::nothrow) GuiTeamUiSettings(); 65 if (settings == NULL) 66 return B_NO_MEMORY; 67 68 error = settings->SetTo(archive); 69 if (error != B_OK) { 70 delete settings; 71 settings = NULL; 72 return error; 73 } 74 break; 75 76 case TEAM_UI_SETTINGS_TYPE_CLI: 77 // TODO: implement once we have a CLI interface 78 // (and corresponding settings) 79 return B_UNSUPPORTED; 80 81 default: 82 return B_BAD_DATA; 83 } 84 85 return B_OK; 86} 87