pm_progressbar.h 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /*
  2. * File : pm_progressbar.h
  3. * COPYRIGHT (C) 2012-2017, Shanghai Real-Thread Technology Co., Ltd
  4. *
  5. * Change Logs:
  6. * Date Author Notes
  7. * 2017-11-05 realthread the first version
  8. */
  9. #pragma once
  10. #include <pm_widget.h>
  11. #include <pm_image.h>
  12. #include <sigslot.h>
  13. namespace Persimmon
  14. {
  15. class ProgressBar : public Widget
  16. {
  17. public:
  18. enum type
  19. {
  20. HORIZONTAL = 0,
  21. VERTICAL = 1,
  22. };
  23. ProgressBar(Image *norImg, Image *barImg, Image *sliderImg);
  24. virtual ~ProgressBar();
  25. void setDirection(enum type t = HORIZONTAL)
  26. {
  27. direction = t;
  28. }
  29. void setValueLimits(int min, int max)
  30. {
  31. minValue = min;
  32. maxValue = max;
  33. }
  34. void setCurrentValue(int value)
  35. {
  36. if (value > maxValue)
  37. currentValue = maxValue;
  38. else if (value < minValue)
  39. currentValue = minValue;
  40. else
  41. currentValue = value;
  42. }
  43. int getCurrentValue(void)
  44. {
  45. return currentValue;
  46. }
  47. void setNorImg(Image *img)
  48. {
  49. if (norImage)
  50. {
  51. delete norImage;
  52. }
  53. norImage = img;
  54. }
  55. void setBarImg(Image *img)
  56. {
  57. if (barImage)
  58. {
  59. delete barImage;
  60. }
  61. barImage = img;
  62. }
  63. void setSliderImg(Image *img)
  64. {
  65. if (sliderImage)
  66. {
  67. delete sliderImage;
  68. }
  69. sliderImage = img;
  70. }
  71. void enableGesture(bool ges = true)
  72. {
  73. if (ges)
  74. setInterestGesture(RTGUI_GESTURE_DRAG | RTGUI_GESTURE_TAP);
  75. else
  76. setInterestGesture(RTGUI_GESTURE_NONE);
  77. }
  78. Signal<int> clicked;
  79. virtual bool handleGestureEvent(struct rtgui_event_gesture *, const struct rtgui_gesture *); //触摸手势事件处理函数
  80. virtual void render(struct rtgui_dc* dc, const Point &dcPoint = Point(),
  81. const Rect &srcRect = Rect(),
  82. RenderFlag flags = DrawNormal);
  83. private:
  84. enum type direction;
  85. Image *norImage, *barImage, *sliderImage;
  86. int progress, baseProgress;
  87. int minValue, maxValue, currentValue;
  88. };
  89. }