/xbmc/guilib/GUITextBox.h

http://github.com/xbmc/xbmc · C Header · 97 lines · 59 code · 20 blank · 18 comment · 0 complexity · a8d2018a72a30671a1ab7f5e87b397dd MD5 · raw file

  1. /*
  2. * Copyright (C) 2005-2018 Team Kodi
  3. * This file is part of Kodi - https://kodi.tv
  4. *
  5. * SPDX-License-Identifier: GPL-2.0-or-later
  6. * See LICENSES/README.md for more information.
  7. */
  8. #pragma once
  9. /*!
  10. \file GUITextBox.h
  11. \brief
  12. */
  13. #include "GUIControl.h"
  14. #include "GUILabel.h"
  15. #include "GUITextLayout.h"
  16. #include "guilib/guiinfo/GUIInfoLabel.h"
  17. /*!
  18. \ingroup controls
  19. \brief
  20. */
  21. class TiXmlNode;
  22. class CGUITextBox : public CGUIControl, public CGUITextLayout
  23. {
  24. public:
  25. CGUITextBox(int parentID, int controlID, float posX, float posY, float width, float height,
  26. const CLabelInfo &labelInfo, int scrollTime = 200,
  27. const CLabelInfo* labelInfoMono = nullptr);
  28. CGUITextBox(const CGUITextBox &from);
  29. ~CGUITextBox(void) override;
  30. CGUITextBox *Clone() const override { return new CGUITextBox(*this); };
  31. void DoProcess(unsigned int currentTime, CDirtyRegionList &dirtyregions) override;
  32. void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions) override;
  33. void Render() override;
  34. bool OnMessage(CGUIMessage& message) override;
  35. float GetHeight() const override;
  36. void SetMinHeight(float minHeight);
  37. void SetPageControl(int pageControl);
  38. bool CanFocus() const override;
  39. void SetInfo(const KODI::GUILIB::GUIINFO::CGUIInfoLabel &info);
  40. void SetAutoScrolling(const TiXmlNode *node);
  41. void SetAutoScrolling(int delay, int time, int repeatTime, const std::string &condition = "");
  42. void ResetAutoScrolling();
  43. bool GetCondition(int condition, int data) const override;
  44. virtual std::string GetLabel(int info) const;
  45. std::string GetDescription() const override;
  46. void Scroll(unsigned int offset);
  47. protected:
  48. void UpdateVisibility(const CGUIListItem *item = NULL) override;
  49. bool UpdateColors() override;
  50. void UpdateInfo(const CGUIListItem *item = NULL) override;
  51. void UpdatePageControl();
  52. void ScrollToOffset(int offset, bool autoScroll = false);
  53. unsigned int GetRows() const;
  54. int GetCurrentPage() const;
  55. int GetNumPages() const;
  56. // auto-height
  57. float m_minHeight;
  58. float m_renderHeight;
  59. // offset of text in the control for scrolling
  60. unsigned int m_offset;
  61. float m_scrollOffset;
  62. float m_scrollSpeed;
  63. int m_scrollTime;
  64. unsigned int m_itemsPerPage;
  65. float m_itemHeight;
  66. unsigned int m_lastRenderTime;
  67. CLabelInfo m_label;
  68. TransformMatrix m_cachedTextMatrix;
  69. // autoscrolling
  70. INFO::InfoPtr m_autoScrollCondition;
  71. int m_autoScrollTime; // time to scroll 1 line (ms)
  72. int m_autoScrollDelay; // delay before scroll (ms)
  73. unsigned int m_autoScrollDelayTime; // current offset into the delay
  74. CAnimation *m_autoScrollRepeatAnim;
  75. int m_pageControl;
  76. KODI::GUILIB::GUIINFO::CGUIInfoLabel m_info;
  77. };