/*
 *   Copyright (C) 2010,2014 by Jonathan Naylor G4KLX
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include "DStarDefines.h"
#include "CallsignSet.h"

#if defined(__WINDOWS__)
const unsigned int LONG_CALLSIGN_WIDTH   = 80U;
const unsigned int SHORT_CALLSIGN_WIDTH  = 50U;
#else
const unsigned int LONG_CALLSIGN_WIDTH   = 100U;
const unsigned int SHORT_CALLSIGN_WIDTH  = 60U;
#endif

const unsigned int BORDER_SIZE   = 5U;

CCallsignSet::CCallsignSet(wxWindow* parent, int id, const wxString& title, const wxString& callsign1, const wxString& callsign2) :
wxPanel(parent, id),
m_title(title),
m_callsign1(NULL),
m_callsign2(NULL)
{
	wxFlexGridSizer* sizer = new wxFlexGridSizer(4);

	wxStaticText* callsignLabel = new wxStaticText(this, -1, _("Callsign"));
	sizer->Add(callsignLabel, 0, wxALL | wxALIGN_RIGHT, BORDER_SIZE);

	m_callsign1 = new CCallsignTextCtrl(this, -1, callsign1, wxDefaultPosition, wxSize(LONG_CALLSIGN_WIDTH, -1));
	m_callsign1->SetMaxLength(LONG_CALLSIGN_LENGTH);
	sizer->Add(m_callsign1, 0, wxALL | wxALIGN_LEFT, BORDER_SIZE);

	wxStaticText* slashLabel = new wxStaticText(this, -1, wxT("/"));
	sizer->Add(slashLabel, 0, wxALL | wxALIGN_RIGHT, BORDER_SIZE);

	m_callsign2 = new CCallsignTextCtrl(this, -1, callsign2, wxDefaultPosition, wxSize(SHORT_CALLSIGN_WIDTH, -1));
	m_callsign2->SetMaxLength(SHORT_CALLSIGN_LENGTH);
	sizer->Add(m_callsign2, 0, wxALL | wxALIGN_LEFT, BORDER_SIZE);

	SetAutoLayout(true);

	sizer->Fit(this);
	sizer->SetSizeHints(this);

	SetSizer(sizer);
}


CCallsignSet::~CCallsignSet()
{
}

bool CCallsignSet::Validate()
{
	bool res = !getCallsign1().IsEmpty();
	if (!res) {
		wxMessageDialog dialog(this, _("The Callsign may not be empty"), m_title + _(" Error"), wxICON_ERROR);
		dialog.ShowModal();
	}

	return res;
}

wxString CCallsignSet::getCallsign1() const
{
	return m_callsign1->GetValue().MakeUpper();
}

wxString CCallsignSet::getCallsign2() const
{
	return m_callsign2->GetValue().MakeUpper();
}
