/xbmc/guilib/GUIEditControl.h
http://github.com/xbmc/xbmc · C Header · 128 lines · 84 code · 26 blank · 18 comment · 0 complexity · 33523943d9464230f62e4e39d57f799b MD5 · raw file
- /*
- * Copyright (C) 2005-2018 Team Kodi
- * This file is part of Kodi - https://kodi.tv
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- * See LICENSES/README.md for more information.
- */
- #pragma once
- /*!
- \file GUIEditControl.h
- \brief
- */
- #include "GUIButtonControl.h"
- #include "utils/Stopwatch.h"
- #include "utils/StringValidation.h"
- #include "utils/Variant.h"
- /*!
- \ingroup controls
- \brief
- */
- class CGUIEditControl : public CGUIButtonControl
- {
- public:
- enum INPUT_TYPE {
- INPUT_TYPE_READONLY = -1,
- INPUT_TYPE_TEXT = 0,
- INPUT_TYPE_NUMBER,
- INPUT_TYPE_SECONDS,
- INPUT_TYPE_TIME,
- INPUT_TYPE_DATE,
- INPUT_TYPE_IPADDRESS,
- INPUT_TYPE_PASSWORD,
- INPUT_TYPE_PASSWORD_MD5,
- INPUT_TYPE_SEARCH,
- INPUT_TYPE_FILTER,
- INPUT_TYPE_PASSWORD_NUMBER_VERIFY_NEW
- };
- CGUIEditControl(int parentID, int controlID, float posX, float posY,
- float width, float height, const CTextureInfo &textureFocus, const CTextureInfo &textureNoFocus,
- const CLabelInfo& labelInfo, const std::string &text);
- explicit CGUIEditControl(const CGUIButtonControl &button);
- ~CGUIEditControl(void) override;
- CGUIEditControl *Clone() const override { return new CGUIEditControl(*this); };
- bool OnMessage(CGUIMessage &message) override;
- bool OnAction(const CAction &action) override;
- void OnClick() override;
- void SetLabel(const std::string &text) override;
- void SetLabel2(const std::string &text) override;
- void SetHint(const KODI::GUILIB::GUIINFO::CGUIInfoLabel& hint);
- std::string GetLabel2() const override;
- unsigned int GetCursorPosition() const;
- void SetCursorPosition(unsigned int iPosition);
- void SetInputType(INPUT_TYPE type, CVariant heading);
- void SetTextChangeActions(const CGUIAction& textChangeActions) { m_textChangeActions = textChangeActions; };
- bool HasTextChangeActions() const { return m_textChangeActions.HasActionsMeetingCondition(); };
- virtual bool HasInvalidInput() const { return m_invalidInput; }
- virtual void SetInputValidation(StringValidation::Validator inputValidator, void *data = NULL);
- protected:
- void SetFocus(bool focus) override;
- void ProcessText(unsigned int currentTime) override;
- void RenderText() override;
- CGUILabel::COLOR GetTextColor() const override;
- std::wstring GetDisplayedText() const;
- std::string GetDescriptionByIndex(int index) const override;
- bool SetStyledText(const std::wstring &text);
- void RecalcLabelPosition();
- void ValidateCursor();
- void UpdateText(bool sendUpdate = true);
- void OnPasteClipboard();
- void OnSMSCharacter(unsigned int key);
- void DefaultConstructor();
- virtual bool ValidateInput(const std::wstring &data) const;
- void ValidateInput();
- /*! \brief Clear out the current text input if it's an MD5 password.
- \return true if the password is cleared, false otherwise.
- */
- bool ClearMD5();
- std::wstring m_text2;
- std::string m_text;
- KODI::GUILIB::GUIINFO::CGUIInfoLabel m_hintInfo;
- float m_textOffset;
- float m_textWidth;
- CRect m_clipRect; ///< clipping rect for the second label
- static const int spaceWidth = 5;
- unsigned int m_cursorPos;
- unsigned int m_cursorBlink;
- std::string m_inputHeading;
- INPUT_TYPE m_inputType;
- bool m_isMD5;
- CGUIAction m_textChangeActions;
- bool m_invalidInput;
- StringValidation::Validator m_inputValidator;
- void *m_inputValidatorData;
- unsigned int m_smsKeyIndex;
- unsigned int m_smsLastKey;
- CStopWatch m_smsTimer;
- std::wstring m_edit;
- int m_editOffset;
- int m_editLength;
- static const char* smsLetters[10];
- static const unsigned int smsDelay;
- };