| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- /*
- * File : pm_progressbar.h
- * COPYRIGHT (C) 2012-2017, Shanghai Real-Thread Technology Co., Ltd
- *
- * Change Logs:
- * Date Author Notes
- * 2017-11-05 realthread the first version
- */
- #pragma once
- #include <pm_widget.h>
- #include <pm_image.h>
- #include <sigslot.h>
- namespace Persimmon
- {
- class ProgressBar : public Widget
- {
- public:
- enum type
- {
- HORIZONTAL = 0,
- VERTICAL = 1,
- };
- ProgressBar(Image *norImg, Image *barImg, Image *sliderImg);
- virtual ~ProgressBar();
- void setDirection(enum type t = HORIZONTAL)
- {
- direction = t;
- }
- void setValueLimits(int min, int max)
- {
- minValue = min;
- maxValue = max;
- }
- void setCurrentValue(int value)
- {
- if (value > maxValue)
- currentValue = maxValue;
- else if (value < minValue)
- currentValue = minValue;
- else
- currentValue = value;
- }
- int getCurrentValue(void)
- {
- return currentValue;
- }
- void setNorImg(Image *img)
- {
- if (norImage)
- {
- delete norImage;
- }
- norImage = img;
- }
- void setBarImg(Image *img)
- {
- if (barImage)
- {
- delete barImage;
- }
- barImage = img;
- }
- void setSliderImg(Image *img)
- {
- if (sliderImage)
- {
- delete sliderImage;
- }
- sliderImage = img;
- }
- void enableGesture(bool ges = true)
- {
- if (ges)
- setInterestGesture(RTGUI_GESTURE_DRAG | RTGUI_GESTURE_TAP);
- else
- setInterestGesture(RTGUI_GESTURE_NONE);
- }
- Signal<int> clicked;
- virtual bool handleGestureEvent(struct rtgui_event_gesture *, const struct rtgui_gesture *); //触摸手势事件处理函数
- virtual void render(struct rtgui_dc* dc, const Point &dcPoint = Point(),
- const Rect &srcRect = Rect(),
- RenderFlag flags = DrawNormal);
- private:
- enum type direction;
- Image *norImage, *barImage, *sliderImage;
- int progress, baseProgress;
- int minValue, maxValue, currentValue;
- };
- }
|