root/headers/private/debugger/settings/TeamSettings.h
/*
 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Copyright 2013-2015, Rene Gollent, rene@gollent.com.
 * Distributed under the terms of the MIT License.
 */
#ifndef TEAM_SETTINGS_H
#define TEAM_SETTINGS_H


#include <String.h>

#include <ObjectList.h>


class BMessage;
class BreakpointSetting;
class Team;
class TeamFileManagerSettings;
class TeamSignalSettings;
class TeamUiSettings;
class TeamUiSettingsFactory;


class TeamSettings {
public:
                                                                TeamSettings();
                                                                TeamSettings(const TeamSettings& other);
                                                                        // throws std::bad_alloc
                                                                ~TeamSettings();

                        status_t                        SetTo(Team* team);
                        status_t                        SetTo(const BMessage& archive,
                                                                        const TeamUiSettingsFactory& factory);
                        status_t                        WriteTo(BMessage& archive) const;

                        const BString&          TeamName() const        { return fTeamName; }

                        int32                           CountBreakpoints() const;
                        const BreakpointSetting* BreakpointAt(int32 index) const;

                        int32                           CountUiSettings() const;
                        const TeamUiSettings*   UiSettingAt(int32 index) const;
                        const TeamUiSettings*   UiSettingFor(const char* id) const;
                        status_t                        AddUiSettings(TeamUiSettings* settings);

                        TeamSettings&           operator=(const TeamSettings& other);
                                                                        // throws std::bad_alloc

                        TeamFileManagerSettings*
                                                                FileManagerSettings() const;
                        status_t                        SetFileManagerSettings(
                                                                        TeamFileManagerSettings* settings);

                        TeamSignalSettings* SignalSettings() const;
                        status_t                        SetSignalSettings(
                                                                        TeamSignalSettings* settings);

private:
                        typedef BObjectList<BreakpointSetting> BreakpointList;
                        typedef BObjectList<TeamUiSettings> UiSettingsList;

private:
                        void                            _Unset();

private:
                        BreakpointList          fBreakpoints;
                        UiSettingsList          fUiSettings;
                        TeamFileManagerSettings*
                                                                fFileManagerSettings;
                        TeamSignalSettings*     fSignalSettings;
                        BString                         fTeamName;
};


#endif  // TEAM_SETTINGS_H