diff options
author | AlTheKiller <AlTheKiller@svn> | 2009-09-23 01:49:50 +0000 |
---|---|---|
committer | AlTheKiller <AlTheKiller@svn> | 2009-09-23 01:49:50 +0000 |
commit | 45285e8a9300cd754a760560640b75b09f98035e (patch) | |
tree | ad9f093885ad5c98e9dd4156674e7691c22ed0a2 /guilib/GUIRadioButtonControl.cpp |
step 3/4: Move linuxport to trunk. How'd I get roped into this?
git-svn-id: https://xbmc.svn.sourceforge.net/svnroot/xbmc/trunk@23097 568bbfeb-2a22-0410-94d2-cc84cf5bfa90
Diffstat (limited to 'guilib/GUIRadioButtonControl.cpp')
-rw-r--r-- | guilib/GUIRadioButtonControl.cpp | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/guilib/GUIRadioButtonControl.cpp b/guilib/GUIRadioButtonControl.cpp new file mode 100644 index 0000000000..43111eb571 --- /dev/null +++ b/guilib/GUIRadioButtonControl.cpp @@ -0,0 +1,152 @@ +/* + * 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.id == 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() +{ + CGUIButtonControl::FreeResources(); + m_imgRadioOn.FreeResources(); + m_imgRadioOff.FreeResources(); +} + +void CGUIRadioButtonControl::DynamicResourceAlloc(bool bOnOff) +{ + CGUIControl::DynamicResourceAlloc(bOnOff); + m_imgRadioOn.DynamicResourceAlloc(bOnOff); + m_imgRadioOff.DynamicResourceAlloc(bOnOff); +} + +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); +} + |