pm_switch_button.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * File : pm_switch_button.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 <vector>
  11. #include <pm_widget.h>
  12. #include <pm_image.h>
  13. #include "sigslot.h"
  14. #include <pm_timer.h>
  15. namespace Persimmon
  16. {
  17. class SwitchButton : public Widget
  18. {
  19. public:
  20. SwitchButton(const Rect& rect);
  21. virtual ~SwitchButton();
  22. void setSwitchBackImage(Image *norImg, Image *selImg)
  23. {
  24. if (norBackImage)
  25. delete norBackImage;
  26. if (selBackImage)
  27. delete selBackImage;
  28. norBackImage = norImg;
  29. selBackImage = selImg;
  30. }
  31. void setSwitchSliderImage(Image *norImg, Image *selImg)
  32. {
  33. if (norSliderImage)
  34. delete norSliderImage;
  35. if (selSliderImage)
  36. delete selSliderImage;
  37. norSliderImage = norImg;
  38. selSliderImage = selImg;
  39. }
  40. void selectEnable(bool sel = true)
  41. {
  42. select = sel;
  43. }
  44. Signal<bool> clicked;
  45. virtual bool handleGestureEvent(struct rtgui_event_gesture *, const struct rtgui_gesture *); //´¥ÃþÊÖÊÆÊ¼þ´¦Àíº¯Êý
  46. virtual void render(struct rtgui_dc* dc, const Point &dcPoint = Point(),
  47. const Rect &srcRect = Rect(),
  48. RenderFlag flags = DrawNormal);
  49. private:
  50. void onAnimation(void);
  51. Image *norBackImage, *selBackImage;
  52. Image *norSliderImage, *selSliderImage;
  53. int index;
  54. bool select, animation;
  55. Timer *animationTimer;
  56. };
  57. }