pm_slider.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * File : pm_slider.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 Slider : public Widget
  16. {
  17. public:
  18. enum type
  19. {
  20. HORIZONTAL = 0,
  21. VERTICAL = 1,
  22. };
  23. Slider(Image *norImg, Image *barImg, Image *sliderImg);
  24. virtual ~Slider();
  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. currentValue = value;
  37. }
  38. int getCurrentValue(void)
  39. {
  40. return currentValue;
  41. }
  42. void setNorImg(Image *img)
  43. {
  44. if (norImage)
  45. {
  46. delete norImage;
  47. }
  48. norImage = img;
  49. }
  50. void setBarImg(Image *img)
  51. {
  52. if (barImage)
  53. {
  54. delete barImage;
  55. }
  56. barImage = img;
  57. }
  58. void setSliderImg(Image *img)
  59. {
  60. if (sliderImage)
  61. {
  62. delete sliderImage;
  63. }
  64. sliderImage = img;
  65. }
  66. void enableGesture(bool ges = true)
  67. {
  68. if (ges)
  69. setInterestGesture(RTGUI_GESTURE_DRAG | RTGUI_GESTURE_TAP);
  70. else
  71. setInterestGesture(RTGUI_GESTURE_NONE);
  72. }
  73. Signal<int> clicked;
  74. virtual bool handleGestureEvent(struct rtgui_event_gesture *, const struct rtgui_gesture *); //´¥ÃþÊÖÊÆÊ¼þ´¦Àíº¯Êý
  75. virtual void render(struct rtgui_dc* dc, const Point &dcPoint = Point(),
  76. const Rect &srcRect = Rect(),
  77. RenderFlag flags = DrawNormal);
  78. private:
  79. enum type direction;
  80. Image *norImage, *barImage, *sliderImage;
  81. int progress, baseProgress;
  82. int minValue, maxValue, currentValue;
  83. };
  84. }