⛏️ index : haiku.git

/*
 * Copyright 2013-2016, Rene Gollent, rene@gollent.com.
 * Distributed under the terms of the MIT License.
 */
#include "TeamSettingsWindow.h"

#include <Button.h>
#include <LayoutBuilder.h>
#include <TabView.h>

#include "AppMessageCodes.h"
#include "ExceptionStopConfigView.h"
#include "ImageStopConfigView.h"
#include "SignalsConfigView.h"


TeamSettingsWindow::TeamSettingsWindow(::Team* team,
	UserInterfaceListener* listener, BHandler* target)
	:
	BWindow(BRect(), "Team settings", B_TITLED_WINDOW,
		B_AUTO_UPDATE_SIZE_LIMITS | B_CLOSE_ON_ESCAPE),
	fTeam(team),
	fListener(listener),
	fCloseButton(NULL),
	fTarget(target)
{
}


TeamSettingsWindow::~TeamSettingsWindow()
{
	BMessenger(fTarget).SendMessage(MSG_TEAM_SETTINGS_WINDOW_CLOSED);
}


TeamSettingsWindow*
TeamSettingsWindow::Create(::Team* team,
	UserInterfaceListener* listener, BHandler* target)
{
	TeamSettingsWindow* self = new TeamSettingsWindow(
		team, listener, target);

	try {
		self->_Init();
	} catch (...) {
		delete self;
		throw;
	}

	return self;
}


void
TeamSettingsWindow::Show()
{
	CenterOnScreen();
	BWindow::Show();
}


void
TeamSettingsWindow::_Init()
{
	BTabView* tabView = new BTabView("config tab view");
	BLayoutBuilder::Group<>(this, B_VERTICAL)
		.SetInsets(B_USE_DEFAULT_SPACING)
		.Add(tabView)
		.AddGroup(B_HORIZONTAL)
			.AddGlue()
			.Add(fCloseButton = new BButton("Close", new BMessage(
					B_QUIT_REQUESTED)))
		.End();

	SignalsConfigView* signalsView = SignalsConfigView::Create(fTeam,
		fListener);
	tabView->AddTab(signalsView);
	ImageStopConfigView* imageView = ImageStopConfigView::Create(fTeam,
		fListener);
	tabView->AddTab(imageView);
	ExceptionStopConfigView* exceptionView = ExceptionStopConfigView::Create(
		fTeam, fListener);
	tabView->AddTab(exceptionView);

	fCloseButton->SetTarget(this);
}