Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: atv2
Fetching contributors…

Cannot retrieve contributors at this time

160 lines (138 sloc) 4.589 kb
/*
* Copyright (C) 2005-2008 Team XBMC
* http://www.xbmc.org
*
* 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, 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 XBMC; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
* http://www.gnu.org/copyleft/gpl.html
*
*/
#include "GUIRadioButtonControl.h"
#include "utils/GUIInfoManager.h"
#include "GUIFontManager.h"
#include "Key.h"
CGUIRadioButtonControl::CGUIRadioButtonControl(int parentID, int controlID, float posX, float posY, float width, float height,
const CTextureInfo& textureFocus, const CTextureInfo& textureNoFocus,
const CLabelInfo& labelInfo,
const CTextureInfo& radioOn, const CTextureInfo& radioOff)
: CGUIButtonControl(parentID, controlID, posX, posY, width, height, textureFocus, textureNoFocus, labelInfo)
, m_imgRadioOn(posX, posY, 16, 16, radioOn)
, m_imgRadioOff(posX, posY, 16, 16, radioOff)
{
m_radioPosX = 0;
m_radioPosY = 0;
m_toggleSelect = 0;
m_imgRadioOn.SetAspectRatio(CAspectRatio::AR_KEEP);\
m_imgRadioOff.SetAspectRatio(CAspectRatio::AR_KEEP);
ControlType = GUICONTROL_RADIO;
}
CGUIRadioButtonControl::~CGUIRadioButtonControl(void)
{}
void CGUIRadioButtonControl::Render()
{
CGUIButtonControl::Render();
// ask our infoManager whether we are selected or not...
if (m_toggleSelect)
m_bSelected = g_infoManager.GetBool(m_toggleSelect, m_parentID);
if ( IsSelected() && !IsDisabled() )
m_imgRadioOn.Render();
else
m_imgRadioOff.Render();
}
bool CGUIRadioButtonControl::OnAction(const CAction &action)
{
if (action.GetID() == ACTION_SELECT_ITEM)
{
m_bSelected = !m_bSelected;
}
return CGUIButtonControl::OnAction(action);
}
bool CGUIRadioButtonControl::OnMessage(CGUIMessage& message)
{
return CGUIButtonControl::OnMessage(message);
}
void CGUIRadioButtonControl::AllocResources()
{
CGUIButtonControl::AllocResources();
m_imgRadioOn.AllocResources();
m_imgRadioOff.AllocResources();
SetPosition(m_posX, m_posY);
}
void CGUIRadioButtonControl::FreeResources(bool immediately)
{
CGUIButtonControl::FreeResources(immediately);
m_imgRadioOn.FreeResources(immediately);
m_imgRadioOff.FreeResources(immediately);
}
void CGUIRadioButtonControl::DynamicResourceAlloc(bool bOnOff)
{
CGUIControl::DynamicResourceAlloc(bOnOff);
m_imgRadioOn.DynamicResourceAlloc(bOnOff);
m_imgRadioOff.DynamicResourceAlloc(bOnOff);
}
void CGUIRadioButtonControl::SetInvalid()
{
CGUIButtonControl::SetInvalid();
m_imgRadioOn.SetInvalid();
m_imgRadioOff.SetInvalid();
}
void CGUIRadioButtonControl::SetPosition(float posX, float posY)
{
CGUIButtonControl::SetPosition(posX, posY);
float radioPosX = m_radioPosX ? m_posX + m_radioPosX : (m_posX + m_width - 8) - m_imgRadioOn.GetWidth();
float radioPosY = m_radioPosY ? m_posY + m_radioPosY : m_posY + (m_height - m_imgRadioOn.GetHeight()) / 2;
m_imgRadioOn.SetPosition(radioPosX, radioPosY);
m_imgRadioOff.SetPosition(radioPosX, radioPosY);
}
void CGUIRadioButtonControl::SetRadioDimensions(float posX, float posY, float width, float height)
{
m_radioPosX = posX;
m_radioPosY = posY;
if (width)
{
m_imgRadioOn.SetWidth(width);
m_imgRadioOff.SetWidth(width);
}
if (height)
{
m_imgRadioOn.SetHeight(height);
m_imgRadioOff.SetHeight(height);
}
SetPosition(GetXPosition(), GetYPosition());
}
void CGUIRadioButtonControl::SetWidth(float width)
{
CGUIButtonControl::SetWidth(width);
SetPosition(GetXPosition(), GetYPosition());
}
void CGUIRadioButtonControl::SetHeight(float height)
{
CGUIButtonControl::SetHeight(height);
SetPosition(GetXPosition(), GetYPosition());
}
CStdString CGUIRadioButtonControl::GetDescription() const
{
CStdString strLabel = CGUIButtonControl::GetDescription();
if (m_bSelected)
strLabel += " (*)";
else
strLabel += " ( )";
return strLabel;
}
void CGUIRadioButtonControl::UpdateColors()
{
CGUIButtonControl::UpdateColors();
m_imgRadioOn.SetDiffuseColor(m_diffuseColor);
m_imgRadioOff.SetDiffuseColor(m_diffuseColor);
}
Jump to Line
Something went wrong with that request. Please try again.