diff options
Diffstat (limited to 'Minecraft.Client/Common/XUI/XUI_Ctrl_SliderWrapper.cpp')
| -rw-r--r-- | Minecraft.Client/Common/XUI/XUI_Ctrl_SliderWrapper.cpp | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/Minecraft.Client/Common/XUI/XUI_Ctrl_SliderWrapper.cpp b/Minecraft.Client/Common/XUI/XUI_Ctrl_SliderWrapper.cpp new file mode 100644 index 00000000..a4e9f6be --- /dev/null +++ b/Minecraft.Client/Common/XUI/XUI_Ctrl_SliderWrapper.cpp @@ -0,0 +1,174 @@ +#include "stdafx.h" +#include "XUI_Ctrl_SliderWrapper.h" + +#define NO_SOUND_TIMER 0 + +HRESULT CXuiCtrlSliderWrapper::OnInit( XUIMessageInit* pInitData, BOOL& bHandled ) +{ + VOID *pObj; + HXUIOBJ hObjChild; + + XuiElementGetChildById(m_hObj,L"FocusSink",&hObjChild); + XuiObjectFromHandle( hObjChild, &pObj ); + m_pFocusSink = (CXuiControl *)pObj; + + XuiElementGetChildById(m_hObj,L"XuiSlider",&hObjChild); + XuiObjectFromHandle( hObjChild, &pObj ); + m_pSlider = (CXuiSlider *)pObj; + + m_sliderActive = false; + m_bDisplayVal=true; + m_bPlaySound=false; // make this false to avoid a sound being played in the first setting of the slider value in a scene + XuiSetTimer( m_hObj,NO_SOUND_TIMER,50); + bHandled = TRUE; + return S_OK; +} + +HRESULT CXuiCtrlSliderWrapper::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled) +{ + ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode); + +// switch(pInputData->dwKeyCode) +// { + +// case VK_PAD_A: +// // 4J-PB - IGNORE ! +// if(m_sliderActive) +// { +// m_pFocusSink->SetFocus(pInputData->UserIndex); +// m_sliderActive = false; +// } +// else +// { +// m_pSlider->SetFocus(pInputData->UserIndex); +// m_sliderActive = true; +// } +// rfHandled = TRUE; +// +// break; +// default: +// m_pSlider->SetFocus(pInputData->UserIndex); +// m_sliderActive = false; +// break; +// +// } +// + return S_OK; +} + +HRESULT CXuiCtrlSliderWrapper::OnNotifyValueChanged (HXUIOBJ hObjSource, XUINotifyValueChanged* pValueChangedData, BOOL& rfHandled) +{ + XUIMessage Message; + XUINotify Notify; + XUINotifyValueChanged MsgValueChanged; + HRESULT hr; + HXUIOBJ hObj; + + if(m_bPlaySound) + { + m_bPlaySound=false; + CXuiSceneBase::PlayUISFX(eSFX_Scroll); + XuiSetTimer( m_hObj,NO_SOUND_TIMER,150); + } + + //app.DebugPrintf("Slider val changed - %d\n",pValueChangedData->nValue); + + XuiNotifyValueChanged(&Message,&Notify,&MsgValueChanged,hObjSource,pValueChangedData->nValue); + + hr = GetParent(&hObj); + + if (HRESULT_SUCCEEDED(hr)) + { + hr = XuiBubbleMessage(hObj, &Message); + rfHandled = TRUE; + } + return S_OK; +} + + +HRESULT CXuiCtrlSliderWrapper::OnTimer(XUIMessageTimer *pData,BOOL& rfHandled) +{ + if(pData->nId==NO_SOUND_TIMER) + { + XuiKillTimer(m_hObj,NO_SOUND_TIMER); + m_bPlaySound=true; + } + + return S_OK; +} + +HRESULT CXuiCtrlSliderWrapper::SetValue( int nValue ) +{ + CXuiCtrlSliderWrapper *pThis; + HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis); + if (FAILED(hr)) + return hr; + + pThis->m_pSlider->SetValue(nValue); + return S_OK; +} + +HRESULT CXuiCtrlSliderWrapper::SetValueDisplay( BOOL bShow ) +{ + CXuiCtrlSliderWrapper *pThis; + HXUIOBJ hVisual,hText; + HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis); + if (FAILED(hr)) + return hr; + + hr=XuiControlGetVisual(pThis->m_pSlider->m_hObj,&hVisual); + hr=XuiElementGetChildById(hVisual,L"Text_Value",&hText); + + if(hText!=NULL) + { + XuiElementSetShow(hText,bShow); + } + + return S_OK; +} + +LPCWSTR CXuiCtrlSliderWrapper::GetText( ) +{ + CXuiCtrlSliderWrapper *pThis; + HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis); + if (FAILED(hr)) + return NULL; + return pThis->m_pSlider->GetText(); + //return S_OK; +} + +HRESULT CXuiCtrlSliderWrapper::SetText(LPCWSTR text , int iDataAssoc) +{ + CXuiCtrlSliderWrapper *pThis; + HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis); + if (FAILED(hr)) + return hr; + + // if there's a data assoc value, find the right control for it + if(iDataAssoc!=0) + { + + } + + pThis->m_pSlider->SetText(text); + return hr; +} + +HXUIOBJ CXuiCtrlSliderWrapper::GetSlider() +{ + CXuiCtrlSliderWrapper *pThis; + HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis); + if (FAILED(hr)) + return NULL; + return pThis->m_pSlider->m_hObj; +} + +HRESULT CXuiCtrlSliderWrapper::SetRange( int nRangeMin, int nRangeMax) +{ + CXuiCtrlSliderWrapper *pThis; + HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis); + if (FAILED(hr)) + return hr; + pThis->m_pSlider->SetRange(nRangeMin, nRangeMax); + return S_OK; +}
\ No newline at end of file |
