first commit
This commit is contained in:
200
Minecraft.Client/Common/XUI/XUI_Ctrl_4JEdit.cpp
Normal file
200
Minecraft.Client/Common/XUI/XUI_Ctrl_4JEdit.cpp
Normal file
@@ -0,0 +1,200 @@
|
||||
#include "stdafx.h"
|
||||
#include "XUI_Ctrl_4JEdit.h"
|
||||
|
||||
|
||||
|
||||
HRESULT CXuiCtrl4JEdit::OnInit(XUIMessageInit* pInitData, BOOL& rfHandled)
|
||||
{
|
||||
HRESULT hr=S_OK;
|
||||
|
||||
// set a limit for the text box
|
||||
m_uTextLimit=XUI_4JEDIT_MAX_CHARS-1;
|
||||
XuiEditSetTextLimit(m_hObj,m_uTextLimit);
|
||||
// Find the text limit. (Add one for NULL terminator)
|
||||
//m_uTextLimit = min( XuiEditGetTextLimit(m_hObj) + 1, XUI_4JEDIT_MAX_CHARS);
|
||||
|
||||
ZeroMemory( wchText , sizeof(WCHAR)*(m_uTextLimit+1) );
|
||||
|
||||
m_bReadOnly = false;
|
||||
m_uiTitle = 0;
|
||||
m_uiText =0;
|
||||
m_eKeyboardMode=C_4JInput::EKeyboardMode_Default;
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
||||
HRESULT CXuiCtrl4JEdit::SetTextLimit(int iLimit)
|
||||
{
|
||||
CXuiCtrl4JEdit *pThis;
|
||||
HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
if(iLimit<XUI_4JEDIT_MAX_CHARS)
|
||||
{
|
||||
pThis->m_uTextLimit=iLimit;
|
||||
XuiEditSetTextLimit(pThis->m_hObj,iLimit);
|
||||
ZeroMemory( pThis->wchText , sizeof(WCHAR)*XUI_4JEDIT_MAX_CHARS );
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
HRESULT CXuiCtrl4JEdit::SetCaretPosition(int iPos)
|
||||
{
|
||||
CXuiCtrl4JEdit *pThis;
|
||||
HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
XuiEditSetCaretPosition(pThis->m_hObj,iPos);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CXuiCtrl4JEdit::SetTitleAndText(unsigned int uiTitle, unsigned int uiText)
|
||||
{
|
||||
CXuiCtrl4JEdit *pThis;
|
||||
HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
pThis->m_uiTitle=uiTitle;
|
||||
pThis->m_uiText=uiText;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CXuiCtrl4JEdit::SetReadOnly(bool bReadOnly)
|
||||
{
|
||||
// Attempt to make the change on the actual original version of this object that XUI made itself, rather
|
||||
// than the copy we make ourselves and then map to it, which shares the same handle
|
||||
CXuiCtrl4JEdit *pThis;
|
||||
HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
pThis->m_bReadOnly = bReadOnly;
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CXuiCtrl4JEdit::SetKeyboardType(C_4JInput::EKeyboardMode eKeyboardMode)
|
||||
{
|
||||
CXuiCtrl4JEdit *pThis;
|
||||
HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
pThis->m_eKeyboardMode= eKeyboardMode;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
// HRESULT CXuiCtrl4JEdit::SetIPMode(bool bIPMode)
|
||||
// {
|
||||
// // Attempt to make the change on the actual original version of this object that XUI made itself, rather
|
||||
// // than the copy we make ourselves and then map to it, which shares the same handle
|
||||
// CXuiCtrl4JEdit *pThis;
|
||||
// HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
// if (FAILED(hr))
|
||||
// return hr;
|
||||
// pThis->m_bIPMode= bIPMode;
|
||||
//
|
||||
// return S_OK;
|
||||
// }
|
||||
|
||||
// HRESULT CXuiCtrl4JEdit::SetExtendedMode(bool bExtendedMode)
|
||||
// {
|
||||
// // Attempt to make the change on the actual original version of this object that XUI made itself, rather
|
||||
// // than the copy we make ourselves and then map to it, which shares the same handle
|
||||
// CXuiCtrl4JEdit *pThis;
|
||||
// HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
// if (FAILED(hr))
|
||||
// return hr;
|
||||
// pThis->m_bExtendedMode= bExtendedMode;
|
||||
//
|
||||
// return S_OK;
|
||||
// }
|
||||
|
||||
HRESULT CXuiCtrl4JEdit::OnChar(XUIMessageChar* pInputData, BOOL& rfHandled)
|
||||
{
|
||||
CXuiCtrl4JEdit *pThis;
|
||||
HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
HXUIOBJ hBaseObj;
|
||||
|
||||
// need to send the key down to the base object, so that when we notify the parent, the edit control has been updated with the right text
|
||||
hr=XuiGetBaseObject(pThis->m_hObj,&hBaseObj);
|
||||
|
||||
XUIMessage xuiMsg;
|
||||
XUIMessageChar xuiMsgChar;
|
||||
XuiMessageChar( &xuiMsg, &xuiMsgChar, pInputData->wch, pInputData->dwFlags, pInputData->UserIndex );
|
||||
// Send the XM_CHAR message.
|
||||
XuiSendMessage( hBaseObj, &xuiMsg );
|
||||
|
||||
rfHandled = TRUE;
|
||||
SendNotifyValueChanged((int)pInputData->wch);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT CXuiCtrl4JEdit::OnKeyDown(XUIMessageInput* pInputData, BOOL& rfHandled)
|
||||
{
|
||||
CXuiCtrl4JEdit *pThis;
|
||||
HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
ui.AnimateKeyPress(pInputData->UserIndex, pInputData->dwKeyCode);
|
||||
|
||||
//HRESULT hr = S_OK;
|
||||
|
||||
if( pThis->m_bReadOnly ) return hr;
|
||||
|
||||
// Find the text limit. (Add one for NULL terminator)
|
||||
//m_uTextLimit = min( XuiEditGetTextLimit(m_hObj) + 1, XUI_4JEDIT_MAX_CHARS);
|
||||
|
||||
if((((pInputData->dwKeyCode == VK_PAD_A) && (pInputData->wch == 0)) || (pInputData->dwKeyCode == VK_PAD_START)) && !(pInputData->dwFlags & XUI_INPUT_FLAG_REPEAT))
|
||||
{
|
||||
pThis->RequestKeyboard(pInputData->UserIndex);
|
||||
rfHandled = TRUE;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
void CXuiCtrl4JEdit::RequestKeyboard(int iPad)
|
||||
{
|
||||
InputManager.RequestKeyboard(m_uiTitle,GetText(),m_uiText,iPad,wchText,m_uTextLimit+1,&CXuiCtrl4JEdit::KeyboardReturned,this,m_eKeyboardMode,app.GetStringTable());
|
||||
}
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
HRESULT CXuiCtrl4JEdit::SendNotifyValueChanged(int iValue)
|
||||
{
|
||||
CXuiCtrl4JEdit *pThis;
|
||||
HRESULT hr = XuiObjectFromHandle(m_hObj, (void **) &pThis);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
HXUIOBJ hParent;
|
||||
//HRESULT hr=S_OK;
|
||||
XUIMessage msg;
|
||||
XUINotify msgNotify;
|
||||
XUINotifyValueChanged msgNotifyValueChanged;
|
||||
|
||||
XuiElementGetParent(pThis->m_hObj, &hParent);
|
||||
XuiNotifyValueChanged(&msg, &msgNotify, &msgNotifyValueChanged, XuiGetOuter(pThis->m_hObj), iValue);
|
||||
XuiBubbleMessage(XuiGetOuter(hParent), &msg);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
int CXuiCtrl4JEdit::KeyboardReturned(void *pParam,bool bSet)
|
||||
{
|
||||
CXuiCtrl4JEdit* pClass = (CXuiCtrl4JEdit*)pParam;
|
||||
HRESULT hr = S_OK;
|
||||
|
||||
if(bSet)
|
||||
{
|
||||
pClass->SetText(pClass->wchText);
|
||||
// need to move the caret to the end of the newly set text
|
||||
XuiEditSetCaretPosition(pClass->m_hObj, (int)wcsnlen(pClass->wchText, 50));
|
||||
pClass->SendNotifyValueChanged(10); // 10 for a return
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
Reference in New Issue
Block a user