Author: anevilyak Date: 2011-11-01 13:45:01 +0100 (Tue, 01 Nov 2011) New Revision: 43060 Changeset: https://dev.haiku-os.org/changeset/43060 Added: haiku/trunk/src/apps/debugger/settings/GUITeamUISettings.cpp haiku/trunk/src/apps/debugger/settings/GUITeamUISettings.h haiku/trunk/src/apps/debugger/settings/TeamUISettings.cpp haiku/trunk/src/apps/debugger/settings/TeamUISettings.h Modified: haiku/trunk/src/apps/debugger/Jamfile haiku/trunk/src/apps/debugger/settings/TeamSettings.cpp haiku/trunk/src/apps/debugger/settings/TeamSettings.h Log: WIP: Add abstract base class TeamUISettings and corresponding subclass GUITeamUISettings. Once complete, these will be used to store/restore settings for the debugger's various UI components. Modified: haiku/trunk/src/apps/debugger/Jamfile =================================================================== --- haiku/trunk/src/apps/debugger/Jamfile 2011-11-01 12:40:51 UTC (rev 43059) +++ haiku/trunk/src/apps/debugger/Jamfile 2011-11-01 12:45:01 UTC (rev 43060) @@ -140,8 +140,10 @@ # settings BreakpointSetting.cpp + SettingsManager.cpp TeamSettings.cpp - SettingsManager.cpp + TeamUISettings.cpp + GUITeamUISettings.cpp # settings/generic Setting.cpp Added: haiku/trunk/src/apps/debugger/settings/GUITeamUISettings.cpp =================================================================== --- haiku/trunk/src/apps/debugger/settings/GUITeamUISettings.cpp (rev 0) +++ haiku/trunk/src/apps/debugger/settings/GUITeamUISettings.cpp 2011-11-01 12:45:01 UTC (rev 43060) @@ -0,0 +1,67 @@ +/* + * Copyright 2011, Rene Gollent, rene@xxxxxxxxxxxx + * Distributed under the terms of the MIT License. + */ +#include "GUITeamUISettings.h" + +#include <Message.h> + + +GUITeamUISettings::GUITeamUISettings(const char* settingsID) + : + fID(settingsID) +{ +} + + +GUITeamUISettings::GUITeamUISettings(const GUITeamUISettings& other) +{ + fID = other.fID; +} + + +GUITeamUISettings::~GUITeamUISettings() +{ +} + + +const char* +GUITeamUISettings::ID() const +{ + return fID.String(); +} + + +status_t +GUITeamUISettings::SetTo(const BMessage& archive) +{ + status_t error = archive.FindString("ID", &fID); + + return error; +} + + +status_t +GUITeamUISettings::WriteTo(BMessage& archive) const +{ + status_t error = archive.AddString("ID", fID); + + return error; +} + + +TeamUISettings* +GUITeamUISettings::Clone() const +{ + GUITeamUISettings* settings = new GUITeamUISettings(fID.String()); + + return settings; +} + + +GUITeamUISettings& +GUITeamUISettings::operator=(const GUITeamUISettings& other) +{ + fID = other.fID; + return *this; +} Added: haiku/trunk/src/apps/debugger/settings/GUITeamUISettings.h =================================================================== --- haiku/trunk/src/apps/debugger/settings/GUITeamUISettings.h (rev 0) +++ haiku/trunk/src/apps/debugger/settings/GUITeamUISettings.h 2011-11-01 12:45:01 UTC (rev 43060) @@ -0,0 +1,40 @@ +/* + * Copyright 2011, Rene Gollent, rene@xxxxxxxxxxxx + * Distributed under the terms of the MIT License. + */ +#ifndef GUI_TEAM_UI_SETTINGS_H +#define GUI_TEAM_UI_SETTINGS_H + + +#include <String.h> + +#include <ObjectList.h> + +#include "TeamUISettings.h" + +class BMessage; + + +class GUITeamUISettings : public TeamUISettings { +public: + GUITeamUISettings(const char* settingsID); + GUITeamUISettings(const GUITeamUISettings& + other); + // throws std::bad_alloc + ~GUITeamUISettings(); + + virtual const char* ID() const; + virtual status_t SetTo(const BMessage& archive); + virtual status_t WriteTo(BMessage& archive) const; + virtual TeamUISettings* Clone() const; + + GUITeamUISettings& operator=(const GUITeamUISettings& other); + // throws std::bad_alloc + +private: + + BString fID; +}; + + +#endif // GUI_TEAM_UI_SETTINGS_H Modified: haiku/trunk/src/apps/debugger/settings/TeamSettings.cpp =================================================================== --- haiku/trunk/src/apps/debugger/settings/TeamSettings.cpp 2011-11-01 12:40:51 UTC (rev 43059) +++ haiku/trunk/src/apps/debugger/settings/TeamSettings.cpp 2011-11-01 12:45:01 UTC (rev 43060) @@ -15,6 +15,7 @@ #include "ArchivingUtils.h" #include "BreakpointSetting.h" #include "Team.h" +#include "TeamUISettings.h" #include "UserBreakpoint.h" @@ -98,6 +99,12 @@ return error; } } + + // add UI settings + for (int32 i = 0; archive.FindMessage("uisettings", i, &childArchive) + == B_OK; i++) { + + } return B_OK; } @@ -140,6 +147,20 @@ } +int32 +TeamSettings::CountUISettings() const +{ + return fUISettings.CountItems(); +} + + +const TeamUISettings* +TeamSettings::UISettingAt(int32 index) const +{ + return fUISettings.ItemAt(index); +} + + TeamSettings& TeamSettings::operator=(const TeamSettings& other) { @@ -160,6 +181,16 @@ } } + for (int32 i = 0; TeamUISettings* uiSetting + = other.fUISettings.ItemAt(i); i++) { + TeamUISettings* clonedSetting + = uiSetting->Clone(); + if (!fUISettings.AddItem(clonedSetting)) { + delete clonedSetting; + throw std::bad_alloc(); + } + } + return *this; } @@ -171,7 +202,12 @@ i++) { delete breakpoint; } + + for (int32 i = 0; TeamUISettings* uiSetting = fUISettings.ItemAt(i); i++) + delete uiSetting; + fBreakpoints.MakeEmpty(); + fUISettings.MakeEmpty(); fTeamName.Truncate(0); } Modified: haiku/trunk/src/apps/debugger/settings/TeamSettings.h =================================================================== --- haiku/trunk/src/apps/debugger/settings/TeamSettings.h 2011-11-01 12:40:51 UTC (rev 43059) +++ haiku/trunk/src/apps/debugger/settings/TeamSettings.h 2011-11-01 12:45:01 UTC (rev 43060) @@ -14,6 +14,7 @@ class BMessage; class Team; class BreakpointSetting; +class TeamUISettings; class TeamSettings { @@ -31,18 +32,23 @@ int32 CountBreakpoints() const; const BreakpointSetting* BreakpointAt(int32 index) const; + + int32 CountUISettings() const; + const TeamUISettings* UISettingAt(int32 index) const; TeamSettings& operator=(const TeamSettings& other); // throws std::bad_alloc private: typedef BObjectList<BreakpointSetting> BreakpointList; + typedef BObjectList<TeamUISettings> UISettingsList; private: void _Unset(); private: BreakpointList fBreakpoints; + UISettingsList fUISettings; BString fTeamName; }; Added: haiku/trunk/src/apps/debugger/settings/TeamUISettings.cpp =================================================================== --- haiku/trunk/src/apps/debugger/settings/TeamUISettings.cpp (rev 0) +++ haiku/trunk/src/apps/debugger/settings/TeamUISettings.cpp 2011-11-01 12:45:01 UTC (rev 43060) @@ -0,0 +1,15 @@ +/* + * Copyright 2011, Rene Gollent, rene@xxxxxxxxxxxx + * Distributed under the terms of the MIT License. + */ +#include "TeamUISettings.h" + + +TeamUISettings::TeamUISettings() +{ +} + + +TeamUISettings::~TeamUISettings() +{ +} Added: haiku/trunk/src/apps/debugger/settings/TeamUISettings.h =================================================================== --- haiku/trunk/src/apps/debugger/settings/TeamUISettings.h (rev 0) +++ haiku/trunk/src/apps/debugger/settings/TeamUISettings.h 2011-11-01 12:45:01 UTC (rev 43060) @@ -0,0 +1,30 @@ +/* + * Copyright 2011, Rene Gollent, rene@xxxxxxxxxxxx + * Distributed under the terms of the MIT License. + */ +#ifndef TEAM_UI_SETTINGS_H +#define TEAM_UI_SETTINGS_H + + +#include <String.h> + + +class BMessage; + + +class TeamUISettings { +public: + TeamUISettings(); + ~TeamUISettings(); + + virtual const char* ID() const = 0; + virtual status_t SetTo(const BMessage& archive) = 0; + virtual status_t WriteTo(BMessage& archive) const = 0; + + virtual TeamUISettings* Clone() const = 0; + // throws std::bad_alloc + +}; + + +#endif // TEAM_UI_SETTINGS_H