-
-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmonkey.jungle
More file actions
375 lines (320 loc) · 17.7 KB
/
monkey.jungle
File metadata and controls
375 lines (320 loc) · 17.7 KB
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
project.manifest = manifest.xml
project.typecheck = 3
# This build file controls the build for individual device types
# It defines
# - exclude annotiations
# - resource path
# - source path
# All of which are used to define features available for a
# device type or group of devices
# EXCLUDE ANNOTATIONS
# are used to include/exclude certain sections of the code
# for specific devices
# Each device should be assigned one of the following three
# variables, depending on their CIQ version
# < CIQ 4.0.0
# >= CIQ 4.0.0
# >= CIQ 5.1.0
annotCiqPre400=exclForCiqPre400
annotCiq400Plus=exclForCiq400Plus
annotCiq510Plus=exclForCiq510Plus;exclForCiq400Plus
# Either one of these should be assigned, depending
# whether the device is primarily button-controlled
# or touch-controlled.
# - Touch-based: all devices without the above-mentioned buttons, such
# as: Vivoactive, Venu, Edge 1040 and Edge 1050
# - Button-based: all devices with buttons for up/down/enter/back,
# even if they also have a touch screen. Such
# devices include: Fenix, Epix, Forerunner, Edge 540/840
annotTouch=exclForTouch;exclForSettingsMenuItem
annotButton=exclForButton;exclForSettingsFooter
# On button-based Edge devices, a firmware bug prevents the delegate
# functions required to open the settings menu by scrolling past the
# menu boundaries from working correctly.
# Therefore, on these devices, the settings are shown as a regular
# menu item instead. All other button-based controls remain unchanged.
# This applies to Edge 540 / 840, Edge MTB, and Edge 550 / 850.
# https://github.com/openhab/openhab-garmin/issues/253
# https://github.com/openhab/openhab-garmin/issues/260
annotButtonWithSettingsMenuItem=exclForButton;exclForSettingsMenuItem
# Either on of these should be assigned, depending
# whether the device has a round or rectangular screen
annotScreenRound=exclForScreenRound
annotScreenRectangular=exclForScreenRectangular
# One of these must be assigned:
# - Use annotActionMenu if the device supports ActionMenu.
# - Otherwise, use annotFullMenu, which falls back to a full-screen menu
# instead of the ActionMenu.
annotActionMenu=exclForActionMenu
annotFullMenu=exclForFullMenu
# RESOURCE PATH
# resources define drawables (icons), app settings and strings
# The variable resBase should be included in ALL resource
resBase=resources/base;resources/icons-interface;resources/icons-widgets
# The launcher-icons directory includes a directory for
# each launcher-icon size, which shall be appended
# e.g. $(resLauncherIcon)/40x40-light
resLauncherIcons=resources/icons-launcher
# The resourcePath of all Edge devices includes additional
# directories with resource definitions that override the icon sizes.
# The base definition is only used in the two subsequent variants.
resEdgeBase=$(resBase);resources/edge/icons-interface;resources/edge/icons-widgets
# "Short" is used for devices with shorter screens, such as the 540, 840, 550, or 850.
resEdgeShort=$(resEdgeBase);resources/edge/icons-interface-short
# "Tall" is used for devices with taller screens, such as the 1040 or 1050.
resEdgeTall=$(resEdgeBase);resources/edge/icons-interface-tall
# SOURCE PATH
# Defines which source files are included in the build.
#
# The following is controlled via source file variables:
#
# Config: Device-specific properties that are static and cannot change at runtime,
# for example values used for layout or to enable or disable specific features.
# Themes: Runtime-switchable color schemes, for example for day and night mode.
# SOURCE PATH - CONFIG
# The classes DefaultConfig and GlanceDefaultConfig in the base directory
# define the default values. The derived classes Config and GlanceConfig
# provide access to these values.
#
# Individual devices may use device-specific implementations of
# Config and GlanceConfig to override selected default values.
#
# srcConfigBase contains the default values.
# srcConfigDefault contains the default implementations of
# Config and GlanceConfig.
#
# The remaining variables define the paths for individual device
# implementations.
srcConfigBase=source/config/base
srcConfigDefault=$(srcConfigBase);source/config/device-default
# Watches
srcConfigFenix6Pro=$(srcConfigBase);source/config/device-fenix6pro
srcConfigForerunner=$(srcConfigBase);source/config/device-forerunner
srcConfigVenu2Sq=$(srcConfigBase);source/config/device-venu-square/base;source/config/device-venu-square/device-venu2sq
srcConfigVenuX1=$(srcConfigBase);source/config/device-venu-square/base;source/config/device-venu-square/device-venux1
# Edge devices
# Base path for all Edge devices
srcConfigEdgeBase=$(srcConfigBase);source/config/device-edge/base;source/config/device-edge/glance
# Edge x40 touch-based devices
srcConfigEdgeX40Touch=$(srcConfigEdgeBase);source/config/device-edge/device-x40-touch
# Edge x40 button-based devices
srcConfigEdgeX40Button=$(srcConfigEdgeBase);source/config/device-edge/device-x40-button
# Edge x50 touch-based devices
srcConfigEdgeX50Touch=$(srcConfigEdgeBase);source/config/device-edge/device-x50-touch
# Edge x50 button-based devices
srcConfigEdgeX50Button=$(srcConfigEdgeBase);source/config/device-edge/device-x50-button/base
# SOURCE PATH - THEMES
# SOURCE PATH - THEMES - DEFINITIONS
# Theme definitions specify the source directories that contain
# the color theme implementations.
srcThemeDefinitionsBase=source/themes/definitions/base
srcThemeDefinitionsDefault=source/themes/definitions/device-default
# The dark theme for night mode is based on the default theme
srcThemeDefinitionsNightModeDark=$(srcThemeDefinitionsDefault);source/themes/definitions/device-night-mode/dark
srcThemeDefinitionsNightModeLight=source/themes/definitions/device-night-mode/light
# Edge devices that use buttons for control (for example 540, 840,
# 550, 850, MTB) require a focus indicator in the menu to show
# which menu item is currently selected.
# Edge x40 button-based devices display a frame around the focused
# menu item natively on the physical device. No additional
# implementation is required for the device itself.
#
# This behavior is not available in the simulator. Therefore,
# a blue background is used there as the menu item focus indicator.
srcThemeDefinitionsNightModeFocusBlue=source/themes/definitions/device-night-mode/focus-blue
# Edge x50 button-based devices display a rounded frame in the
# background color for the focused menu item. The app must therefore
# use contrasting colors for the focused entry.
# These devices use the light theme for day mode and the dark theme
# for night mode. For the focused menu item, the opposite theme
# is applied to ensure proper contrast.
srcThemeDefinitionsNightModeFocusInverted=source/themes/definitions/device-night-mode/focus-inverted
# SOURCE PATH - THEMES - THEME MANAGER
# For devices that use only the dark theme.
srcThemeManagerDefault=source/themes/manager/device-default
# Devices that support night mode use the light theme by default
# and switch to the dark theme when night mode is active.
srcThemeManagerNightModeBase=source/themes/manager/device-night-mode/base
# The default implementation switches between day and night mode
# and does not apply a menu item focus indicator.
# This applies to touch-based Edge devices (Explore 2, 1040, 1050).
srcThemeManagerNightModeDefault=$(srcThemeManagerNightModeBase);source/themes/manager/device-night-mode/device-default
# Button-based devices use a focus indicator.
# The implementation for x40 and x50 devices is the same here.
# They differ only in the source directories included for
# the actual focus indicator theme implementations.
srcThemeManagerNightModeFocusIndicator=$(srcThemeManagerNightModeBase);source/themes/manager/device-night-mode/device-focus-indicator
# SOURCE PATH - THEMES - ASSEMBLY
# Now the theme-related portion of the source path can be assembled.
srcThemesBase=$(srcThemeDefinitionsBase)
# Default configuration applied to most devices (no night mode).
srcThemesDefault=$(srcThemesBase);$(srcThemeDefinitionsDefault);$(srcThemeManagerDefault)
# Configuration for devices that support night mode.
srcThemesNightModeBase=$(srcThemesBase);$(srcThemeDefinitionsNightModeDark);$(srcThemeDefinitionsNightModeLight)
# Device without focus indicator
srcThemesNightModeDefault=$(srcThemesNightModeBase);$(srcThemeManagerNightModeDefault)
# Devices with a focus indicator.
# Here, the two different focus indicator types for x40 and x50
# generation devices are applied.
srcThemesNightModeEdgeX40Button=$(srcThemesNightModeBase);$(srcThemeDefinitionsNightModeFocusBlue);$(srcThemeManagerNightModeFocusIndicator)
srcThemesNightModeEdgeX50Button=$(srcThemesNightModeBase);$(srcThemeDefinitionsNightModeFocusInverted);$(srcThemeManagerNightModeFocusIndicator)
# SOURCE PATH - ASSEMBLY
# This section assembles the source path variables
# for different devices. The actual source path
# is defined per device in the section below.
# Main source directory
srcBase=source/main
# The default source path used for most devices with round screens.
srcDefault=$(srcBase);$(srcConfigDefault);$(srcThemesDefault)
# Some watch models use device-specific constants.
srcFenix6Pro=$(srcBase);$(srcConfigFenix6Pro);$(srcThemesDefault)
srcForerunner=$(srcBase);$(srcConfigForerunner);$(srcThemesDefault)
srcVenu2Sq=$(srcBase);$(srcConfigVenu2Sq);$(srcThemesDefault)
srcVenuX1=$(srcBase);$(srcConfigVenuX1);$(srcThemesDefault)
# Edge devices
# Touch-based devices (Explore 2, 1040, 1050).
# These devices do not have physical control buttons.
srcEdgeX40Touch=$(srcBase);$(srcConfigEdgeX40Touch);$(srcThemesNightModeDefault)
srcEdgeX50Touch=$(srcBase);$(srcConfigEdgeX50Touch);$(srcThemesNightModeDefault)
# Button-based devices (540, 840, MTB, 550, 850).
# These devices have physical control buttons and,
# in some cases (840, 850), also support touch input.
srcEdgeButtonX40=$(srcBase);$(srcConfigEdgeX40Button);$(srcThemesNightModeEdgeX40Button)
srcEdgeButtonX50=$(srcBase);$(srcConfigEdgeX50Button);$(srcThemesNightModeEdgeX50Button)
# DEVICES
# The following section assembles the excludeAnnotations,
# sourcePath and resourcePath for each device
# For excludeAnnotations and sourcePath there are defaults
# that can be overriden by devices
base.excludeAnnotations = $(annotCiq510Plus);$(annotButton);$(annotScreenRound);$(annotActionMenu)
base.sourcePath = $(srcDefault)
# resourcePath has to be defined for each device to point
# to the correct launcher icon
# WATCHES
# Fenix 6 Pro
fenix6pro.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix6pro.excludeAnnotations = $(annotCiqPre400);$(annotButton);$(annotScreenRound);$(annotActionMenu)
fenix6pro.sourcePath = $(srcFenix6Pro)
fenix6spro.resourcePath=$(fenix6pro.resourcePath)
fenix6spro.excludeAnnotations = $(fenix6pro.excludeAnnotations)
fenix6spro.sourcePath = $(fenix6pro.sourcePath)
fenix6xpro.resourcePath=$(fenix6pro.resourcePath)
fenix6xpro.excludeAnnotations = $(fenix6pro.excludeAnnotations)
fenix6xpro.sourcePath = $(fenix6pro.sourcePath)
# Button-based devices with CIQ >= 5.1.0 are the default,
# so only resourcePath needs to be defined.
d2mach1.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
enduro3.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
epix2.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
epix2pro42mm.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
epix2pro47mm.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
epix2pro51mm.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
fenix7.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix7pro.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix7pronowifi.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix7s.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix7spro.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix7x.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix7xpro.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix7xpronowifi.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix843mm.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
fenix847mm.resourcePath=$(resBase);$(resLauncherIcons)/65x65-light
fenix8solar47mm.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix8solar51mm.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fenix8pro47mm.resourcePath=$(resBase);$(resLauncherIcons)/65x65-light
fenixe.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
marq2.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
marq2aviator.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
descentg2.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
descentmk343mm.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
descentmk351mm.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
# For Forerunner devices, the sourcePath must also be set,
# as they have different button positions defined in Config.
# FR945 LTE is the only Forerunner with CIQ 3.4
fr945lte.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fr945lte.excludeAnnotations = $(annotCiqPre400);$(annotButton);$(annotScreenRound);$(annotActionMenu)
fr945lte.sourcePath=$(srcForerunner)
fr165.resourcePath=$(resBase);$(resLauncherIcons)/54x54-light
fr165.sourcePath=$(srcForerunner)
fr165m.resourcePath=$(resBase);$(resLauncherIcons)/54x54-light
fr165m.sourcePath=$(srcForerunner)
fr255.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fr255.sourcePath=$(srcForerunner)
fr255m.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fr255m.sourcePath=$(srcForerunner)
fr255s.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fr255s.sourcePath=$(srcForerunner)
fr255sm.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fr255sm.sourcePath=$(srcForerunner)
fr265.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
fr265.sourcePath=$(srcForerunner)
fr265s.resourcePath=$(resBase);$(resLauncherIcons)/60x60-light
fr265s.sourcePath=$(srcForerunner)
fr57042mm.resourcePath=$(resBase);$(resLauncherIcons)/54x54-light
fr57042mm.sourcePath=$(srcForerunner)
fr57047mm.resourcePath=$(resBase);$(resLauncherIcons)/65x65-light
fr57047mm.sourcePath=$(srcForerunner)
fr955.sourcePath=$(srcForerunner)
fr955.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
fr955.sourcePath=$(srcForerunner)
fr965.resourcePath=$(resBase);$(resLauncherIcons)/65x65-light
fr965.sourcePath=$(srcForerunner)
fr970.resourcePath=$(resBase);$(resLauncherIcons)/65x65-light
fr970.sourcePath=$(srcForerunner)
# Touch devices with CIQ level between 4.0.0 and 5.0.0
venu2.resourcePath=$(resBase);$(resLauncherIcons)/70x70-light
venu2.excludeAnnotations = $(annotCiq400Plus);$(annotTouch);$(annotScreenRound);$(annotActionMenu)
venu2s.resourcePath=$(resBase);$(resLauncherIcons)/61x61-light
venu2s.excludeAnnotations = $(venu2.excludeAnnotations)
venu2plus.resourcePath=$(resBase);$(resLauncherIcons)/70x70-light
venu2plus.excludeAnnotations = $(venu2.excludeAnnotations)
venusq2.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
venusq2.excludeAnnotations = $(venu2.excludeAnnotations)
venusq2.sourcePath = $(srcVenu2Sq)
venusq2m.resourcePath=$(resBase);$(resLauncherIcons)/40x40-light
venusq2m.excludeAnnotations = $(venu2.excludeAnnotations)
venusq2m.sourcePath = $(srcVenu2Sq)
# Touch devices with CIQ level >= 5.1.0
venu3.resourcePath=$(resBase);$(resLauncherIcons)/70x70-light
venu3.excludeAnnotations = $(annotCiq510Plus);$(annotTouch);$(annotScreenRound);$(annotActionMenu)
venu3s.resourcePath=$(resBase);$(resLauncherIcons)/70x70-light
venu3s.excludeAnnotations = $(venu3.excludeAnnotations)
venu441mm.resourcePath=$(resBase);$(resLauncherIcons)/54x54-light
venu441mm.excludeAnnotations = $(venu3.excludeAnnotations)
venu445mm.resourcePath=$(resBase);$(resLauncherIcons)/65x65-light
venu445mm.excludeAnnotations = $(venu3.excludeAnnotations)
venux1.resourcePath=$(resBase);$(resLauncherIcons)/65x65-light
venux1.excludeAnnotations = $(venu3.excludeAnnotations)
venux1.sourcePath = $(srcVenuX1)
vivoactive5.resourcePath=$(resBase);$(resLauncherIcons)/56x56-light
vivoactive5.excludeAnnotations = $(venu3.excludeAnnotations)
vivoactive6.resourcePath=$(resBase);$(resLauncherIcons)/54x54-light
vivoactive6.excludeAnnotations = $(venu3.excludeAnnotations)
# CYCLING COMPUTERS
# Touch devices with CIQ level between 4.0.0 and 5.0.0
edgeexplore2.resourcePath=$(resEdgeTall);$(resLauncherIcons)/36x36-dark
edgeexplore2.excludeAnnotations = $(annotCiq400Plus);$(annotTouch);$(annotScreenRectangular);$(annotFullMenu)
edgeexplore2.sourcePath = $(srcEdgeX40Touch)
# Button-based, CIQ >= 5.1.0
edge540.resourcePath=$(resEdgeShort);$(resLauncherIcons)/35x35-dark
edge540.excludeAnnotations = $(annotCiq510Plus);$(annotButtonWithSettingsMenuItem);$(annotScreenRectangular);$(annotFullMenu)
edge540.sourcePath = $(srcEdgeButtonX40)
edge840.resourcePath=$(edge540.resourcePath)
edge840.excludeAnnotations = $(edge540.excludeAnnotations)
edge840.sourcePath = $(srcEdgeButtonX40)
edgemtb.resourcePath=$(resEdgeShort);$(resLauncherIcons)/36x36-dark
edgemtb.excludeAnnotations = $(edge540.excludeAnnotations)
edgemtb.sourcePath = $(srcEdgeButtonX40)
edge550.resourcePath=$(resEdgeShort);$(resLauncherIcons)/56x56-dark
edge550.excludeAnnotations = $(annotCiq510Plus);$(annotButtonWithSettingsMenuItem);$(annotScreenRectangular);$(annotFullMenu)
edge550.sourcePath = $(srcEdgeButtonX50);source/config/device-edge/device-x50-button/device-550
edge850.resourcePath=$(edge550.resourcePath)
edge850.excludeAnnotations = $(edge550.excludeAnnotations)
edge850.sourcePath = $(srcEdgeButtonX50);source/config/device-edge/device-x50-button/device-850
# Touch-based, CIQ >= 5.1.0
edge1040.resourcePath=$(resEdgeTall);$(resLauncherIcons)/40x40-dark
edge1040.excludeAnnotations = $(annotCiq510Plus);$(annotTouch);$(annotScreenRectangular);$(annotFullMenu)
edge1040.sourcePath = $(srcEdgeX40Touch)
edge1050.resourcePath=$(resEdgeTall);$(resLauncherIcons)/68x68-dark
edge1050.excludeAnnotations = $(edge1040.excludeAnnotations)
edge1050.sourcePath = $(srcEdgeX50Touch)