-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
GeneratorModeView.mc
129 lines (113 loc) · 4.13 KB
/
GeneratorModeView.mc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
using Toybox.WatchUi as Ui;
using Toybox.Graphics as Gfx;
using Generator as Gen;
class GeneratorModeView extends SlidableView {
private const MODE_TITLE_FONT = Gfx.FONT_TINY;
private var modeTitleHeight;
function initialize(params as Dictionary) {
var horizontalBias = params.get(:horizontalBias);
var verticalBias = params.get(:verticalBias);
var width = System.getDeviceSettings().screenWidth;
var height = System.getDeviceSettings().screenHeight;
SlidableView.initialize(
params.get(:identifier),
width * horizontalBias,
height * verticalBias
);
modeTitleHeight = Gfx.getFontHeight(MODE_TITLE_FONT);
}
function pushMode(generatorMode as Gen.GeneratorType, animation as PushAimation) {
var textIndicator = new Ui.Text(
{
:text => resolveTitle(generatorMode),
:font => MODE_TITLE_FONT,
:locX => Ui.LAYOUT_HALIGN_CENTER,
:locY => Ui.LAYOUT_VALIGN_CENTER,
:justification => Gfx.TEXT_JUSTIFY_CENTER,
:height => modeTitleHeight
}
);
var iconIndicator = resolveIndicator(generatorMode);
var indicatorGroup = new IndicatorDrawable();
indicatorGroup.setup(textIndicator, iconIndicator);
pushDrawable(indicatorGroup, animation);
}
private function resolveIndicator(generatorMode as Gen.GeneratorType) {
var resource;
switch (generatorMode) {
case Gen.GENERATOR_NUM:
resource = Rez.Drawables.ic_num;
break;
case Gen.GENERATOR_RANGE:
resource = Rez.Drawables.ic_range;
break;
case Gen.GENERATOR_NUM_FIXED:
resource = Rez.Drawables.ic_num_fixed;
break;
case Gen.GENERATOR_ALPHANUM:
resource = Rez.Drawables.ic_alphanum;
break;
case Gen.GENARATOR_HEX:
resource = Rez.Drawables.ic_hex;
break;
default:
resource = Rez.Drawables.ic_unknown;
}
return Application.loadResource(resource);
}
private function resolveTitle(generatorMode as GeneratorType) {
var resource;
switch (generatorMode) {
case Gen.GENERATOR_NUM:
resource = Rez.Strings.gen_title_num;
break;
case Gen.GENERATOR_RANGE:
resource = Rez.Strings.gen_title_num_range;
break;
case Gen.GENERATOR_NUM_FIXED:
resource = Rez.Strings.gen_title_num_fixed;
break;
case Gen.GENERATOR_ALPHANUM:
resource = Rez.Strings.gen_title_alphanum;
break;
case Gen.GENARATOR_HEX:
resource = Rez.Strings.gen_title_hex;
break;
default:
resource = null;
}
if (resource != null) {
return Application.loadResource(resource);
} else {
return null;
}
}
class IndicatorDrawable extends Ui.Drawable {
private var indicatorIcon as Drawable = null;
private var indicatorText as Drawable = null;
private var spacing = 2;
private var padding = 5;
function initialize() {
Drawable.initialize({});
}
function draw(dc) {
indicatorText.setLocation(
me.locX,
me.locY + indicatorIcon.getHeight() + spacing + padding
);
indicatorText.draw(dc);
dc.drawBitmap(me.locX - indicatorIcon.getWidth() / 2, me.locY + padding, indicatorIcon);
}
function setColor(color) {
indicatorText.setColor(color);
}
function setup(text as Drawable, icon as Ui.BitmapResource) {
indicatorText = text;
indicatorIcon = icon;
setSize(
width,
indicatorText.height + indicatorIcon.getHeight() + spacing + (padding * 2)
);
}
}
}