• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include "SkProgressBarView.h"
2 #include "SkAnimator.h"
3 #include "SkWidgetViews.h"
4 #include "SkTime.h"
5 #include "SkSystemEventTypes.h"
6 
SkProgressBarView()7 SkProgressBarView::SkProgressBarView()
8 {
9 	init_skin_anim(kProgress_SkinEnum, &fAnim);
10 	fAnim.setHostEventSink(this);
11 	fProgress = 0;
12 	fMax = 100;
13 
14 }
15 
changeProgress(int diff)16 void SkProgressBarView::changeProgress(int diff)
17 {
18 	int newProg = fProgress + diff;
19 	if (newProg > 0 && newProg < fMax)
20 		this->setProgress(newProg);
21 	//otherwise i'll just leave it as it is
22 	//this implies that if a new max and progress are set, max must be set first
23 }
24 
onDraw(SkCanvas * canvas)25 /*virtual*/ void SkProgressBarView::onDraw(SkCanvas* canvas)
26 {
27 	SkPaint						paint;
28 	SkAnimator::DifferenceType	diff = fAnim.draw(canvas, &paint, SkTime::GetMSecs());
29 
30 	if (diff == SkAnimator::kDifferent)
31 		this->inval(NULL);
32 	else if (diff == SkAnimator::kPartiallyDifferent)
33 	{
34 		SkRect	bounds;
35 		fAnim.getInvalBounds(&bounds);
36 		this->inval(&bounds);
37 	}
38 }
39 
onEvent(const SkEvent & evt)40 /*virtual*/ bool SkProgressBarView::onEvent(const SkEvent& evt)
41 {
42 	if (evt.isType(SK_EventType_Inval))
43 	{
44 		this->inval(NULL);
45 		return true;
46 	}
47 	if (evt.isType("recommendDim"))
48 	{
49 		SkScalar	height;
50 
51 		if (evt.findScalar("y", &height))
52 			this->setHeight(height);
53 		return true;
54 	}
55 	return this->INHERITED::onEvent(evt);
56 }
57 
onInflate(const SkDOM & dom,const SkDOM::Node * node)58 /*virtual*/ void SkProgressBarView::onInflate(const SkDOM& dom, const SkDOM::Node* node)
59 {
60 	this->INHERITED::onInflate(dom, node);
61 	int32_t temp;
62 	if (dom.findS32(node, "max", &temp))
63 		this->setMax(temp);
64 	if (dom.findS32(node, "progress", &temp))
65 		this->setProgress(temp);
66 }
67 
onSizeChange()68 /*virtual*/ void SkProgressBarView::onSizeChange()
69 {
70 	this->INHERITED::onSizeChange();
71 	SkEvent evt("user");
72 	evt.setString("id", "setDim");
73 	evt.setScalar("dimX", this->width());
74 	evt.setScalar("dimY", this->height());
75 	fAnim.doUserEvent(evt);
76 }
77 
reset()78 void SkProgressBarView::reset()
79 {
80 	fProgress = 0;
81 	SkEvent e("user");
82 	e.setString("id", "reset");
83 	fAnim.doUserEvent(e);
84 }
85 
setMax(int max)86 void SkProgressBarView::setMax(int max)
87 {
88 	fMax = max;
89 	SkEvent e("user");
90 	e.setString("id", "setMax");
91 	e.setS32("newMax", max);
92 	fAnim.doUserEvent(e);
93 }
94 
setProgress(int progress)95 void SkProgressBarView::setProgress(int progress)
96 {
97 	fProgress = progress;
98 	SkEvent e("user");
99 	e.setString("id", "setProgress");
100 	e.setS32("newProgress", progress);
101 	fAnim.doUserEvent(e);
102 }
103