Skip to content

Commit 12323c6

Browse files
committed
More properties + spin() and stopSpinning() bridge
1 parent 9ac05e8 commit 12323c6

File tree

2 files changed

+106
-30
lines changed

2 files changed

+106
-30
lines changed

index.android.js

Lines changed: 53 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,56 @@
1-
var { requireNativeComponent, PropTypes, View } = require('react-native');
1+
'use strict';
22

3-
var iface = {
4-
name: 'Circles',
5-
propTypes: {
6-
...View.propTypes,
7-
barColors: PropTypes.array,
8-
barWidth: PropTypes.number,
9-
blockCount: PropTypes.number,
10-
blockScale: PropTypes.number,
11-
contourColor: PropTypes.number,
12-
contourSize: PropTypes.number,
13-
delayMillis: PropTypes.number,
14-
fillColor: PropTypes.number,
15-
maxValue: PropTypes.number,
16-
rimColor: PropTypes.number,
17-
rimWidth: PropTypes.number,
18-
spinSpeed: PropTypes.number,
19-
startAngle: PropTypes.number,
20-
textScale: PropTypes.number,
21-
textSize: PropTypes.number,
22-
unit: PropTypes.string,
23-
unitScale: PropTypes.number,
24-
unitSize: PropTypes.number,
25-
},
3+
var React = require('react-native');
4+
5+
var { NativeModules, requireNativeComponent, PropTypes, View } = React;
6+
7+
class CirclesAndroid extends React.Component {
8+
spin() {
9+
NativeModules.UIManager.dispatchViewManagerCommand(
10+
React.findNodeHandle(this),
11+
NativeModules.UIManager.RCTCircles.Commands.spin,
12+
[]
13+
);
14+
};
15+
16+
stopSpinning() {
17+
NativeModules.UIManager.dispatchViewManagerCommand(
18+
React.findNodeHandle(this),
19+
UIManager.RCTCircles.Commands.stopSpinning,
20+
[]
21+
);
22+
};
23+
24+
render() {
25+
return <NativeCirclesAndroid {...this.props} />;
26+
}
27+
}
28+
CirclesAndroid.propTypes = {
29+
...View.propTypes,
30+
barColors: PropTypes.array,
31+
barWidth: PropTypes.number,
32+
blockCount: PropTypes.number,
33+
blockScale: PropTypes.number,
34+
contourColor: PropTypes.number,
35+
contourSize: PropTypes.number,
36+
delayMillis: PropTypes.number,
37+
fillColor: PropTypes.number,
38+
value: PropTypes.number,
39+
maxValue: PropTypes.number,
40+
rimColor: PropTypes.number,
41+
rimWidth: PropTypes.number,
42+
spinSpeed: PropTypes.number,
43+
startAngle: PropTypes.number,
44+
textScale: PropTypes.number,
45+
textSize: PropTypes.number,
46+
unit: PropTypes.string,
47+
unitScale: PropTypes.number,
48+
unitSize: PropTypes.number,
49+
animated: PropTypes.bool,
50+
text: PropTypes.string,
51+
textMode: PropTypes.oneOf(['text', 'value', 'percent']),
2652
};
2753

28-
module.exports = requireNativeComponent('RCTCircles', iface);
54+
var NativeCirclesAndroid = requireNativeComponent('RCTCircles', CirclesAndroid);
55+
56+
module.exports = CirclesAndroid;

src/main/java/com/kwaak/reacttwo/CirclesManager.java

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,18 @@
1111

1212
import java.util.Map;
1313

14+
import at.grabner.circleprogress.TextMode;
15+
1416
public class CirclesManager extends SimpleViewManager<CirclesView> {
1517

1618
public static final int COMMAND_SPIN = 1;
1719
public static final int COMMAND_STOPSPINNING = 2;
20+
private boolean _animated;
1821

1922
public CirclesManager() {
2023
}
2124

22-
public static final String REACT_CLASS = "RCTCircle";
25+
public static final String REACT_CLASS = "RCTCircles";
2326

2427
@Override
2528
public String getName() {
@@ -52,66 +55,111 @@ public void setBlockCount(CirclesView view, int val) {
5255
public void setBlockScale(CirclesView view, float val) {
5356
view.setBlockScale(val);
5457
}
58+
5559
@ReactProp(name = "contourColor", defaultInt = 0)
5660
public void setContourColor(CirclesView view, int val) {
5761
view.setContourColor(val);
5862
}
63+
5964
@ReactProp(name = "contourSize", defaultFloat = 0)
6065
public void setContourSize(CirclesView view, float val) {
6166
view.setContourSize(val);
6267
}
68+
6369
@ReactProp(name = "delayMillis", defaultInt = 0)
6470
public void setDelayMillis(CirclesView view, int val) {
6571
view.setDelayMillis(val);
6672
}
73+
6774
@ReactProp(name = "fillColor", defaultInt = 0)
6875
public void setFillColor(CirclesView view, int val) {
6976
view.setFillCircleColor(val);
7077
}
78+
7179
@ReactProp(name = "maxValue", defaultFloat = 0)
7280
public void setMaxValue(CirclesView view, float val) {
7381
view.setMaxValue(val);
7482
}
83+
84+
@ReactProp(name = "value", defaultFloat = 0)
85+
public void setValue(CirclesView view, float val) {
86+
if(_animated)
87+
view.setValueAnimated(val) ;
88+
else
89+
view.setValue(val);
90+
}
91+
7592
@ReactProp(name = "rimColor", defaultInt = 0)
7693
public void setRimColor(CirclesView view, int val) {
7794
view.setRimColor(val);
7895
}
96+
7997
@ReactProp(name = "rimWidth", defaultInt = 0)
8098
public void setRimWidth(CirclesView view, int val) {
8199
view.setRimWidth(val);
82100
}
101+
83102
@ReactProp(name = "spinSpeed", defaultFloat = 0)
84103
public void setSpinSpeed(CirclesView view, float val) {
85104
view.setSpinSpeed(val);
86105
}
106+
87107
@ReactProp(name = "startAngle", defaultInt = 0)
88108
public void setStartAngle(CirclesView view, int val) {
89109
view.setStartAngle(val);
90110
}
111+
91112
@ReactProp(name = "textScale", defaultFloat = 0)
92113
public void setTextScale(CirclesView view, float val) {
93114
view.setTextScale(val);
94115
}
116+
95117
@ReactProp(name = "textSize", defaultInt = 0)
96118
public void setTextSize(CirclesView view, int val) {
97119
view.setTextSize(val);
98120
}
121+
99122
@ReactProp(name = "unit")
100-
public void setUnit(CirclesView view, String val) {
123+
public void setUnit(CirclesView view, @Nullable String val) {
101124
view.setUnit(val);
102125
}
126+
103127
@ReactProp(name = "unitScale", defaultFloat = 0)
104128
public void setUnitScale(CirclesView view, float val) {
105129
view.setUnitScale(val);
106130
}
131+
132+
@ReactProp(name = "text")
133+
public void setText(CirclesView view, @Nullable String val) {
134+
view.setText(val);
135+
}
136+
107137
@ReactProp(name = "unitSize", defaultInt = 0)
108138
public void setUnitSize(CirclesView view, int val) {
109139
view.setUnitSize(val);
110140
}
111141

112-
/*android.graphics.Paint.Cap public void setBarStrokeCap(CirclesView view, )
113-
android.graphics.Shader public void setRimShader(CirclesView view, )
114-
android.graphics.Paint.Cap public void setSpinnerStrokeCap(CirclesView view, )*/
142+
@ReactProp(name = "textMode")
143+
public void setTextMode(CirclesView view, @Nullable String val) {
144+
if(val.equalsIgnoreCase("text"))
145+
view.setTextMode(TextMode.TEXT);
146+
if(val.equalsIgnoreCase("value"))
147+
view.setTextMode(TextMode.VALUE);
148+
if(val.equalsIgnoreCase("percent"))
149+
view.setTextMode(TextMode.PERCENT);
150+
}
151+
152+
@ReactProp(name = "animated", defaultBoolean = false)
153+
public void setAnimated(CirclesView view, boolean val) {
154+
_animated = val;
155+
}
156+
157+
/*
158+
Not implemented:
159+
android.graphics.Paint.Cap public void setBarStrokeCap(CirclesView view, )
160+
android.graphics.Shader public void setRimShader(CirclesView view, )
161+
android.graphics.Paint.Cap public void setSpinnerStrokeCap(CirclesView view, )
162+
*/
115163

116164
@Override
117165
public Map<String,Integer> getCommandsMap() {

0 commit comments

Comments
 (0)