aboutsummaryrefslogtreecommitdiff
path: root/guilib/GUISliderControl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'guilib/GUISliderControl.cpp')
-rw-r--r--guilib/GUISliderControl.cpp376
1 files changed, 0 insertions, 376 deletions
diff --git a/guilib/GUISliderControl.cpp b/guilib/GUISliderControl.cpp
deleted file mode 100644
index baf6f48518..0000000000
--- a/guilib/GUISliderControl.cpp
+++ /dev/null
@@ -1,376 +0,0 @@
-/*
- * 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 "GUISliderControl.h"
-#include "utils/GUIInfoManager.h"
-#include "Key.h"
-#include "MathUtils.h"
-
-CGUISliderControl::CGUISliderControl(int parentID, int controlID, float posX, float posY, float width, float height, const CTextureInfo& backGroundTexture, const CTextureInfo& nibTexture, const CTextureInfo& nibTextureFocus, int iType)
- : CGUIControl(parentID, controlID, posX, posY, width, height)
- , m_guiBackground(posX, posY, width, height, backGroundTexture)
- , m_guiMid(posX, posY, width, height, nibTexture)
- , m_guiMidFocus(posX, posY, width, height, nibTextureFocus)
-{
- m_iType = iType;
- m_iPercent = 0;
- m_iStart = 0;
- m_iEnd = 100;
- m_iInterval = 1;
- m_fStart = 0.0f;
- m_fEnd = 1.0f;
- m_fInterval = 0.1f;
- m_iValue = 0;
- m_fValue = 0.0;
- ControlType = GUICONTROL_SLIDER;
- m_iInfoCode = 0;
-}
-
-CGUISliderControl::~CGUISliderControl(void)
-{
-}
-
-void CGUISliderControl::Render()
-{
- m_guiBackground.SetPosition( m_posX, m_posY );
- if (m_iInfoCode)
- SetIntValue(g_infoManager.GetInt(m_iInfoCode));
-
- float fScaleX = m_width == 0 ? 1.0f : m_width / m_guiBackground.GetTextureWidth();
- float fScaleY = m_height == 0 ? 1.0f : m_height / m_guiBackground.GetTextureHeight();
-
- m_guiBackground.SetHeight(m_height);
- m_guiBackground.SetWidth(m_width);
- m_guiBackground.Render();
-
- float fWidth = (m_guiBackground.GetTextureWidth() - m_guiMid.GetTextureWidth())*fScaleX;
-
- float fPos = m_guiBackground.GetXPosition() + GetProportion() * fWidth;
-
- if ((int)fWidth > 1)
- {
- if (m_bHasFocus && !IsDisabled())
- {
- m_guiMidFocus.SetPosition(fPos, m_guiBackground.GetYPosition() );
- m_guiMidFocus.SetWidth(m_guiMidFocus.GetTextureWidth() * fScaleX);
- m_guiMidFocus.SetHeight(m_guiMidFocus.GetTextureHeight() * fScaleY);
- m_guiMidFocus.Render();
- }
- else
- {
- m_guiMid.SetPosition(fPos, m_guiBackground.GetYPosition() );
- m_guiMid.SetWidth(m_guiMid.GetTextureWidth()*fScaleX);
- m_guiMid.SetHeight(m_guiMid.GetTextureHeight()*fScaleY);
- m_guiMid.Render();
- }
- }
- CGUIControl::Render();
-}
-
-bool CGUISliderControl::OnMessage(CGUIMessage& message)
-{
- if (message.GetControlId() == GetID() )
- {
- switch (message.GetMessage())
- {
- case GUI_MSG_ITEM_SELECT:
- SetPercentage( message.GetParam1() );
- return true;
- break;
-
- case GUI_MSG_LABEL_RESET:
- {
- SetPercentage(0);
- return true;
- }
- break;
- }
- }
-
- return CGUIControl::OnMessage(message);
-}
-
-bool CGUISliderControl::OnAction(const CAction &action)
-{
- switch ( action.GetID() )
- {
- case ACTION_MOVE_LEFT:
- //case ACTION_OSD_SHOW_VALUE_MIN:
- Move( -1);
- return true;
- break;
-
- case ACTION_MOVE_RIGHT:
- //case ACTION_OSD_SHOW_VALUE_PLUS:
- Move(1);
- return true;
- break;
- default:
- return CGUIControl::OnAction(action);
- }
-}
-
-void CGUISliderControl::Move(int iNumSteps)
-{
- switch (m_iType)
- {
- case SPIN_CONTROL_TYPE_FLOAT:
- m_fValue += m_fInterval * iNumSteps;
- if (m_fValue < m_fStart) m_fValue = m_fStart;
- if (m_fValue > m_fEnd) m_fValue = m_fEnd;
- break;
-
- case SPIN_CONTROL_TYPE_INT:
- m_iValue += m_iInterval * iNumSteps;
- if (m_iValue < m_iStart) m_iValue = m_iStart;
- if (m_iValue > m_iEnd) m_iValue = m_iEnd;
- break;
-
- default:
- m_iPercent += m_iInterval * iNumSteps;
- if (m_iPercent < 0) m_iPercent = 0;
- if (m_iPercent > 100) m_iPercent = 100;
- break;
- }
- SEND_CLICK_MESSAGE(GetID(), GetParentID(), MathUtils::round_int(100*GetProportion()));
-}
-
-void CGUISliderControl::SetPercentage(int iPercent)
-{
- if (iPercent > 100) iPercent = 100;
- if (iPercent < 0) iPercent = 0;
- m_iPercent = iPercent;
-}
-
-int CGUISliderControl::GetPercentage() const
-{
- return m_iPercent;
-}
-
-void CGUISliderControl::SetIntValue(int iValue)
-{
- if (m_iType == SPIN_CONTROL_TYPE_FLOAT)
- m_fValue = (float)iValue;
- else if (m_iType == SPIN_CONTROL_TYPE_INT)
- m_iValue = iValue;
- else
- SetPercentage(iValue);
-}
-
-int CGUISliderControl::GetIntValue() const
-{
- if (m_iType == SPIN_CONTROL_TYPE_FLOAT)
- return (int)m_fValue;
- else if (m_iType == SPIN_CONTROL_TYPE_INT)
- return m_iValue;
- else
- return m_iPercent;
-}
-
-void CGUISliderControl::SetFloatValue(float fValue)
-{
- if (m_iType == SPIN_CONTROL_TYPE_FLOAT)
- m_fValue = fValue;
- else if (m_iType == SPIN_CONTROL_TYPE_INT)
- m_iValue = (int)fValue;
- else
- SetPercentage((int)fValue);
-}
-
-float CGUISliderControl::GetFloatValue() const
-{
- if (m_iType == SPIN_CONTROL_TYPE_FLOAT)
- return m_fValue;
- else if (m_iType == SPIN_CONTROL_TYPE_INT)
- return (float)m_iValue;
- else
- return (float)m_iPercent;
-}
-
-void CGUISliderControl::SetIntInterval(int iInterval)
-{
- if (m_iType == SPIN_CONTROL_TYPE_FLOAT)
- m_fInterval = (float)iInterval;
- else
- m_iInterval = iInterval;
-}
-
-void CGUISliderControl::SetFloatInterval(float fInterval)
-{
- if (m_iType == SPIN_CONTROL_TYPE_FLOAT)
- m_fInterval = fInterval;
- else
- m_iInterval = (int)fInterval;
-}
-
-void CGUISliderControl::SetRange(int iStart, int iEnd)
-{
- if (m_iType == SPIN_CONTROL_TYPE_FLOAT)
- SetFloatRange((float)iStart,(float)iEnd);
- else
- {
- m_iStart = iStart;
- m_iEnd = iEnd;
- }
-}
-
-void CGUISliderControl::SetFloatRange(float fStart, float fEnd)
-{
- if (m_iType == SPIN_CONTROL_TYPE_INT)
- SetRange((int)fStart, (int)fEnd);
- else
- {
- m_fStart = fStart;
- m_fEnd = fEnd;
- }
-}
-
-void CGUISliderControl::FreeResources(bool immediately)
-{
- CGUIControl::FreeResources(immediately);
- m_guiBackground.FreeResources(immediately);
- m_guiMid.FreeResources(immediately);
- m_guiMidFocus.FreeResources(immediately);
-}
-
-void CGUISliderControl::DynamicResourceAlloc(bool bOnOff)
-{
- CGUIControl::DynamicResourceAlloc(bOnOff);
- m_guiBackground.DynamicResourceAlloc(bOnOff);
- m_guiMid.DynamicResourceAlloc(bOnOff);
- m_guiMidFocus.DynamicResourceAlloc(bOnOff);
-}
-
-void CGUISliderControl::AllocResources()
-{
- CGUIControl::AllocResources();
- m_guiBackground.AllocResources();
- m_guiMid.AllocResources();
- m_guiMidFocus.AllocResources();
-}
-
-void CGUISliderControl::SetInvalid()
-{
- CGUIControl::SetInvalid();
- m_guiBackground.SetInvalid();
- m_guiMid.SetInvalid();
- m_guiMidFocus.SetInvalid();
-}
-
-bool CGUISliderControl::HitTest(const CPoint &point) const
-{
- if (m_guiBackground.HitTest(point)) return true;
- if (m_guiMid.HitTest(point)) return true;
- return false;
-}
-
-void CGUISliderControl::SetFromPosition(const CPoint &point)
-{
- float fPercent = (point.x - m_guiBackground.GetXPosition()) / m_guiBackground.GetWidth();
- if (fPercent < 0) fPercent = 0;
- if (fPercent > 1) fPercent = 1;
- switch (m_iType)
- {
- case SPIN_CONTROL_TYPE_FLOAT:
- m_fValue = m_fStart + (m_fEnd - m_fStart) * fPercent;
- break;
-
- case SPIN_CONTROL_TYPE_INT:
- m_iValue = (int)(m_iStart + (float)(m_iEnd - m_iStart) * fPercent + 0.49f);
- break;
-
- default:
- m_iPercent = (int)(fPercent * 100 + 0.49f);
- break;
- }
- SEND_CLICK_MESSAGE(GetID(), GetParentID(), MathUtils::round_int(fPercent));
-}
-
-EVENT_RESULT CGUISliderControl::OnMouseEvent(const CPoint &point, const CMouseEvent &event)
-{
- if (event.m_id == ACTION_MOUSE_DRAG)
- {
- if (event.m_state == 1)
- { // grab exclusive access
- CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, GetID(), GetParentID());
- SendWindowMessage(msg);
- }
- else if (event.m_state == 3)
- { // release exclusive access
- CGUIMessage msg(GUI_MSG_EXCLUSIVE_MOUSE, 0, GetParentID());
- SendWindowMessage(msg);
- }
- SetFromPosition(point);
- return EVENT_RESULT_HANDLED;
- }
- else if (event.m_id == ACTION_MOUSE_LEFT_CLICK && m_guiBackground.HitTest(point))
- {
- SetFromPosition(point);
- return EVENT_RESULT_HANDLED;
- }
- else if (event.m_id == ACTION_MOUSE_WHEEL_UP)
- {
- Move(10);
- return EVENT_RESULT_HANDLED;
- }
- else if (event.m_id == ACTION_MOUSE_WHEEL_DOWN)
- {
- Move(-10);
- return EVENT_RESULT_HANDLED;
- }
- return EVENT_RESULT_UNHANDLED;
-}
-
-void CGUISliderControl::SetInfo(int iInfo)
-{
- m_iInfoCode = iInfo;
-}
-
-CStdString CGUISliderControl::GetDescription() const
-{
- if (!m_textValue.IsEmpty())
- return m_textValue;
- CStdString description;
- if (m_iType == SPIN_CONTROL_TYPE_FLOAT)
- description.Format("%2.2f", m_fValue);
- else if (m_iType == SPIN_CONTROL_TYPE_INT)
- description.Format("%i", m_iValue);
- else
- description.Format("%i%%", m_iPercent);
- return description;
-}
-
-void CGUISliderControl::UpdateColors()
-{
- CGUIControl::UpdateColors();
- m_guiBackground.SetDiffuseColor(m_diffuseColor);
- m_guiMid.SetDiffuseColor(m_diffuseColor);
- m_guiMidFocus.SetDiffuseColor(m_diffuseColor);
-}
-
-float CGUISliderControl::GetProportion() const
-{
- if (m_iType == SPIN_CONTROL_TYPE_FLOAT)
- return (m_fValue - m_fStart) / (m_fEnd - m_fStart);
- else if (m_iType == SPIN_CONTROL_TYPE_INT)
- return (float)(m_iValue - m_iStart) / (float)(m_iEnd - m_iStart);
- return 0.01f * m_iPercent;
-}