void CGUISliderControl::SendClick() { float percent = 100*GetProportion(); SEND_CLICK_MESSAGE(GetID(), GetParentID(), MathUtils::round_int(percent)); if (m_action && (!m_dragging || m_action->fireOnDrag)) { std::string action = StringUtils::Format(m_action->formatString, percent); CGUIMessage message(GUI_MSG_EXECUTE, m_controlID, m_parentID); message.SetStringParam(action); g_windowManager.SendMessage(message); } }
void CGUIEditControl::UpdateText(bool sendUpdate) { m_smsTimer.Stop(); if (sendUpdate) { ValidateInput(); SEND_CLICK_MESSAGE(GetID(), GetParentID(), 0); m_textChangeActions.ExecuteActions(GetID(), GetParentID()); } SetInvalid(); }
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(), 0); }
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 += iNumSteps; if (m_iValue < m_iStart) m_iValue = m_iStart; if (m_iValue > m_iEnd) m_iValue = m_iEnd; break; default: m_iPercent += iNumSteps; if (m_iPercent < 0) m_iPercent = 0; if (m_iPercent > 100) m_iPercent = 100; break; } SEND_CLICK_MESSAGE(GetID(), GetParentID(), 0); }
bool CGUIEditControl::OnAction(const CAction &action) { ValidateCursor(); if (m_inputType != INPUT_TYPE_READONLY) { if (action.GetID() == ACTION_BACKSPACE) { // backspace if (m_cursorPos) { if (!ClearMD5()) m_text2.erase(--m_cursorPos, 1); UpdateText(); } return true; } else if (action.GetID() == ACTION_MOVE_LEFT || action.GetID() == ACTION_CURSOR_LEFT) { if (m_cursorPos > 0) { m_cursorPos--; UpdateText(false); return true; } } else if (action.GetID() == ACTION_MOVE_RIGHT || action.GetID() == ACTION_CURSOR_RIGHT) { if ((unsigned int) m_cursorPos < m_text2.size()) { m_cursorPos++; UpdateText(false); return true; } } else if (action.GetID() == ACTION_PASTE) { ClearMD5(); OnPasteClipboard(); return true; } else if (action.GetID() >= KEY_VKEY && action.GetID() < KEY_ASCII && m_edit.empty()) { // input from the keyboard (vkey, not ascii) BYTE b = action.GetID() & 0xFF; if (b == XBMCVK_HOME) { m_cursorPos = 0; UpdateText(false); return true; } else if (b == XBMCVK_END) { m_cursorPos = m_text2.length(); UpdateText(false); return true; } if (b == XBMCVK_LEFT && m_cursorPos > 0) { m_cursorPos--; UpdateText(false); return true; } if (b == XBMCVK_RIGHT && m_cursorPos < m_text2.length()) { m_cursorPos++; UpdateText(false); return true; } if (b == XBMCVK_DELETE) { if (m_cursorPos < m_text2.length()) { if (!ClearMD5()) m_text2.erase(m_cursorPos, 1); UpdateText(); return true; } } if (b == XBMCVK_BACK) { if (m_cursorPos > 0) { if (!ClearMD5()) m_text2.erase(--m_cursorPos, 1); UpdateText(); } return true; } else if (b == XBMCVK_RETURN || b == XBMCVK_NUMPADENTER) { // enter - send click message, but otherwise ignore SEND_CLICK_MESSAGE(GetID(), GetParentID(), 1); return true; } else if (b == XBMCVK_ESCAPE) { // escape - fallthrough to default action return CGUIButtonControl::OnAction(action); } } else if (action.GetID() >= KEY_ASCII) { // input from the keyboard int ch = action.GetUnicode(); // ignore non-printing characters if ( !((0 <= ch && ch < 0x8) || (0xE <= ch && ch < 0x1B) || (0x1C <= ch && ch < 0x20)) ) { switch (ch) { case 9: // tab, ignore case 11: // Non-printing character, ignore case 12: // Non-printing character, ignore break; case 10: case 13: { // enter - send click message, but otherwise ignore SEND_CLICK_MESSAGE(GetID(), GetParentID(), 1); return true; } case 27: { // escape - fallthrough to default action return CGUIButtonControl::OnAction(action); } case 8: { // backspace if (m_cursorPos) { if (!ClearMD5()) m_text2.erase(--m_cursorPos, 1); } break; } case 127: { // delete if (m_cursorPos < m_text2.length()) { if (!ClearMD5()) m_text2.erase(m_cursorPos, 1); } break; } default: { if (!g_Windowing.IsTextInputEnabled()) { ClearMD5(); m_edit.clear(); m_text2.insert(m_text2.begin() + m_cursorPos++, (WCHAR)action.GetUnicode()); } break; } } UpdateText(); return true; } } else if (action.GetID() >= REMOTE_0 && action.GetID() <= REMOTE_9) { // input from the remote ClearMD5(); m_edit.clear(); OnSMSCharacter(action.GetID() - REMOTE_0); return true; } else if (action.GetID() == ACTION_INPUT_TEXT) { m_edit.clear(); std::wstring str; g_charsetConverter.utf8ToW(action.GetText(), str); m_text2.insert(m_cursorPos, str); m_cursorPos += str.size(); UpdateText(); return true; } } return CGUIButtonControl::OnAction(action); }