ruby-macrodroid 0.2.2 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/lib/ruby-macrodroid.rb +1736 -181
- metadata +27 -7
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c73d4f6bcddec53817e6ae7c59224759e58dd490ab53b2cab91728ceb98961f7
|
4
|
+
data.tar.gz: 37887f1b46a2158d5101b2c51ae444016dcf34606df34f8e6f58aed05482efb9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bb6b3059e62aa4ce7924207a6fe545bc5b588d4ea4eab315361be595c47f343602a617dc7c2fdbc4701b44456dfcd18b255dc0fccfd904f7b56b5455f6f67a4
|
7
|
+
data.tar.gz: 2b7f77a7b582a0a8d7beda8ba09d10973e06a4844d114398a5bf534e755e66914cede0023693605abe0100f882befe7598271d70aaa5747bde9dac39c04d03d3
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/lib/ruby-macrodroid.rb
CHANGED
@@ -2,13 +2,91 @@
|
|
2
2
|
|
3
3
|
# file: ruby-macrodroid.rb
|
4
4
|
|
5
|
-
require 'pp'
|
6
|
-
require 'json'
|
7
5
|
require 'uuid'
|
8
|
-
require 'date'
|
9
6
|
require 'rxfhelper'
|
7
|
+
require 'chronic_cron'
|
10
8
|
|
11
9
|
|
10
|
+
MODEL =<<EOF
|
11
|
+
device
|
12
|
+
connectivity
|
13
|
+
airplane_mode is disabled
|
14
|
+
EOF
|
15
|
+
|
16
|
+
class TriggersNlp
|
17
|
+
include AppRoutes
|
18
|
+
|
19
|
+
def initialize()
|
20
|
+
|
21
|
+
super()
|
22
|
+
params = {}
|
23
|
+
triggers(params)
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
def triggers(params)
|
28
|
+
|
29
|
+
get /^(?:at )?(\d+:\d+(?:[ap]m)?) (?:on )?(.*)/i do |time, days|
|
30
|
+
[TimerTrigger, {time: time, days: days}]
|
31
|
+
end
|
32
|
+
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
alias find_trigger run_route
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
class ActionsNlp
|
41
|
+
include AppRoutes
|
42
|
+
|
43
|
+
def initialize()
|
44
|
+
|
45
|
+
super()
|
46
|
+
params = {}
|
47
|
+
actions(params)
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
def actions(params)
|
52
|
+
|
53
|
+
get /^message popup: (.*)/i do |msg|
|
54
|
+
[ToastAction, {msg: msg}]
|
55
|
+
end
|
56
|
+
|
57
|
+
get /^Popup Message ['"][^'"]+/i do |msg|
|
58
|
+
[ToastAction, {msg: msg}]
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
alias find_action run_route
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
class ConstraintsNlp
|
68
|
+
include AppRoutes
|
69
|
+
|
70
|
+
def initialize()
|
71
|
+
|
72
|
+
super()
|
73
|
+
params = {}
|
74
|
+
constraints(params)
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
def constraints(params)
|
79
|
+
|
80
|
+
get /^airplane mode (.*)/i do |state|
|
81
|
+
[AirplaneModeConstraint, {enabled: (state =~ /^enabled|on$/) == 0}]
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
alias find_constraint run_route
|
87
|
+
|
88
|
+
end
|
89
|
+
|
12
90
|
module Params
|
13
91
|
|
14
92
|
refine Hash do
|
@@ -20,7 +98,7 @@ module Params
|
|
20
98
|
h.inject({}) do |r, x|
|
21
99
|
|
22
100
|
key, value = x
|
23
|
-
puts 'value: ' + value.inspect
|
101
|
+
#puts 'value: ' + value.inspect
|
24
102
|
|
25
103
|
val = if value.is_a?(Hash) then
|
26
104
|
to_snake_case(value)
|
@@ -66,16 +144,16 @@ class Macro
|
|
66
144
|
using ColouredText
|
67
145
|
using Params
|
68
146
|
|
69
|
-
attr_reader :local_variables, :triggers, :actions, :guid
|
70
|
-
attr_accessor :
|
147
|
+
attr_reader :local_variables, :triggers, :actions, :constraints, :guid
|
148
|
+
attr_accessor :title
|
71
149
|
|
72
150
|
def initialize(name=nil, debug: false)
|
73
151
|
|
74
|
-
@
|
75
|
-
|
76
|
-
|
152
|
+
@title, @debug = name, debug
|
153
|
+
|
154
|
+
puts 'inside Macro#initialize' if @debug
|
77
155
|
|
78
|
-
@triggers, @actions = [], []
|
156
|
+
@local_variables, @triggers, @actions, @constraints = [], [], [], []
|
79
157
|
@h = {}
|
80
158
|
|
81
159
|
end
|
@@ -107,9 +185,9 @@ class Macro
|
|
107
185
|
local_variables: @local_variables,
|
108
186
|
m_trigger_list: @triggers.map(&:to_h),
|
109
187
|
m_action_list: @actions.map(&:to_h),
|
110
|
-
m_constraint_list:
|
188
|
+
m_constraint_list: @constraints.map(&:to_h),
|
111
189
|
m_description: '',
|
112
|
-
m_name:
|
190
|
+
m_name: title(),
|
113
191
|
m_excludeLog: false,
|
114
192
|
m_GUID: guid(),
|
115
193
|
m_isOrCondition: false,
|
@@ -125,6 +203,13 @@ class Macro
|
|
125
203
|
|
126
204
|
def import_h(h)
|
127
205
|
|
206
|
+
if @debug then
|
207
|
+
puts 'inside import_h'
|
208
|
+
puts 'h:' + h.inspect
|
209
|
+
end
|
210
|
+
|
211
|
+
@title = h[:name]
|
212
|
+
|
128
213
|
# fetch the local variables
|
129
214
|
@local_variables = h['local_variables']
|
130
215
|
|
@@ -139,13 +224,15 @@ class Macro
|
|
139
224
|
object(action.to_snake_case)
|
140
225
|
end
|
141
226
|
|
142
|
-
# fetch the constraints
|
227
|
+
# fetch the constraints
|
228
|
+
@constraints = h[:constraint_list].map do |constraint|
|
229
|
+
object(constraint.to_snake_case)
|
230
|
+
end
|
143
231
|
|
144
232
|
@h = h
|
145
233
|
|
146
|
-
%i(local_variables m_trigger_list m_action_list)
|
147
|
-
@h[x] = []
|
148
|
-
end
|
234
|
+
%i(local_variables m_trigger_list m_action_list m_constraint_list)\
|
235
|
+
.each {|x| @h[x] = [] }
|
149
236
|
|
150
237
|
@h
|
151
238
|
|
@@ -153,34 +240,133 @@ class Macro
|
|
153
240
|
|
154
241
|
def import_xml(node)
|
155
242
|
|
156
|
-
@
|
243
|
+
if @debug then
|
244
|
+
puts 'inside Macro#import_xml'
|
245
|
+
puts 'node: ' + node.xml.inspect
|
246
|
+
end
|
247
|
+
|
248
|
+
@title = node.attributes[:name]
|
157
249
|
|
158
|
-
|
159
|
-
@triggers = node.xpath('triggers/*').map do |e|
|
250
|
+
if node.element('triggers') then
|
160
251
|
|
161
|
-
|
162
|
-
{timer: TimerTrigger}[e.name.to_sym].new(e.attributes.to_h)
|
252
|
+
# level 2
|
163
253
|
|
164
|
-
|
254
|
+
# get all the triggers
|
255
|
+
@triggers = node.xpath('triggers/*').map do |e|
|
256
|
+
|
257
|
+
puts 'e.name: ' + e.name.inspect if @debug
|
258
|
+
{timer: TimerTrigger}[e.name.to_sym].new(e.attributes.to_h)
|
259
|
+
|
260
|
+
end
|
261
|
+
|
262
|
+
# get all the actions
|
263
|
+
@actions = node.xpath('actions/*').map do |e|
|
264
|
+
|
265
|
+
if e.name == 'notification' then
|
266
|
+
|
267
|
+
case e.attributes[:type].to_sym
|
268
|
+
when :popup
|
269
|
+
e.attributes.delete :type
|
270
|
+
ToastAction.new e.attributes.to_h
|
271
|
+
end
|
272
|
+
|
273
|
+
end
|
274
|
+
|
275
|
+
end
|
276
|
+
|
277
|
+
# get all the constraints
|
278
|
+
@constraints = node.xpath('constraints/*').map do |e|
|
279
|
+
|
280
|
+
puts 'e.name: ' + e.name.inspect if @debug
|
281
|
+
{airplanemode: AirplaneModeConstraint}[e.name.to_sym].new(e.attributes.to_h)
|
165
282
|
|
166
|
-
|
167
|
-
|
283
|
+
end
|
284
|
+
|
285
|
+
else
|
286
|
+
|
287
|
+
# Level 1
|
168
288
|
|
169
|
-
|
289
|
+
tp = TriggersNlp.new
|
290
|
+
|
291
|
+
@triggers = node.xpath('trigger').map do |e|
|
292
|
+
|
293
|
+
r = tp.find_trigger e.text
|
170
294
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
295
|
+
puts 'found trigger ' + r.inspect if @debug
|
296
|
+
|
297
|
+
if r then
|
298
|
+
r[0].new(r[1])
|
175
299
|
end
|
176
300
|
|
177
301
|
end
|
178
|
-
|
179
|
-
|
302
|
+
|
303
|
+
ap = ActionsNlp.new
|
304
|
+
|
305
|
+
@actions = node.xpath('action').map do |e|
|
306
|
+
|
307
|
+
r = ap.find_action e.text
|
308
|
+
puts 'found action ' + r.inspect if @debug
|
309
|
+
|
310
|
+
if r then
|
311
|
+
r[0].new(r[1])
|
312
|
+
end
|
313
|
+
|
314
|
+
end
|
315
|
+
|
316
|
+
cp = ConstraintsNlp.new
|
317
|
+
|
318
|
+
@constraints = node.xpath('constraint').map do |e|
|
319
|
+
|
320
|
+
r = cp.find_constraint e.text
|
321
|
+
puts 'found constraint ' + r.inspect if @debug
|
322
|
+
|
323
|
+
if r then
|
324
|
+
r[0].new(r[1])
|
325
|
+
end
|
326
|
+
|
327
|
+
end
|
328
|
+
|
329
|
+
end
|
180
330
|
|
181
331
|
self
|
182
332
|
|
183
333
|
end
|
334
|
+
|
335
|
+
def match?(triggerx, detail={time: $env[:time]}, model=nil )
|
336
|
+
|
337
|
+
if @triggers.any? {|x| x.type == triggerx and x.match?(detail, model) } then
|
338
|
+
|
339
|
+
if @debug then
|
340
|
+
puts 'checking constraints ...'
|
341
|
+
puts '@constraints: ' + @constraints.inspect
|
342
|
+
end
|
343
|
+
|
344
|
+
if @constraints.all? {|x| x.match?($env.merge(detail), model) } then
|
345
|
+
|
346
|
+
true
|
347
|
+
|
348
|
+
else
|
349
|
+
|
350
|
+
return false
|
351
|
+
|
352
|
+
end
|
353
|
+
|
354
|
+
end
|
355
|
+
|
356
|
+
end
|
357
|
+
|
358
|
+
def run()
|
359
|
+
@actions.map(&:invoke)
|
360
|
+
end
|
361
|
+
|
362
|
+
def to_s()
|
363
|
+
[
|
364
|
+
'm: ' + @title,
|
365
|
+
@triggers.map {|x| "t: %s" % x}.join("\n"),
|
366
|
+
@actions.map {|x| "a: %s" % x}.join("\n"),
|
367
|
+
@constraints.map {|x| "a: %s" % x}.join("\n")
|
368
|
+
].join("\n")
|
369
|
+
end
|
184
370
|
|
185
371
|
private
|
186
372
|
|
@@ -214,10 +400,12 @@ class MacroDroid
|
|
214
400
|
|
215
401
|
if s[0] == '{' then
|
216
402
|
import_json(s)
|
217
|
-
|
218
|
-
s[0] == '<'
|
403
|
+
elsif s[0] == '<'
|
219
404
|
import_xml(s)
|
220
405
|
@h = build_h
|
406
|
+
else
|
407
|
+
import_xml(text_to_xml(s))
|
408
|
+
@h = build_h
|
221
409
|
end
|
222
410
|
|
223
411
|
else
|
@@ -235,6 +423,7 @@ class MacroDroid
|
|
235
423
|
|
236
424
|
def build_h()
|
237
425
|
|
426
|
+
puts 'inside Macro#build_h' if @debug
|
238
427
|
{
|
239
428
|
cell_tower_groups: [],
|
240
429
|
cell_towers_ignore: [],
|
@@ -271,11 +460,11 @@ class MacroDroid
|
|
271
460
|
def import_json(s)
|
272
461
|
|
273
462
|
@h = JSON.parse(s, symbolize_names: true).to_snake_case
|
274
|
-
puts ('@h: ' + @h.
|
463
|
+
puts ('@h: ' + @h.inspect).debug if @debug
|
275
464
|
|
276
465
|
@macros = @h[:macro_list].map do |macro|
|
277
466
|
|
278
|
-
puts ('macro: ' + macro.
|
467
|
+
puts ('macro: ' + macro.inspect).debug if @debug
|
279
468
|
m = Macro.new(debug: @debug)
|
280
469
|
m.import_h(macro)
|
281
470
|
m
|
@@ -295,12 +484,39 @@ class MacroDroid
|
|
295
484
|
|
296
485
|
@macros = doc.root.xpath('macro').map do |node|
|
297
486
|
|
298
|
-
macro = Macro.new @
|
487
|
+
macro = Macro.new @title, debug: @debug
|
299
488
|
macro.import_xml(node)
|
300
489
|
macro
|
301
490
|
|
302
491
|
end
|
303
492
|
end
|
493
|
+
|
494
|
+
def text_to_xml(s)
|
495
|
+
|
496
|
+
a = s.split(/.*(?=^m:)/); a.shift
|
497
|
+
a.map!(&:chomp)
|
498
|
+
|
499
|
+
macros = a.map do |x|
|
500
|
+
|
501
|
+
lines = x.lines
|
502
|
+
puts 'lines: ' + lines.inspect if @debug
|
503
|
+
|
504
|
+
name = lines.shift[/^m: +(.*)/,1]
|
505
|
+
h = {t: [], a: [], c: []}
|
506
|
+
|
507
|
+
lines.each {|line| h[line[0].to_sym] << line[/^\w: +(.*)/,1] }
|
508
|
+
triggers = h[:t].map {|text| [:trigger, {}, text]}
|
509
|
+
actions = h[:a].map {|text| [:action, {}, text]}
|
510
|
+
constraints = h[:c].map {|text| [:constraint, {}, text]}
|
511
|
+
|
512
|
+
[:macro, {name: name},'', *triggers, *actions, *constraints]
|
513
|
+
|
514
|
+
end
|
515
|
+
|
516
|
+
doc = Rexle.new([:macros, {}, '', *macros])
|
517
|
+
doc.root.xml pretty: true
|
518
|
+
|
519
|
+
end
|
304
520
|
|
305
521
|
def to_h()
|
306
522
|
|
@@ -308,17 +524,29 @@ class MacroDroid
|
|
308
524
|
|
309
525
|
end
|
310
526
|
|
311
|
-
|
527
|
+
def to_s()
|
528
|
+
@macros.map(&:to_s).join("\n\n")
|
529
|
+
end
|
312
530
|
|
313
531
|
end
|
314
532
|
|
315
533
|
class MacroObject
|
534
|
+
using ColouredText
|
535
|
+
|
536
|
+
attr_reader :type
|
537
|
+
attr_accessor :options
|
316
538
|
|
317
539
|
def initialize(h={})
|
318
540
|
|
319
541
|
@h = {constraint_list: [], is_or_condition: false,
|
320
542
|
is_disabled: false}.merge(h)
|
321
543
|
@list = []
|
544
|
+
|
545
|
+
# fetch the class name and convert from camelCase to snake_eyes
|
546
|
+
@type = self.class.to_s.sub(/Trigger|Action$/,'')\
|
547
|
+
.gsub(/\B[A-Z][a-z]/){|x| '_' + x.downcase}\
|
548
|
+
.gsub(/[a-z][A-Z]/){|x| x[0] + '_' + x[1].downcase}\
|
549
|
+
.downcase.to_sym
|
322
550
|
end
|
323
551
|
|
324
552
|
def to_h()
|
@@ -341,6 +569,13 @@ class MacroObject
|
|
341
569
|
|
342
570
|
protected
|
343
571
|
|
572
|
+
def filter(options, h)
|
573
|
+
|
574
|
+
(h.keys - options.keys).each {|key| h.delete key }
|
575
|
+
return h
|
576
|
+
|
577
|
+
end
|
578
|
+
|
344
579
|
def uuid()
|
345
580
|
UUID.new.generate
|
346
581
|
end
|
@@ -353,11 +588,19 @@ class Trigger < MacroObject
|
|
353
588
|
super({fakeIcon: 0}.merge(h))
|
354
589
|
@list << 'fakeIcon'
|
355
590
|
end
|
591
|
+
|
592
|
+
def match?(detail={}, model=nil)
|
356
593
|
|
357
|
-
|
594
|
+
# only match where the key exists in the trigger object
|
595
|
+
detail.select {|k,v| @h.include? k }.all? {|key,value| @h[key] == value}
|
596
|
+
|
597
|
+
end
|
358
598
|
|
599
|
+
end
|
359
600
|
|
360
601
|
|
602
|
+
# Category: Applications
|
603
|
+
#
|
361
604
|
class WebHookTrigger < Trigger
|
362
605
|
|
363
606
|
def initialize(h={})
|
@@ -372,6 +615,22 @@ class WebHookTrigger < Trigger
|
|
372
615
|
|
373
616
|
end
|
374
617
|
|
618
|
+
# Category: Applications
|
619
|
+
#
|
620
|
+
# Also known as Wifi State Change
|
621
|
+
#
|
622
|
+
# wifi_state options:
|
623
|
+
# 0 - Wifi Enabled
|
624
|
+
# 1 - Wifi Disabled
|
625
|
+
# 2 - Connected to network
|
626
|
+
# ssid_list options:
|
627
|
+
# ["Any Network"]
|
628
|
+
# ["some Wifi SSID"] - 1 or more SSID can be supplied
|
629
|
+
# 3 - Disconnected from network
|
630
|
+
# ssid_list options:
|
631
|
+
# ["Any Network"]
|
632
|
+
# ["some Wifi SSID"] - 1 or more SSID can be supplied
|
633
|
+
|
375
634
|
class WifiConnectionTrigger < Trigger
|
376
635
|
|
377
636
|
def initialize(h={})
|
@@ -387,6 +646,8 @@ class WifiConnectionTrigger < Trigger
|
|
387
646
|
|
388
647
|
end
|
389
648
|
|
649
|
+
# Category: Applications
|
650
|
+
#
|
390
651
|
class ApplicationInstalledRemovedTrigger < Trigger
|
391
652
|
|
392
653
|
def initialize(h={})
|
@@ -405,6 +666,8 @@ class ApplicationInstalledRemovedTrigger < Trigger
|
|
405
666
|
|
406
667
|
end
|
407
668
|
|
669
|
+
# Category: Applications
|
670
|
+
#
|
408
671
|
class ApplicationLaunchedTrigger < Trigger
|
409
672
|
|
410
673
|
def initialize(h={})
|
@@ -421,6 +684,8 @@ class ApplicationLaunchedTrigger < Trigger
|
|
421
684
|
|
422
685
|
end
|
423
686
|
|
687
|
+
# Category: Battery/Power
|
688
|
+
#
|
424
689
|
class BatteryLevelTrigger < Trigger
|
425
690
|
|
426
691
|
def initialize(h={})
|
@@ -437,6 +702,8 @@ class BatteryLevelTrigger < Trigger
|
|
437
702
|
|
438
703
|
end
|
439
704
|
|
705
|
+
# Category: Battery/Power
|
706
|
+
#
|
440
707
|
class BatteryTemperatureTrigger < Trigger
|
441
708
|
|
442
709
|
def initialize(h={})
|
@@ -453,6 +720,8 @@ class BatteryTemperatureTrigger < Trigger
|
|
453
720
|
|
454
721
|
end
|
455
722
|
|
723
|
+
# Category: Battery/Power
|
724
|
+
#
|
456
725
|
class PowerButtonToggleTrigger < Trigger
|
457
726
|
|
458
727
|
def initialize(h={})
|
@@ -467,6 +736,9 @@ class PowerButtonToggleTrigger < Trigger
|
|
467
736
|
|
468
737
|
end
|
469
738
|
|
739
|
+
|
740
|
+
# Category: Battery/Power
|
741
|
+
#
|
470
742
|
class ExternalPowerTrigger < Trigger
|
471
743
|
|
472
744
|
def initialize(h={})
|
@@ -484,6 +756,8 @@ class ExternalPowerTrigger < Trigger
|
|
484
756
|
|
485
757
|
end
|
486
758
|
|
759
|
+
# Category: Call/SMS
|
760
|
+
#
|
487
761
|
class CallActiveTrigger < Trigger
|
488
762
|
|
489
763
|
def initialize(h={})
|
@@ -500,6 +774,8 @@ class CallActiveTrigger < Trigger
|
|
500
774
|
|
501
775
|
end
|
502
776
|
|
777
|
+
# Category: Call/SMS
|
778
|
+
#
|
503
779
|
class IncomingCallTrigger < Trigger
|
504
780
|
|
505
781
|
def initialize(h={})
|
@@ -518,6 +794,8 @@ class IncomingCallTrigger < Trigger
|
|
518
794
|
|
519
795
|
end
|
520
796
|
|
797
|
+
# Category: Call/SMS
|
798
|
+
#
|
521
799
|
class OutgoingCallTrigger < Trigger
|
522
800
|
|
523
801
|
def initialize(h={})
|
@@ -536,6 +814,8 @@ class OutgoingCallTrigger < Trigger
|
|
536
814
|
|
537
815
|
end
|
538
816
|
|
817
|
+
# Category: Call/SMS
|
818
|
+
#
|
539
819
|
class CallEndedTrigger < Trigger
|
540
820
|
|
541
821
|
def initialize(h={})
|
@@ -554,6 +834,8 @@ class CallEndedTrigger < Trigger
|
|
554
834
|
|
555
835
|
end
|
556
836
|
|
837
|
+
# Category: Call/SMS
|
838
|
+
#
|
557
839
|
class CallMissedTrigger < Trigger
|
558
840
|
|
559
841
|
def initialize(h={})
|
@@ -568,6 +850,8 @@ class CallMissedTrigger < Trigger
|
|
568
850
|
|
569
851
|
end
|
570
852
|
|
853
|
+
# Category: Call/SMS
|
854
|
+
#
|
571
855
|
class IncomingSMSTrigger < Trigger
|
572
856
|
|
573
857
|
def initialize(h={})
|
@@ -590,6 +874,8 @@ class IncomingSMSTrigger < Trigger
|
|
590
874
|
|
591
875
|
end
|
592
876
|
|
877
|
+
# Category: Connectivity
|
878
|
+
#
|
593
879
|
class WebHookTrigger < Trigger
|
594
880
|
|
595
881
|
def initialize(h={})
|
@@ -604,6 +890,8 @@ class WebHookTrigger < Trigger
|
|
604
890
|
|
605
891
|
end
|
606
892
|
|
893
|
+
# Category: Connectivity
|
894
|
+
#
|
607
895
|
class WifiConnectionTrigger < Trigger
|
608
896
|
|
609
897
|
def initialize(h={})
|
@@ -619,6 +907,8 @@ class WifiConnectionTrigger < Trigger
|
|
619
907
|
|
620
908
|
end
|
621
909
|
|
910
|
+
# Category: Connectivity
|
911
|
+
#
|
622
912
|
class BluetoothTrigger < Trigger
|
623
913
|
|
624
914
|
def initialize(h={})
|
@@ -635,6 +925,8 @@ class BluetoothTrigger < Trigger
|
|
635
925
|
|
636
926
|
end
|
637
927
|
|
928
|
+
# Category: Connectivity
|
929
|
+
#
|
638
930
|
class HeadphonesTrigger < Trigger
|
639
931
|
|
640
932
|
def initialize(h={})
|
@@ -650,6 +942,8 @@ class HeadphonesTrigger < Trigger
|
|
650
942
|
|
651
943
|
end
|
652
944
|
|
945
|
+
# Category: Connectivity
|
946
|
+
#
|
653
947
|
class SignalOnOffTrigger < Trigger
|
654
948
|
|
655
949
|
def initialize(h={})
|
@@ -664,6 +958,8 @@ class SignalOnOffTrigger < Trigger
|
|
664
958
|
|
665
959
|
end
|
666
960
|
|
961
|
+
# Category: Connectivity
|
962
|
+
#
|
667
963
|
class UsbDeviceConnectionTrigger < Trigger
|
668
964
|
|
669
965
|
def initialize(h={})
|
@@ -678,22 +974,45 @@ class UsbDeviceConnectionTrigger < Trigger
|
|
678
974
|
|
679
975
|
end
|
680
976
|
|
977
|
+
# Category: Connectivity
|
978
|
+
#
|
979
|
+
# Also known as Wifi SSID Transition
|
980
|
+
#
|
981
|
+
# options:
|
982
|
+
# in_range: true | false
|
983
|
+
# wifi_cell_info: {display_name: "some Wifi SSID",
|
984
|
+
# ssid: "some Wifi SSID"} - 1 or more allowed
|
985
|
+
#
|
681
986
|
class WifiSSIDTrigger < Trigger
|
682
987
|
|
683
988
|
def initialize(h={})
|
684
989
|
|
685
990
|
options = {
|
686
|
-
wifi_cell_info_list: [{:
|
991
|
+
wifi_cell_info_list: [{:display_name=>"", :ssid=>""}],
|
687
992
|
ssid_list: [],
|
688
|
-
|
993
|
+
in_range: true
|
689
994
|
}
|
690
995
|
|
691
996
|
super(options.merge h)
|
692
997
|
|
693
998
|
end
|
999
|
+
|
1000
|
+
def to_h()
|
1001
|
+
|
1002
|
+
h = super()
|
1003
|
+
val = h[:m_inRange]
|
1004
|
+
|
1005
|
+
h[:m_InRange] = val
|
1006
|
+
h.delete :m_inRange
|
1007
|
+
|
1008
|
+
return h
|
1009
|
+
|
1010
|
+
end
|
694
1011
|
|
695
1012
|
end
|
696
1013
|
|
1014
|
+
# Category: Date/Time
|
1015
|
+
#
|
697
1016
|
class CalendarTrigger < Trigger
|
698
1017
|
|
699
1018
|
def initialize(h={})
|
@@ -718,15 +1037,21 @@ class CalendarTrigger < Trigger
|
|
718
1037
|
|
719
1038
|
end
|
720
1039
|
|
1040
|
+
# Category: Date/Time
|
1041
|
+
#
|
721
1042
|
class TimerTrigger < Trigger
|
1043
|
+
using ColouredText
|
1044
|
+
|
722
1045
|
|
723
1046
|
def initialize(h={})
|
1047
|
+
|
1048
|
+
puts 'TimerTrigger h: ' + h.inspect if $debug
|
724
1049
|
|
725
1050
|
if h[:days] then
|
726
1051
|
|
727
1052
|
days = [false] * 7
|
728
|
-
|
729
|
-
h[:days].split(/,
|
1053
|
+
|
1054
|
+
h[:days].split(/, */).each do |x|
|
730
1055
|
|
731
1056
|
r = Date::DAYNAMES.grep /#{x}/i
|
732
1057
|
i = Date::DAYNAMES.index(r.first)
|
@@ -735,7 +1060,6 @@ class TimerTrigger < Trigger
|
|
735
1060
|
end
|
736
1061
|
|
737
1062
|
h[:days_of_week] = days
|
738
|
-
h.delete :days
|
739
1063
|
|
740
1064
|
end
|
741
1065
|
|
@@ -743,24 +1067,58 @@ class TimerTrigger < Trigger
|
|
743
1067
|
|
744
1068
|
t = Time.parse(h[:time])
|
745
1069
|
h[:hour], h[:minute] = t.hour, t.min
|
746
|
-
h.delete :time
|
747
1070
|
|
748
1071
|
end
|
1072
|
+
|
1073
|
+
#puts ('h: ' + h.inspect).debug
|
749
1074
|
|
750
1075
|
options = {
|
751
1076
|
alarm_id: uuid(),
|
752
|
-
days_of_week: [false,
|
1077
|
+
days_of_week: [false, false, false, false, false, false, false],
|
753
1078
|
minute: 10,
|
754
1079
|
hour: 7,
|
755
1080
|
use_alarm: false
|
756
1081
|
}
|
1082
|
+
|
1083
|
+
super(options.merge filter(options,h))
|
757
1084
|
|
758
|
-
|
1085
|
+
end
|
1086
|
+
|
1087
|
+
def match?(detail={time: $env[:time]}, model=nil)
|
1088
|
+
|
1089
|
+
a = @h[:days_of_week]
|
1090
|
+
a.unshift a.pop
|
1091
|
+
|
1092
|
+
dow = a.map.with_index {|x, i| x ? i : nil }.compact.join(',')
|
1093
|
+
|
1094
|
+
s = "%s %s * * %s" % [@h[:minute], @h[:hour], dow]
|
1095
|
+
|
1096
|
+
if $debug then
|
1097
|
+
puts 's: ' + s.inspect
|
1098
|
+
puts 'detail: ' + detail.inspect
|
1099
|
+
puts '@h: ' + @h.inspect
|
1100
|
+
end
|
1101
|
+
|
1102
|
+
ChronicCron.new(s, detail[:time]).to_time == detail[:time]
|
1103
|
+
|
1104
|
+
end
|
1105
|
+
|
1106
|
+
def to_s()
|
1107
|
+
|
1108
|
+
dow = @h[:days_of_week]
|
759
1109
|
|
1110
|
+
a = Date::ABBR_DAYNAMES
|
1111
|
+
|
1112
|
+
time = Time.parse("%s:%s" % [@h[:hour], @h[:minute]]).strftime("%-H:%M%P")
|
1113
|
+
days = (a[1..-1] << a.first).zip(dow).select {|_,b| b}.map(&:first)
|
1114
|
+
|
1115
|
+
"at %s on %s" % [time, days.join(', ')]
|
760
1116
|
end
|
761
1117
|
|
762
1118
|
end
|
763
1119
|
|
1120
|
+
# Category: Date/Time
|
1121
|
+
#
|
764
1122
|
class StopwatchTrigger < Trigger
|
765
1123
|
|
766
1124
|
def initialize(h={})
|
@@ -776,6 +1134,13 @@ class StopwatchTrigger < Trigger
|
|
776
1134
|
|
777
1135
|
end
|
778
1136
|
|
1137
|
+
# Category: Date/Time
|
1138
|
+
#
|
1139
|
+
# Also known as Day of Week/Month
|
1140
|
+
#
|
1141
|
+
# month_of_year equal to 0 means it occurs every month
|
1142
|
+
# day_of_week starts with a Monday (value is 0)
|
1143
|
+
#
|
779
1144
|
class DayTrigger < Trigger
|
780
1145
|
|
781
1146
|
def initialize(h={})
|
@@ -797,6 +1162,10 @@ class DayTrigger < Trigger
|
|
797
1162
|
|
798
1163
|
end
|
799
1164
|
|
1165
|
+
# Category: Date/Time
|
1166
|
+
#
|
1167
|
+
# Regular Interval
|
1168
|
+
#
|
800
1169
|
class RegularIntervalTrigger < Trigger
|
801
1170
|
|
802
1171
|
def initialize(h={})
|
@@ -816,6 +1185,17 @@ class RegularIntervalTrigger < Trigger
|
|
816
1185
|
|
817
1186
|
end
|
818
1187
|
|
1188
|
+
# Category: Device Events
|
1189
|
+
#
|
1190
|
+
# Airplane Mode Changed
|
1191
|
+
#
|
1192
|
+
# options:
|
1193
|
+
# Airplane Mode Enabled
|
1194
|
+
# Airplane Mode Disabled
|
1195
|
+
#
|
1196
|
+
# shorthand example:
|
1197
|
+
# airplanemode: enabled
|
1198
|
+
#
|
819
1199
|
class AirplaneModeTrigger < Trigger
|
820
1200
|
|
821
1201
|
def initialize(h={})
|
@@ -830,6 +1210,8 @@ class AirplaneModeTrigger < Trigger
|
|
830
1210
|
|
831
1211
|
end
|
832
1212
|
|
1213
|
+
# Category: Device Events
|
1214
|
+
#
|
833
1215
|
class AutoSyncChangeTrigger < Trigger
|
834
1216
|
|
835
1217
|
def initialize(h={})
|
@@ -844,6 +1226,8 @@ class AutoSyncChangeTrigger < Trigger
|
|
844
1226
|
|
845
1227
|
end
|
846
1228
|
|
1229
|
+
# Category: Device Events
|
1230
|
+
#
|
847
1231
|
class DayDreamTrigger < Trigger
|
848
1232
|
|
849
1233
|
def initialize(h={})
|
@@ -858,6 +1242,8 @@ class DayDreamTrigger < Trigger
|
|
858
1242
|
|
859
1243
|
end
|
860
1244
|
|
1245
|
+
# Category: Device Events
|
1246
|
+
#
|
861
1247
|
class DockTrigger < Trigger
|
862
1248
|
|
863
1249
|
def initialize(h={})
|
@@ -872,6 +1258,8 @@ class DockTrigger < Trigger
|
|
872
1258
|
|
873
1259
|
end
|
874
1260
|
|
1261
|
+
# Category: Device Events
|
1262
|
+
#
|
875
1263
|
class GPSEnabledTrigger < Trigger
|
876
1264
|
|
877
1265
|
def initialize(h={})
|
@@ -886,6 +1274,8 @@ class GPSEnabledTrigger < Trigger
|
|
886
1274
|
|
887
1275
|
end
|
888
1276
|
|
1277
|
+
# Category: Device Events
|
1278
|
+
#
|
889
1279
|
class MusicPlayingTrigger < Trigger
|
890
1280
|
|
891
1281
|
def initialize(h={})
|
@@ -900,19 +1290,9 @@ class MusicPlayingTrigger < Trigger
|
|
900
1290
|
|
901
1291
|
end
|
902
1292
|
|
903
|
-
class DeviceUnlockedTrigger < Trigger
|
904
|
-
|
905
|
-
def initialize(h={})
|
906
|
-
|
907
|
-
options = {
|
908
|
-
}
|
909
|
-
|
910
|
-
super(options.merge h)
|
911
|
-
|
912
|
-
end
|
913
|
-
|
914
|
-
end
|
915
1293
|
|
1294
|
+
# Category: Device Events
|
1295
|
+
#
|
916
1296
|
class DeviceUnlockedTrigger < Trigger
|
917
1297
|
|
918
1298
|
def initialize(h={})
|
@@ -926,6 +1306,8 @@ class DeviceUnlockedTrigger < Trigger
|
|
926
1306
|
|
927
1307
|
end
|
928
1308
|
|
1309
|
+
# Category: Device Events
|
1310
|
+
#
|
929
1311
|
class AutoRotateChangeTrigger < Trigger
|
930
1312
|
|
931
1313
|
def initialize(h={})
|
@@ -940,6 +1322,8 @@ class AutoRotateChangeTrigger < Trigger
|
|
940
1322
|
|
941
1323
|
end
|
942
1324
|
|
1325
|
+
# Category: Device Events
|
1326
|
+
#
|
943
1327
|
class ClipboardChangeTrigger < Trigger
|
944
1328
|
|
945
1329
|
def initialize(h={})
|
@@ -955,6 +1339,8 @@ class ClipboardChangeTrigger < Trigger
|
|
955
1339
|
|
956
1340
|
end
|
957
1341
|
|
1342
|
+
# Category: Device Events
|
1343
|
+
#
|
958
1344
|
class BootTrigger < Trigger
|
959
1345
|
|
960
1346
|
def initialize(h={})
|
@@ -968,19 +1354,8 @@ class BootTrigger < Trigger
|
|
968
1354
|
|
969
1355
|
end
|
970
1356
|
|
971
|
-
|
972
|
-
|
973
|
-
def initialize(h={})
|
974
|
-
|
975
|
-
options = {
|
976
|
-
}
|
977
|
-
|
978
|
-
super(options.merge h)
|
979
|
-
|
980
|
-
end
|
981
|
-
|
982
|
-
end
|
983
|
-
|
1357
|
+
# Category: Device Events
|
1358
|
+
#
|
984
1359
|
class IntentReceivedTrigger < Trigger
|
985
1360
|
|
986
1361
|
def initialize(h={})
|
@@ -999,6 +1374,8 @@ class IntentReceivedTrigger < Trigger
|
|
999
1374
|
|
1000
1375
|
end
|
1001
1376
|
|
1377
|
+
# Category: Device Events
|
1378
|
+
#
|
1002
1379
|
class NotificationTrigger < Trigger
|
1003
1380
|
|
1004
1381
|
def initialize(h={})
|
@@ -1023,6 +1400,8 @@ class NotificationTrigger < Trigger
|
|
1023
1400
|
|
1024
1401
|
end
|
1025
1402
|
|
1403
|
+
# Category: Device Events
|
1404
|
+
#
|
1026
1405
|
class ScreenOnOffTrigger < Trigger
|
1027
1406
|
|
1028
1407
|
def initialize(h={})
|
@@ -1037,6 +1416,8 @@ class ScreenOnOffTrigger < Trigger
|
|
1037
1416
|
|
1038
1417
|
end
|
1039
1418
|
|
1419
|
+
# Category: Device Events
|
1420
|
+
#
|
1040
1421
|
class SilentModeTrigger < Trigger
|
1041
1422
|
|
1042
1423
|
def initialize(h={})
|
@@ -1051,6 +1432,8 @@ class SilentModeTrigger < Trigger
|
|
1051
1432
|
|
1052
1433
|
end
|
1053
1434
|
|
1435
|
+
# Category: Location
|
1436
|
+
#
|
1054
1437
|
class WeatherTrigger < Trigger
|
1055
1438
|
|
1056
1439
|
def initialize(h={})
|
@@ -1074,6 +1457,8 @@ class WeatherTrigger < Trigger
|
|
1074
1457
|
|
1075
1458
|
end
|
1076
1459
|
|
1460
|
+
# Category: Location
|
1461
|
+
#
|
1077
1462
|
class GeofenceTrigger < Trigger
|
1078
1463
|
|
1079
1464
|
def initialize(h={})
|
@@ -1092,6 +1477,8 @@ class GeofenceTrigger < Trigger
|
|
1092
1477
|
|
1093
1478
|
end
|
1094
1479
|
|
1480
|
+
# Category: Location
|
1481
|
+
#
|
1095
1482
|
class SunriseSunsetTrigger < Trigger
|
1096
1483
|
|
1097
1484
|
def initialize(h={})
|
@@ -1107,7 +1494,8 @@ class SunriseSunsetTrigger < Trigger
|
|
1107
1494
|
|
1108
1495
|
end
|
1109
1496
|
|
1110
|
-
|
1497
|
+
# Category: Sensors
|
1498
|
+
#
|
1111
1499
|
class ActivityRecognitionTrigger < Trigger
|
1112
1500
|
|
1113
1501
|
def initialize(h={})
|
@@ -1123,7 +1511,8 @@ class ActivityRecognitionTrigger < Trigger
|
|
1123
1511
|
|
1124
1512
|
end
|
1125
1513
|
|
1126
|
-
|
1514
|
+
# Category: Sensors
|
1515
|
+
#
|
1127
1516
|
class ProximityTrigger < Trigger
|
1128
1517
|
|
1129
1518
|
def initialize(h={})
|
@@ -1139,6 +1528,8 @@ class ProximityTrigger < Trigger
|
|
1139
1528
|
|
1140
1529
|
end
|
1141
1530
|
|
1531
|
+
# Category: Sensors
|
1532
|
+
#
|
1142
1533
|
class ShakeDeviceTrigger < Trigger
|
1143
1534
|
|
1144
1535
|
def initialize(h={})
|
@@ -1152,6 +1543,8 @@ class ShakeDeviceTrigger < Trigger
|
|
1152
1543
|
|
1153
1544
|
end
|
1154
1545
|
|
1546
|
+
# Category: Sensors
|
1547
|
+
#
|
1155
1548
|
class FlipDeviceTrigger < Trigger
|
1156
1549
|
|
1157
1550
|
def initialize(h={})
|
@@ -1168,6 +1561,8 @@ class FlipDeviceTrigger < Trigger
|
|
1168
1561
|
|
1169
1562
|
end
|
1170
1563
|
|
1564
|
+
# Category: Sensors
|
1565
|
+
#
|
1171
1566
|
class OrientationTrigger < Trigger
|
1172
1567
|
|
1173
1568
|
def initialize(h={})
|
@@ -1183,6 +1578,8 @@ class OrientationTrigger < Trigger
|
|
1183
1578
|
|
1184
1579
|
end
|
1185
1580
|
|
1581
|
+
# Category: User Input
|
1582
|
+
#
|
1186
1583
|
class FloatingButtonTrigger < Trigger
|
1187
1584
|
|
1188
1585
|
def initialize(h={})
|
@@ -1206,6 +1603,8 @@ class FloatingButtonTrigger < Trigger
|
|
1206
1603
|
|
1207
1604
|
end
|
1208
1605
|
|
1606
|
+
# Category: User Input
|
1607
|
+
#
|
1209
1608
|
class ShortcutTrigger < Trigger
|
1210
1609
|
|
1211
1610
|
def initialize(h={})
|
@@ -1219,6 +1618,8 @@ class ShortcutTrigger < Trigger
|
|
1219
1618
|
|
1220
1619
|
end
|
1221
1620
|
|
1621
|
+
# Category: User Input
|
1622
|
+
#
|
1222
1623
|
class VolumeButtonTrigger < Trigger
|
1223
1624
|
|
1224
1625
|
def initialize(h={})
|
@@ -1236,6 +1637,8 @@ class VolumeButtonTrigger < Trigger
|
|
1236
1637
|
|
1237
1638
|
end
|
1238
1639
|
|
1640
|
+
# Category: User Input
|
1641
|
+
#
|
1239
1642
|
class MediaButtonPressedTrigger < Trigger
|
1240
1643
|
|
1241
1644
|
def initialize(h={})
|
@@ -1251,6 +1654,8 @@ class MediaButtonPressedTrigger < Trigger
|
|
1251
1654
|
|
1252
1655
|
end
|
1253
1656
|
|
1657
|
+
# Category: User Input
|
1658
|
+
#
|
1254
1659
|
class SwipeTrigger < Trigger
|
1255
1660
|
|
1256
1661
|
def initialize(h={})
|
@@ -1273,14 +1678,30 @@ class Action < MacroObject
|
|
1273
1678
|
def initialize(h={})
|
1274
1679
|
super(h)
|
1275
1680
|
end
|
1681
|
+
|
1682
|
+
def invoke(s='')
|
1683
|
+
"%s/%s: %s" % [@group, @type, s]
|
1684
|
+
end
|
1276
1685
|
|
1277
1686
|
end
|
1278
1687
|
|
1279
1688
|
|
1689
|
+
class LocationAction < Action
|
1690
|
+
|
1691
|
+
def initialize(h={})
|
1692
|
+
super(h)
|
1693
|
+
@group = 'location'
|
1694
|
+
end
|
1695
|
+
|
1696
|
+
end
|
1280
1697
|
|
1281
|
-
|
1698
|
+
# Category: Location
|
1699
|
+
#
|
1700
|
+
class ShareLocationAction < LocationAction
|
1282
1701
|
|
1283
1702
|
def initialize(h={})
|
1703
|
+
|
1704
|
+
super()
|
1284
1705
|
|
1285
1706
|
options = {
|
1286
1707
|
email: '',
|
@@ -1298,39 +1719,19 @@ class ShareLocationAction < Action
|
|
1298
1719
|
|
1299
1720
|
end
|
1300
1721
|
|
1301
|
-
class UDPCommandAction < Action
|
1302
|
-
|
1303
|
-
def initialize(h={})
|
1304
|
-
|
1305
|
-
options = {
|
1306
|
-
destination: '',
|
1307
|
-
message: '',
|
1308
|
-
port: 1024
|
1309
|
-
}
|
1310
|
-
|
1311
|
-
super(options.merge h)
|
1312
|
-
|
1313
|
-
end
|
1314
|
-
|
1315
|
-
end
|
1316
|
-
|
1317
|
-
class UDPCommandAction < Action
|
1318
1722
|
|
1723
|
+
class ApplicationAction < Action
|
1724
|
+
|
1319
1725
|
def initialize(h={})
|
1320
|
-
|
1321
|
-
|
1322
|
-
destination: '',
|
1323
|
-
message: '',
|
1324
|
-
port: 1024
|
1325
|
-
}
|
1326
|
-
|
1327
|
-
super(options.merge h)
|
1328
|
-
|
1726
|
+
super(h)
|
1727
|
+
@group = 'application'
|
1329
1728
|
end
|
1330
|
-
|
1729
|
+
|
1331
1730
|
end
|
1332
1731
|
|
1333
|
-
|
1732
|
+
# Category: Applications
|
1733
|
+
#
|
1734
|
+
class LaunchActivityAction < ApplicationAction
|
1334
1735
|
|
1335
1736
|
def initialize(h={})
|
1336
1737
|
|
@@ -1347,7 +1748,9 @@ class LaunchActivityAction < Action
|
|
1347
1748
|
|
1348
1749
|
end
|
1349
1750
|
|
1350
|
-
|
1751
|
+
# Category: Applications
|
1752
|
+
#
|
1753
|
+
class KillBackgroundAppAction < ApplicationAction
|
1351
1754
|
|
1352
1755
|
def initialize(h={})
|
1353
1756
|
|
@@ -1362,7 +1765,9 @@ class KillBackgroundAppAction < Action
|
|
1362
1765
|
|
1363
1766
|
end
|
1364
1767
|
|
1365
|
-
|
1768
|
+
# Category: Applications
|
1769
|
+
#
|
1770
|
+
class OpenWebPageAction < ApplicationAction
|
1366
1771
|
|
1367
1772
|
def initialize(h={})
|
1368
1773
|
|
@@ -1380,7 +1785,19 @@ class OpenWebPageAction < Action
|
|
1380
1785
|
|
1381
1786
|
end
|
1382
1787
|
|
1383
|
-
|
1788
|
+
|
1789
|
+
class CameraAction < Action
|
1790
|
+
|
1791
|
+
def initialize(h={})
|
1792
|
+
super(h)
|
1793
|
+
@group = 'camera'
|
1794
|
+
end
|
1795
|
+
|
1796
|
+
end
|
1797
|
+
|
1798
|
+
# Category: Camera/Photo
|
1799
|
+
#
|
1800
|
+
class UploadPhotoAction < CameraAction
|
1384
1801
|
|
1385
1802
|
def initialize(h={})
|
1386
1803
|
|
@@ -1395,7 +1812,9 @@ class UploadPhotoAction < Action
|
|
1395
1812
|
|
1396
1813
|
end
|
1397
1814
|
|
1398
|
-
|
1815
|
+
# Category: Camera/Photo
|
1816
|
+
#
|
1817
|
+
class TakePictureAction < CameraAction
|
1399
1818
|
|
1400
1819
|
def initialize(h={})
|
1401
1820
|
|
@@ -1413,7 +1832,19 @@ class TakePictureAction < Action
|
|
1413
1832
|
|
1414
1833
|
end
|
1415
1834
|
|
1416
|
-
|
1835
|
+
|
1836
|
+
class ConnectivityAction < Action
|
1837
|
+
|
1838
|
+
def initialize(h={})
|
1839
|
+
super(h)
|
1840
|
+
@group = 'connectivity'
|
1841
|
+
end
|
1842
|
+
|
1843
|
+
end
|
1844
|
+
|
1845
|
+
# Category: Connectivity
|
1846
|
+
#
|
1847
|
+
class SetWifiAction < ConnectivityAction
|
1417
1848
|
|
1418
1849
|
def initialize(h={})
|
1419
1850
|
|
@@ -1429,7 +1860,9 @@ class SetWifiAction < Action
|
|
1429
1860
|
|
1430
1861
|
end
|
1431
1862
|
|
1432
|
-
|
1863
|
+
# Category: Connectivity
|
1864
|
+
#
|
1865
|
+
class SetBluetoothAction < ConnectivityAction
|
1433
1866
|
|
1434
1867
|
def initialize(h={})
|
1435
1868
|
|
@@ -1444,7 +1877,9 @@ class SetBluetoothAction < Action
|
|
1444
1877
|
|
1445
1878
|
end
|
1446
1879
|
|
1447
|
-
|
1880
|
+
# Category: Connectivity
|
1881
|
+
#
|
1882
|
+
class SetBluetoothAction < ConnectivityAction
|
1448
1883
|
|
1449
1884
|
def initialize(h={})
|
1450
1885
|
|
@@ -1459,7 +1894,9 @@ class SetBluetoothAction < Action
|
|
1459
1894
|
|
1460
1895
|
end
|
1461
1896
|
|
1462
|
-
|
1897
|
+
# Category: Connectivity
|
1898
|
+
#
|
1899
|
+
class SendIntentAction < ConnectivityAction
|
1463
1900
|
|
1464
1901
|
def initialize(h={})
|
1465
1902
|
|
@@ -1485,7 +1922,19 @@ class SendIntentAction < Action
|
|
1485
1922
|
|
1486
1923
|
end
|
1487
1924
|
|
1488
|
-
|
1925
|
+
|
1926
|
+
class DateTimeAction < Action
|
1927
|
+
|
1928
|
+
def initialize(h={})
|
1929
|
+
super(h)
|
1930
|
+
@group = 'datetime'
|
1931
|
+
end
|
1932
|
+
|
1933
|
+
end
|
1934
|
+
|
1935
|
+
# Category: Date/Time
|
1936
|
+
#
|
1937
|
+
class SetAlarmClockAction < DateTimeAction
|
1489
1938
|
|
1490
1939
|
def initialize(h={})
|
1491
1940
|
|
@@ -1508,7 +1957,9 @@ class SetAlarmClockAction < Action
|
|
1508
1957
|
|
1509
1958
|
end
|
1510
1959
|
|
1511
|
-
|
1960
|
+
# Category: Date/Time
|
1961
|
+
#
|
1962
|
+
class StopWatchAction < DateTimeAction
|
1512
1963
|
|
1513
1964
|
def initialize(h={})
|
1514
1965
|
|
@@ -1523,7 +1974,9 @@ class StopWatchAction < Action
|
|
1523
1974
|
|
1524
1975
|
end
|
1525
1976
|
|
1526
|
-
|
1977
|
+
# Category: Date/Time
|
1978
|
+
#
|
1979
|
+
class SayTimeAction < DateTimeAction
|
1527
1980
|
|
1528
1981
|
def initialize(h={})
|
1529
1982
|
|
@@ -1537,7 +1990,19 @@ class SayTimeAction < Action
|
|
1537
1990
|
|
1538
1991
|
end
|
1539
1992
|
|
1540
|
-
|
1993
|
+
|
1994
|
+
class DeviceAction < Action
|
1995
|
+
|
1996
|
+
def initialize(h={})
|
1997
|
+
super(h)
|
1998
|
+
@group = 'device'
|
1999
|
+
end
|
2000
|
+
|
2001
|
+
end
|
2002
|
+
|
2003
|
+
# Category: Device Actions
|
2004
|
+
#
|
2005
|
+
class AndroidShortcutsAction < DeviceAction
|
1541
2006
|
|
1542
2007
|
def initialize(h={})
|
1543
2008
|
|
@@ -1551,7 +2016,9 @@ class AndroidShortcutsAction < Action
|
|
1551
2016
|
|
1552
2017
|
end
|
1553
2018
|
|
1554
|
-
|
2019
|
+
# Category: Device Actions
|
2020
|
+
#
|
2021
|
+
class ClipboardAction < DeviceAction
|
1555
2022
|
|
1556
2023
|
def initialize(h={})
|
1557
2024
|
|
@@ -1565,7 +2032,9 @@ class ClipboardAction < Action
|
|
1565
2032
|
|
1566
2033
|
end
|
1567
2034
|
|
1568
|
-
|
2035
|
+
# Category: Device Actions
|
2036
|
+
#
|
2037
|
+
class PressBackAction < DeviceAction
|
1569
2038
|
|
1570
2039
|
def initialize(h={})
|
1571
2040
|
|
@@ -1578,7 +2047,9 @@ class PressBackAction < Action
|
|
1578
2047
|
|
1579
2048
|
end
|
1580
2049
|
|
1581
|
-
|
2050
|
+
# Category: Device Actions
|
2051
|
+
#
|
2052
|
+
class SpeakTextAction < DeviceAction
|
1582
2053
|
|
1583
2054
|
def initialize(h={})
|
1584
2055
|
|
@@ -1599,7 +2070,9 @@ class SpeakTextAction < Action
|
|
1599
2070
|
|
1600
2071
|
end
|
1601
2072
|
|
1602
|
-
|
2073
|
+
# Category: Device Actions
|
2074
|
+
#
|
2075
|
+
class UIInteractionAction < DeviceAction
|
1603
2076
|
|
1604
2077
|
def initialize(h={})
|
1605
2078
|
|
@@ -1614,7 +2087,9 @@ class UIInteractionAction < Action
|
|
1614
2087
|
|
1615
2088
|
end
|
1616
2089
|
|
1617
|
-
|
2090
|
+
# Category: Device Actions
|
2091
|
+
#
|
2092
|
+
class VoiceSearchAction < DeviceAction
|
1618
2093
|
|
1619
2094
|
def initialize(h={})
|
1620
2095
|
|
@@ -1627,7 +2102,19 @@ class VoiceSearchAction < Action
|
|
1627
2102
|
|
1628
2103
|
end
|
1629
2104
|
|
1630
|
-
|
2105
|
+
|
2106
|
+
class DeviceSettingsAction < Action
|
2107
|
+
|
2108
|
+
def initialize(h={})
|
2109
|
+
super(h)
|
2110
|
+
@group = 'devicesettings'
|
2111
|
+
end
|
2112
|
+
|
2113
|
+
end
|
2114
|
+
|
2115
|
+
# Category: Device Settings
|
2116
|
+
#
|
2117
|
+
class ExpandCollapseStatusBarAction < DeviceSettingsAction
|
1631
2118
|
|
1632
2119
|
def initialize(h={})
|
1633
2120
|
|
@@ -1641,7 +2128,9 @@ class ExpandCollapseStatusBarAction < Action
|
|
1641
2128
|
|
1642
2129
|
end
|
1643
2130
|
|
1644
|
-
|
2131
|
+
# Category: Device Settings
|
2132
|
+
#
|
2133
|
+
class LaunchHomeScreenAction < DeviceSettingsAction
|
1645
2134
|
|
1646
2135
|
def initialize(h={})
|
1647
2136
|
|
@@ -1654,7 +2143,9 @@ class LaunchHomeScreenAction < Action
|
|
1654
2143
|
|
1655
2144
|
end
|
1656
2145
|
|
1657
|
-
|
2146
|
+
# Category: Device Settings
|
2147
|
+
#
|
2148
|
+
class CameraFlashLightAction < DeviceSettingsAction
|
1658
2149
|
|
1659
2150
|
def initialize(h={})
|
1660
2151
|
|
@@ -1669,7 +2160,9 @@ class CameraFlashLightAction < Action
|
|
1669
2160
|
|
1670
2161
|
end
|
1671
2162
|
|
1672
|
-
|
2163
|
+
# Category: Device Settings
|
2164
|
+
#
|
2165
|
+
class VibrateAction < DeviceSettingsAction
|
1673
2166
|
|
1674
2167
|
def initialize(h={})
|
1675
2168
|
|
@@ -1683,7 +2176,9 @@ class VibrateAction < Action
|
|
1683
2176
|
|
1684
2177
|
end
|
1685
2178
|
|
1686
|
-
|
2179
|
+
# Category: Device Settings
|
2180
|
+
#
|
2181
|
+
class SetAutoRotateAction < DeviceSettingsAction
|
1687
2182
|
|
1688
2183
|
def initialize(h={})
|
1689
2184
|
|
@@ -1697,7 +2192,9 @@ class SetAutoRotateAction < Action
|
|
1697
2192
|
|
1698
2193
|
end
|
1699
2194
|
|
1700
|
-
|
2195
|
+
# Category: Device Settings
|
2196
|
+
#
|
2197
|
+
class DayDreamAction < DeviceSettingsAction
|
1701
2198
|
|
1702
2199
|
def initialize(h={})
|
1703
2200
|
|
@@ -1710,7 +2207,9 @@ class DayDreamAction < Action
|
|
1710
2207
|
|
1711
2208
|
end
|
1712
2209
|
|
1713
|
-
|
2210
|
+
# Category: Device Settings
|
2211
|
+
#
|
2212
|
+
class SetKeyboardAction < DeviceSettingsAction
|
1714
2213
|
|
1715
2214
|
def initialize(h={})
|
1716
2215
|
|
@@ -1723,7 +2222,9 @@ class SetKeyboardAction < Action
|
|
1723
2222
|
|
1724
2223
|
end
|
1725
2224
|
|
1726
|
-
|
2225
|
+
# Category: Device Settings
|
2226
|
+
#
|
2227
|
+
class SetKeyguardAction < DeviceSettingsAction
|
1727
2228
|
|
1728
2229
|
def initialize(h={})
|
1729
2230
|
|
@@ -1737,7 +2238,9 @@ class SetKeyguardAction < Action
|
|
1737
2238
|
|
1738
2239
|
end
|
1739
2240
|
|
1740
|
-
|
2241
|
+
# Category: Device Settings
|
2242
|
+
#
|
2243
|
+
class CarModeAction < DeviceSettingsAction
|
1741
2244
|
|
1742
2245
|
def initialize(h={})
|
1743
2246
|
|
@@ -1751,7 +2254,9 @@ class CarModeAction < Action
|
|
1751
2254
|
|
1752
2255
|
end
|
1753
2256
|
|
1754
|
-
|
2257
|
+
# Category: Device Settings
|
2258
|
+
#
|
2259
|
+
class ChangeKeyboardAction < DeviceSettingsAction
|
1755
2260
|
|
1756
2261
|
def initialize(h={})
|
1757
2262
|
|
@@ -1766,7 +2271,9 @@ class ChangeKeyboardAction < Action
|
|
1766
2271
|
|
1767
2272
|
end
|
1768
2273
|
|
1769
|
-
|
2274
|
+
# Category: Device Settings
|
2275
|
+
#
|
2276
|
+
class SetWallpaperAction < DeviceSettingsAction
|
1770
2277
|
|
1771
2278
|
def initialize(h={})
|
1772
2279
|
|
@@ -1785,7 +2292,18 @@ class SetWallpaperAction < Action
|
|
1785
2292
|
|
1786
2293
|
end
|
1787
2294
|
|
1788
|
-
class
|
2295
|
+
class FileAction < Action
|
2296
|
+
|
2297
|
+
def initialize(h={})
|
2298
|
+
super(h)
|
2299
|
+
@group = 'file'
|
2300
|
+
end
|
2301
|
+
|
2302
|
+
end
|
2303
|
+
|
2304
|
+
# Category: Files
|
2305
|
+
#
|
2306
|
+
class OpenFileAction < FileAction
|
1789
2307
|
|
1790
2308
|
def initialize(h={})
|
1791
2309
|
|
@@ -1802,7 +2320,19 @@ class OpenFileAction < Action
|
|
1802
2320
|
|
1803
2321
|
end
|
1804
2322
|
|
1805
|
-
|
2323
|
+
|
2324
|
+
class LocationAction < Action
|
2325
|
+
|
2326
|
+
def initialize(h={})
|
2327
|
+
super(h)
|
2328
|
+
@group = 'location'
|
2329
|
+
end
|
2330
|
+
|
2331
|
+
end
|
2332
|
+
|
2333
|
+
# Category: Location
|
2334
|
+
#
|
2335
|
+
class ForceLocationUpdateAction < LocationAction
|
1806
2336
|
|
1807
2337
|
def initialize(h={})
|
1808
2338
|
|
@@ -1815,7 +2345,9 @@ class ForceLocationUpdateAction < Action
|
|
1815
2345
|
|
1816
2346
|
end
|
1817
2347
|
|
1818
|
-
|
2348
|
+
# Category: Location
|
2349
|
+
#
|
2350
|
+
class ShareLocationAction < LocationAction
|
1819
2351
|
|
1820
2352
|
def initialize(h={})
|
1821
2353
|
|
@@ -1833,7 +2365,9 @@ class ShareLocationAction < Action
|
|
1833
2365
|
|
1834
2366
|
end
|
1835
2367
|
|
1836
|
-
|
2368
|
+
# Category: Location
|
2369
|
+
#
|
2370
|
+
class SetLocationUpdateRateAction < LocationAction
|
1837
2371
|
|
1838
2372
|
def initialize(h={})
|
1839
2373
|
|
@@ -1848,7 +2382,18 @@ class SetLocationUpdateRateAction < Action
|
|
1848
2382
|
|
1849
2383
|
end
|
1850
2384
|
|
1851
|
-
class
|
2385
|
+
class LoggingAction < Action
|
2386
|
+
|
2387
|
+
def initialize(h={})
|
2388
|
+
super(h)
|
2389
|
+
@group = 'logging'
|
2390
|
+
end
|
2391
|
+
|
2392
|
+
end
|
2393
|
+
|
2394
|
+
# Category: Logging
|
2395
|
+
#
|
2396
|
+
class AddCalendarEntryAction < LoggingAction
|
1852
2397
|
|
1853
2398
|
def initialize(h={})
|
1854
2399
|
|
@@ -1875,7 +2420,9 @@ class AddCalendarEntryAction < Action
|
|
1875
2420
|
|
1876
2421
|
end
|
1877
2422
|
|
1878
|
-
|
2423
|
+
# Category: Logging
|
2424
|
+
#
|
2425
|
+
class LogAction < LoggingAction
|
1879
2426
|
|
1880
2427
|
def initialize(h={})
|
1881
2428
|
|
@@ -1890,7 +2437,9 @@ class LogAction < Action
|
|
1890
2437
|
|
1891
2438
|
end
|
1892
2439
|
|
1893
|
-
|
2440
|
+
# Category: Logging
|
2441
|
+
#
|
2442
|
+
class ClearLogAction < LoggingAction
|
1894
2443
|
|
1895
2444
|
def initialize(h={})
|
1896
2445
|
|
@@ -1904,24 +2453,18 @@ class ClearLogAction < Action
|
|
1904
2453
|
|
1905
2454
|
end
|
1906
2455
|
|
1907
|
-
class
|
1908
|
-
|
2456
|
+
class MediaAction < Action
|
2457
|
+
|
1909
2458
|
def initialize(h={})
|
1910
|
-
|
1911
|
-
|
1912
|
-
path: '',
|
1913
|
-
record_time_string: 'Until Cancelled',
|
1914
|
-
recording_format: 0,
|
1915
|
-
seconds_to_record_for: -1
|
1916
|
-
}
|
1917
|
-
|
1918
|
-
super(options.merge h)
|
1919
|
-
|
2459
|
+
super(h)
|
2460
|
+
@group = 'media'
|
1920
2461
|
end
|
1921
|
-
|
2462
|
+
|
1922
2463
|
end
|
1923
2464
|
|
1924
|
-
|
2465
|
+
# Category: Media
|
2466
|
+
#
|
2467
|
+
class RecordMicrophoneAction < MediaAction
|
1925
2468
|
|
1926
2469
|
def initialize(h={})
|
1927
2470
|
|
@@ -1938,7 +2481,9 @@ class RecordMicrophoneAction < Action
|
|
1938
2481
|
|
1939
2482
|
end
|
1940
2483
|
|
1941
|
-
|
2484
|
+
# Category: Media
|
2485
|
+
#
|
2486
|
+
class PlaySoundAction < MediaAction
|
1942
2487
|
|
1943
2488
|
def initialize(h={})
|
1944
2489
|
|
@@ -1954,7 +2499,18 @@ class PlaySoundAction < Action
|
|
1954
2499
|
end
|
1955
2500
|
|
1956
2501
|
|
1957
|
-
class
|
2502
|
+
class MessagingAction < Action
|
2503
|
+
|
2504
|
+
def initialize(h={})
|
2505
|
+
super(h)
|
2506
|
+
@group = 'messaging'
|
2507
|
+
end
|
2508
|
+
|
2509
|
+
end
|
2510
|
+
|
2511
|
+
# Category: Messaging
|
2512
|
+
#
|
2513
|
+
class SendEmailAction < MessagingAction
|
1958
2514
|
|
1959
2515
|
def initialize(h={})
|
1960
2516
|
|
@@ -1974,7 +2530,9 @@ class SendEmailAction < Action
|
|
1974
2530
|
|
1975
2531
|
end
|
1976
2532
|
|
1977
|
-
|
2533
|
+
# Category: Messaging
|
2534
|
+
#
|
2535
|
+
class SendSMSAction < MessagingAction
|
1978
2536
|
|
1979
2537
|
def initialize(h={})
|
1980
2538
|
|
@@ -1993,7 +2551,9 @@ class SendSMSAction < Action
|
|
1993
2551
|
|
1994
2552
|
end
|
1995
2553
|
|
1996
|
-
|
2554
|
+
# Category: Messaging
|
2555
|
+
#
|
2556
|
+
class UDPCommandAction < MessagingAction
|
1997
2557
|
|
1998
2558
|
def initialize(h={})
|
1999
2559
|
|
@@ -2009,7 +2569,19 @@ class UDPCommandAction < Action
|
|
2009
2569
|
|
2010
2570
|
end
|
2011
2571
|
|
2012
|
-
|
2572
|
+
|
2573
|
+
class NotificationsAction < Action
|
2574
|
+
|
2575
|
+
def initialize(h={})
|
2576
|
+
super(h)
|
2577
|
+
@group = 'notifications'
|
2578
|
+
end
|
2579
|
+
|
2580
|
+
end
|
2581
|
+
|
2582
|
+
# Category: Notifications
|
2583
|
+
#
|
2584
|
+
class ClearNotificationsAction < NotificationsAction
|
2013
2585
|
|
2014
2586
|
def initialize(h={})
|
2015
2587
|
|
@@ -2031,7 +2603,9 @@ class ClearNotificationsAction < Action
|
|
2031
2603
|
|
2032
2604
|
end
|
2033
2605
|
|
2034
|
-
|
2606
|
+
# Category: Notifications
|
2607
|
+
#
|
2608
|
+
class MessageDialogAction < NotificationsAction
|
2035
2609
|
|
2036
2610
|
def initialize(h={})
|
2037
2611
|
|
@@ -2056,7 +2630,9 @@ class MessageDialogAction < Action
|
|
2056
2630
|
|
2057
2631
|
end
|
2058
2632
|
|
2059
|
-
|
2633
|
+
# Category: Notifications
|
2634
|
+
#
|
2635
|
+
class AllowLEDNotificationLightAction < NotificationsAction
|
2060
2636
|
|
2061
2637
|
def initialize(h={})
|
2062
2638
|
|
@@ -2070,7 +2646,9 @@ class AllowLEDNotificationLightAction < Action
|
|
2070
2646
|
|
2071
2647
|
end
|
2072
2648
|
|
2073
|
-
|
2649
|
+
# Category: Notifications
|
2650
|
+
#
|
2651
|
+
class SetNotificationSoundAction < NotificationsAction
|
2074
2652
|
|
2075
2653
|
def initialize(h={})
|
2076
2654
|
|
@@ -2084,7 +2662,9 @@ class SetNotificationSoundAction < Action
|
|
2084
2662
|
|
2085
2663
|
end
|
2086
2664
|
|
2087
|
-
|
2665
|
+
# Category: Notifications
|
2666
|
+
#
|
2667
|
+
class SetNotificationSoundAction < NotificationsAction
|
2088
2668
|
|
2089
2669
|
def initialize(h={})
|
2090
2670
|
|
@@ -2098,7 +2678,9 @@ class SetNotificationSoundAction < Action
|
|
2098
2678
|
|
2099
2679
|
end
|
2100
2680
|
|
2101
|
-
|
2681
|
+
# Category: Notifications
|
2682
|
+
#
|
2683
|
+
class SetNotificationSoundAction < NotificationsAction
|
2102
2684
|
|
2103
2685
|
def initialize(h={})
|
2104
2686
|
|
@@ -2112,7 +2694,9 @@ class SetNotificationSoundAction < Action
|
|
2112
2694
|
|
2113
2695
|
end
|
2114
2696
|
|
2115
|
-
|
2697
|
+
# Category: Notifications
|
2698
|
+
#
|
2699
|
+
class NotificationAction < NotificationsAction
|
2116
2700
|
|
2117
2701
|
def initialize(h={})
|
2118
2702
|
|
@@ -2136,7 +2720,9 @@ class NotificationAction < Action
|
|
2136
2720
|
|
2137
2721
|
end
|
2138
2722
|
|
2139
|
-
|
2723
|
+
# Category: Notifications
|
2724
|
+
#
|
2725
|
+
class ToastAction < NotificationsAction
|
2140
2726
|
|
2141
2727
|
def initialize(h={})
|
2142
2728
|
|
@@ -2159,10 +2745,30 @@ class ToastAction < Action
|
|
2159
2745
|
super(options.merge h)
|
2160
2746
|
|
2161
2747
|
end
|
2748
|
+
|
2749
|
+
def invoke()
|
2750
|
+
super(@h[:message_text])
|
2751
|
+
end
|
2752
|
+
|
2753
|
+
def to_s()
|
2754
|
+
"Popup Message '%s'" % @h[:message_text]
|
2755
|
+
end
|
2162
2756
|
|
2163
2757
|
end
|
2164
2758
|
|
2165
|
-
|
2759
|
+
|
2760
|
+
class PhoneAction < Action
|
2761
|
+
|
2762
|
+
def initialize(h={})
|
2763
|
+
super(h)
|
2764
|
+
@group = 'phone'
|
2765
|
+
end
|
2766
|
+
|
2767
|
+
end
|
2768
|
+
|
2769
|
+
# Category: Phone
|
2770
|
+
#
|
2771
|
+
class AnswerCallAction < PhoneAction
|
2166
2772
|
|
2167
2773
|
def initialize(h={})
|
2168
2774
|
|
@@ -2176,7 +2782,9 @@ class AnswerCallAction < Action
|
|
2176
2782
|
|
2177
2783
|
end
|
2178
2784
|
|
2179
|
-
|
2785
|
+
# Category: Phone
|
2786
|
+
#
|
2787
|
+
class ClearCallLogAction < PhoneAction
|
2180
2788
|
|
2181
2789
|
def initialize(h={})
|
2182
2790
|
|
@@ -2192,7 +2800,9 @@ class ClearCallLogAction < Action
|
|
2192
2800
|
|
2193
2801
|
end
|
2194
2802
|
|
2195
|
-
|
2803
|
+
# Category: Phone
|
2804
|
+
#
|
2805
|
+
class OpenCallLogAction < PhoneAction
|
2196
2806
|
|
2197
2807
|
def initialize(h={})
|
2198
2808
|
|
@@ -2205,7 +2815,9 @@ class OpenCallLogAction < Action
|
|
2205
2815
|
|
2206
2816
|
end
|
2207
2817
|
|
2208
|
-
|
2818
|
+
# Category: Phone
|
2819
|
+
#
|
2820
|
+
class RejectCallAction < PhoneAction
|
2209
2821
|
|
2210
2822
|
def initialize(h={})
|
2211
2823
|
|
@@ -2218,7 +2830,9 @@ class RejectCallAction < Action
|
|
2218
2830
|
|
2219
2831
|
end
|
2220
2832
|
|
2221
|
-
|
2833
|
+
# Category: Phone
|
2834
|
+
#
|
2835
|
+
class MakeCallAction < PhoneAction
|
2222
2836
|
|
2223
2837
|
def initialize(h={})
|
2224
2838
|
|
@@ -2233,7 +2847,10 @@ class MakeCallAction < Action
|
|
2233
2847
|
|
2234
2848
|
end
|
2235
2849
|
|
2236
|
-
|
2850
|
+
|
2851
|
+
# Category: Phone
|
2852
|
+
#
|
2853
|
+
class SetRingtoneAction < PhoneAction
|
2237
2854
|
|
2238
2855
|
def initialize(h={})
|
2239
2856
|
|
@@ -2247,7 +2864,18 @@ class SetRingtoneAction < Action
|
|
2247
2864
|
|
2248
2865
|
end
|
2249
2866
|
|
2250
|
-
class
|
2867
|
+
class ScreenAction < Action
|
2868
|
+
|
2869
|
+
def initialize(h={})
|
2870
|
+
super(h)
|
2871
|
+
@group = 'screen'
|
2872
|
+
end
|
2873
|
+
|
2874
|
+
end
|
2875
|
+
|
2876
|
+
# Category: Screen
|
2877
|
+
#
|
2878
|
+
class SetBrightnessAction < ScreenAction
|
2251
2879
|
|
2252
2880
|
def initialize(h={})
|
2253
2881
|
|
@@ -2263,7 +2891,9 @@ class SetBrightnessAction < Action
|
|
2263
2891
|
|
2264
2892
|
end
|
2265
2893
|
|
2266
|
-
|
2894
|
+
# Category: Screen
|
2895
|
+
#
|
2896
|
+
class ForceScreenRotationAction < ScreenAction
|
2267
2897
|
|
2268
2898
|
def initialize(h={})
|
2269
2899
|
|
@@ -2277,7 +2907,9 @@ class ForceScreenRotationAction < Action
|
|
2277
2907
|
|
2278
2908
|
end
|
2279
2909
|
|
2280
|
-
|
2910
|
+
# Category: Screen
|
2911
|
+
#
|
2912
|
+
class ScreenOnAction < ScreenAction
|
2281
2913
|
|
2282
2914
|
def initialize(h={})
|
2283
2915
|
|
@@ -2294,7 +2926,9 @@ class ScreenOnAction < Action
|
|
2294
2926
|
|
2295
2927
|
end
|
2296
2928
|
|
2297
|
-
|
2929
|
+
# Category: Screen
|
2930
|
+
#
|
2931
|
+
class DimScreenAction < ScreenAction
|
2298
2932
|
|
2299
2933
|
def initialize(h={})
|
2300
2934
|
|
@@ -2309,7 +2943,9 @@ class DimScreenAction < Action
|
|
2309
2943
|
|
2310
2944
|
end
|
2311
2945
|
|
2312
|
-
|
2946
|
+
# Category: Screen
|
2947
|
+
#
|
2948
|
+
class KeepAwakeAction < ScreenAction
|
2313
2949
|
|
2314
2950
|
def initialize(h={})
|
2315
2951
|
|
@@ -2326,7 +2962,9 @@ class KeepAwakeAction < Action
|
|
2326
2962
|
|
2327
2963
|
end
|
2328
2964
|
|
2329
|
-
|
2965
|
+
# Category: Screen
|
2966
|
+
#
|
2967
|
+
class SetScreenTimeoutAction < ScreenAction
|
2330
2968
|
|
2331
2969
|
def initialize(h={})
|
2332
2970
|
|
@@ -2343,8 +2981,18 @@ class SetScreenTimeoutAction < Action
|
|
2343
2981
|
end
|
2344
2982
|
|
2345
2983
|
|
2984
|
+
class VolumeAction < Action
|
2985
|
+
|
2986
|
+
def initialize(h={})
|
2987
|
+
super(h)
|
2988
|
+
@group = 'volume'
|
2989
|
+
end
|
2990
|
+
|
2991
|
+
end
|
2346
2992
|
|
2347
|
-
|
2993
|
+
# Category: Volume
|
2994
|
+
#
|
2995
|
+
class SilentModeVibrateOffAction < VolumeAction
|
2348
2996
|
|
2349
2997
|
def initialize(h={})
|
2350
2998
|
|
@@ -2358,7 +3006,9 @@ class SilentModeVibrateOffAction < Action
|
|
2358
3006
|
|
2359
3007
|
end
|
2360
3008
|
|
2361
|
-
|
3009
|
+
# Category: Volume
|
3010
|
+
#
|
3011
|
+
class SetVibrateAction < VolumeAction
|
2362
3012
|
|
2363
3013
|
def initialize(h={})
|
2364
3014
|
|
@@ -2373,7 +3023,9 @@ class SetVibrateAction < Action
|
|
2373
3023
|
|
2374
3024
|
end
|
2375
3025
|
|
2376
|
-
|
3026
|
+
# Category: Volume
|
3027
|
+
#
|
3028
|
+
class VolumeIncrementDecrementAction < VolumeAction
|
2377
3029
|
|
2378
3030
|
def initialize(h={})
|
2379
3031
|
|
@@ -2387,7 +3039,9 @@ class VolumeIncrementDecrementAction < Action
|
|
2387
3039
|
|
2388
3040
|
end
|
2389
3041
|
|
2390
|
-
|
3042
|
+
# Category: Volume
|
3043
|
+
#
|
3044
|
+
class SpeakerPhoneAction < VolumeAction
|
2391
3045
|
|
2392
3046
|
def initialize(h={})
|
2393
3047
|
|
@@ -2402,8 +3056,9 @@ class SpeakerPhoneAction < Action
|
|
2402
3056
|
|
2403
3057
|
end
|
2404
3058
|
|
2405
|
-
|
2406
|
-
|
3059
|
+
# Category: Volume
|
3060
|
+
#
|
3061
|
+
class SetVolumeAction < VolumeAction
|
2407
3062
|
|
2408
3063
|
def initialize(h={})
|
2409
3064
|
|
@@ -2426,5 +3081,905 @@ class Constraint < MacroObject
|
|
2426
3081
|
def initialize(h={})
|
2427
3082
|
super(h)
|
2428
3083
|
end
|
3084
|
+
|
3085
|
+
def match?(detail={}, model=nil)
|
3086
|
+
|
3087
|
+
detail.select {|k,v| @h.include? k }.all? {|key,value| @h[key] == value}
|
3088
|
+
|
3089
|
+
end
|
3090
|
+
|
3091
|
+
#def to_s()
|
3092
|
+
# ''
|
3093
|
+
#end
|
3094
|
+
|
3095
|
+
protected
|
3096
|
+
|
3097
|
+
def toggle_match?(key, val)
|
3098
|
+
|
3099
|
+
if @h[key] == true and val == key.to_s then
|
3100
|
+
true
|
3101
|
+
elsif @h[key] == false and val != key.to_s
|
3102
|
+
true
|
3103
|
+
else
|
3104
|
+
false
|
3105
|
+
end
|
3106
|
+
|
3107
|
+
end
|
3108
|
+
|
3109
|
+
end
|
3110
|
+
|
3111
|
+
class TimeOfDayConstraint < Constraint
|
3112
|
+
|
3113
|
+
def initialize(h={})
|
3114
|
+
|
3115
|
+
options = {
|
3116
|
+
end_hour: 8,
|
3117
|
+
end_minute: 0,
|
3118
|
+
start_hour: 22,
|
3119
|
+
start_minute: 0
|
3120
|
+
}
|
3121
|
+
|
3122
|
+
super(options.merge h)
|
3123
|
+
|
3124
|
+
end
|
3125
|
+
|
3126
|
+
end
|
3127
|
+
|
3128
|
+
# Category: Battery/Power
|
3129
|
+
#
|
3130
|
+
class BatteryLevelConstraint < Constraint
|
3131
|
+
|
3132
|
+
def initialize(h={})
|
3133
|
+
|
3134
|
+
options = {
|
3135
|
+
battery_level: 23,
|
3136
|
+
equals: false,
|
3137
|
+
greater_than: false
|
3138
|
+
}
|
3139
|
+
|
3140
|
+
super(options.merge h)
|
3141
|
+
|
3142
|
+
end
|
3143
|
+
|
3144
|
+
end
|
3145
|
+
|
3146
|
+
# Category: Battery/Power
|
3147
|
+
#
|
3148
|
+
class BatterySaverStateConstraint < Constraint
|
3149
|
+
|
3150
|
+
def initialize(h={})
|
3151
|
+
|
3152
|
+
options = {
|
3153
|
+
option: 0
|
3154
|
+
}
|
3155
|
+
|
3156
|
+
super(options.merge h)
|
3157
|
+
|
3158
|
+
end
|
3159
|
+
|
3160
|
+
end
|
3161
|
+
|
3162
|
+
# Category: Battery/Power
|
3163
|
+
#
|
3164
|
+
class BatteryTemperatureConstraint < Constraint
|
3165
|
+
|
3166
|
+
def initialize(h={})
|
3167
|
+
|
3168
|
+
options = {
|
3169
|
+
equals: false,
|
3170
|
+
greater_than: false,
|
3171
|
+
temperature: 30
|
3172
|
+
}
|
3173
|
+
|
3174
|
+
super(options.merge h)
|
3175
|
+
|
3176
|
+
end
|
3177
|
+
|
3178
|
+
end
|
3179
|
+
|
3180
|
+
# Category: Battery/Power
|
3181
|
+
#
|
3182
|
+
class ExternalPowerConstraint < Constraint
|
3183
|
+
|
3184
|
+
def initialize(h={})
|
3185
|
+
|
3186
|
+
options = {
|
3187
|
+
external_power: true,
|
3188
|
+
power_connected_options: [false, true, false]
|
3189
|
+
}
|
3190
|
+
|
3191
|
+
super(options.merge h)
|
3192
|
+
|
3193
|
+
end
|
3194
|
+
|
3195
|
+
end
|
3196
|
+
|
3197
|
+
# Category: Connectivity
|
3198
|
+
#
|
3199
|
+
class BluetoothConstraint < Constraint
|
3200
|
+
|
3201
|
+
def initialize(h={})
|
3202
|
+
|
3203
|
+
options = {
|
3204
|
+
any_device: false,
|
3205
|
+
bt_state: 0,
|
3206
|
+
device_name: 'Any Device'
|
3207
|
+
}
|
3208
|
+
|
3209
|
+
super(options.merge h)
|
3210
|
+
|
3211
|
+
end
|
3212
|
+
|
3213
|
+
end
|
3214
|
+
|
3215
|
+
# Category: Connectivity
|
3216
|
+
#
|
3217
|
+
class GPSEnabledConstraint < Constraint
|
3218
|
+
|
3219
|
+
def initialize(h={})
|
3220
|
+
|
3221
|
+
options = {
|
3222
|
+
enabled: true
|
3223
|
+
}
|
3224
|
+
|
3225
|
+
super(options.merge h)
|
3226
|
+
|
3227
|
+
end
|
3228
|
+
|
3229
|
+
end
|
3230
|
+
|
3231
|
+
# Category: Connectivity
|
3232
|
+
#
|
3233
|
+
class LocationModeConstraint < Constraint
|
3234
|
+
|
3235
|
+
def initialize(h={})
|
3236
|
+
|
3237
|
+
options = {
|
3238
|
+
options: [false, false, false, true]
|
3239
|
+
}
|
3240
|
+
|
3241
|
+
super(options.merge h)
|
3242
|
+
|
3243
|
+
end
|
3244
|
+
|
3245
|
+
end
|
3246
|
+
|
3247
|
+
# Category: Connectivity
|
3248
|
+
#
|
3249
|
+
class SignalOnOffConstraint < Constraint
|
3250
|
+
|
3251
|
+
def initialize(h={})
|
3252
|
+
|
3253
|
+
options = {
|
3254
|
+
option: 0
|
3255
|
+
}
|
3256
|
+
|
3257
|
+
super(options.merge h)
|
3258
|
+
|
3259
|
+
end
|
3260
|
+
|
3261
|
+
end
|
3262
|
+
|
3263
|
+
# Category: Connectivity
|
3264
|
+
#
|
3265
|
+
class WifiConstraint < Constraint
|
3266
|
+
|
3267
|
+
def initialize(h={})
|
3268
|
+
|
3269
|
+
options = {
|
3270
|
+
ssid_list: [],
|
3271
|
+
wifi_state: 0
|
3272
|
+
}
|
3273
|
+
|
3274
|
+
super(options.merge h)
|
3275
|
+
|
3276
|
+
end
|
3277
|
+
|
3278
|
+
end
|
3279
|
+
|
3280
|
+
# Category: Connectivity
|
3281
|
+
#
|
3282
|
+
class CellTowerConstraint < Constraint
|
3283
|
+
|
3284
|
+
def initialize(h={})
|
3285
|
+
|
3286
|
+
options = {
|
3287
|
+
cell_group_name: 'test group',
|
3288
|
+
cell_ids: ["524,14,41070731"],
|
3289
|
+
in_range: true
|
3290
|
+
}
|
3291
|
+
|
3292
|
+
super(options.merge h)
|
3293
|
+
|
3294
|
+
end
|
3295
|
+
|
3296
|
+
end
|
3297
|
+
|
3298
|
+
# Category: Connectivity
|
3299
|
+
#
|
3300
|
+
class IsRoamingConstraint < Constraint
|
3301
|
+
|
3302
|
+
def initialize(h={})
|
3303
|
+
|
3304
|
+
options = {
|
3305
|
+
is_roaming: true
|
3306
|
+
}
|
3307
|
+
|
3308
|
+
super(options.merge h)
|
3309
|
+
|
3310
|
+
end
|
3311
|
+
|
3312
|
+
end
|
3313
|
+
|
3314
|
+
# Category: Connectivity
|
3315
|
+
#
|
3316
|
+
class DataOnOffConstraint < Constraint
|
3317
|
+
|
3318
|
+
def initialize(h={})
|
3319
|
+
|
3320
|
+
options = {
|
3321
|
+
data_on: true
|
3322
|
+
}
|
3323
|
+
|
3324
|
+
super(options.merge h)
|
3325
|
+
|
3326
|
+
end
|
3327
|
+
|
3328
|
+
end
|
3329
|
+
|
3330
|
+
# Category: Connectivity
|
3331
|
+
#
|
3332
|
+
class WifiHotSpotConstraint < Constraint
|
3333
|
+
|
3334
|
+
def initialize(h={})
|
3335
|
+
|
3336
|
+
options = {
|
3337
|
+
check_connections: false,
|
3338
|
+
comparison_value: 0,
|
3339
|
+
connected_count: 0,
|
3340
|
+
enabled: true
|
3341
|
+
}
|
3342
|
+
|
3343
|
+
super(options.merge h)
|
3344
|
+
|
3345
|
+
end
|
3346
|
+
|
3347
|
+
end
|
3348
|
+
|
3349
|
+
# Category: Date/Time
|
3350
|
+
#
|
3351
|
+
class CalendarConstraint < Constraint
|
3352
|
+
|
3353
|
+
def initialize(h={})
|
3354
|
+
|
3355
|
+
options = {
|
3356
|
+
enable_regex: false,
|
3357
|
+
availability: 0,
|
3358
|
+
calendar_id: '1',
|
3359
|
+
calendar_name: 'PC Sync',
|
3360
|
+
detail_text: '',
|
3361
|
+
entry_set: true,
|
3362
|
+
ignore_all_day: false,
|
3363
|
+
title_text: ''
|
3364
|
+
}
|
3365
|
+
|
3366
|
+
super(options.merge h)
|
3367
|
+
|
3368
|
+
end
|
3369
|
+
|
3370
|
+
end
|
3371
|
+
|
3372
|
+
# Category: Date/Time
|
3373
|
+
#
|
3374
|
+
class DayOfWeekConstraint < Constraint
|
3375
|
+
|
3376
|
+
def initialize(h={})
|
3377
|
+
|
3378
|
+
options = {
|
3379
|
+
days_of_week: [false, false, true, false, false, false, false]
|
3380
|
+
}
|
3381
|
+
|
3382
|
+
super(options.merge h)
|
3383
|
+
|
3384
|
+
end
|
3385
|
+
|
3386
|
+
end
|
3387
|
+
|
3388
|
+
# Category: Date/Time
|
3389
|
+
#
|
3390
|
+
class TimeOfDayConstraint < Constraint
|
3391
|
+
|
3392
|
+
def initialize(h={})
|
3393
|
+
|
3394
|
+
options = {
|
3395
|
+
end_hour: 1,
|
3396
|
+
end_minute: 1,
|
3397
|
+
start_hour: 21,
|
3398
|
+
start_minute: 58
|
3399
|
+
}
|
3400
|
+
|
3401
|
+
super(options.merge h)
|
3402
|
+
|
3403
|
+
end
|
3404
|
+
|
3405
|
+
end
|
3406
|
+
|
3407
|
+
# Category: Date/Time
|
3408
|
+
#
|
3409
|
+
class DayOfMonthConstraint < Constraint
|
3410
|
+
|
3411
|
+
def initialize(h={})
|
3412
|
+
|
3413
|
+
options = {
|
3414
|
+
day_names: ["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"],
|
3415
|
+
days_of_month: [false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]
|
3416
|
+
}
|
3417
|
+
|
3418
|
+
super(options.merge h)
|
3419
|
+
|
3420
|
+
end
|
3421
|
+
|
3422
|
+
end
|
3423
|
+
|
3424
|
+
# Category: Date/Time
|
3425
|
+
#
|
3426
|
+
class MonthOfYearConstraint < Constraint
|
3427
|
+
|
3428
|
+
def initialize(h={})
|
3429
|
+
|
3430
|
+
options = {
|
3431
|
+
months: [false, false, false, false, false, false, false, true, false, false, false, false]
|
3432
|
+
}
|
3433
|
+
|
3434
|
+
super(options.merge h)
|
3435
|
+
|
3436
|
+
end
|
3437
|
+
|
3438
|
+
end
|
3439
|
+
|
3440
|
+
# Category: Date/Time
|
3441
|
+
#
|
3442
|
+
class SunsetSunriseConstraint < Constraint
|
3443
|
+
|
3444
|
+
def initialize(h={})
|
3445
|
+
|
3446
|
+
options = {
|
3447
|
+
option: 0
|
3448
|
+
}
|
3449
|
+
|
3450
|
+
super(options.merge h)
|
3451
|
+
|
3452
|
+
end
|
3453
|
+
|
3454
|
+
end
|
3455
|
+
|
3456
|
+
# Category: Device State
|
3457
|
+
#
|
3458
|
+
class AirplaneModeConstraint < Constraint
|
3459
|
+
|
3460
|
+
def initialize(h={})
|
3461
|
+
|
3462
|
+
options = {
|
3463
|
+
enabled: true
|
3464
|
+
}
|
3465
|
+
|
3466
|
+
super(options.merge h)
|
3467
|
+
|
3468
|
+
end
|
3469
|
+
|
3470
|
+
def match?(detail={}, model=nil)
|
3471
|
+
|
3472
|
+
puts 'inside airplaneModeConstraint#match?' if $debug
|
3473
|
+
|
3474
|
+
if detail.has_key? :enabled then
|
3475
|
+
|
3476
|
+
puts 'detail has the key' if $debug
|
3477
|
+
super(detail)
|
3478
|
+
|
3479
|
+
elsif model
|
3480
|
+
|
3481
|
+
if $debug then
|
3482
|
+
puts 'checking the model'
|
3483
|
+
switch = model.connectivity.airplane_mode.switch
|
3484
|
+
puts 'switch: ' + switch.inspect
|
3485
|
+
end
|
3486
|
+
|
3487
|
+
toggle_match?(:enabled, switch)
|
3488
|
+
|
3489
|
+
end
|
3490
|
+
|
3491
|
+
end
|
3492
|
+
|
3493
|
+
end
|
3494
|
+
|
3495
|
+
# Category: Device State
|
3496
|
+
#
|
3497
|
+
class AutoRotateConstraint < Constraint
|
3498
|
+
|
3499
|
+
def initialize(h={})
|
3500
|
+
|
3501
|
+
options = {
|
3502
|
+
enabled: true
|
3503
|
+
}
|
3504
|
+
|
3505
|
+
super(options.merge h)
|
3506
|
+
|
3507
|
+
end
|
3508
|
+
|
3509
|
+
end
|
3510
|
+
|
3511
|
+
# Category: Device State
|
3512
|
+
#
|
3513
|
+
class DeviceLockedConstraint < Constraint
|
3514
|
+
|
3515
|
+
def initialize(h={})
|
3516
|
+
|
3517
|
+
options = {
|
3518
|
+
locked: true
|
3519
|
+
}
|
3520
|
+
|
3521
|
+
super(options.merge h)
|
3522
|
+
|
3523
|
+
end
|
3524
|
+
|
3525
|
+
end
|
3526
|
+
|
3527
|
+
# Category: Device State
|
3528
|
+
#
|
3529
|
+
class RoamingOnOffConstraint < Constraint
|
3530
|
+
|
3531
|
+
def initialize(h={})
|
3532
|
+
|
3533
|
+
options = {
|
3534
|
+
roaming_on: true
|
3535
|
+
}
|
3536
|
+
|
3537
|
+
super(options.merge h)
|
3538
|
+
|
3539
|
+
end
|
3540
|
+
|
3541
|
+
end
|
3542
|
+
|
3543
|
+
# Category: Device State
|
3544
|
+
#
|
3545
|
+
class TimeSinceBootConstraint < Constraint
|
3546
|
+
|
3547
|
+
def initialize(h={})
|
3548
|
+
|
3549
|
+
options = {
|
3550
|
+
less_than: true,
|
3551
|
+
time_period_seconds: 10921
|
3552
|
+
}
|
3553
|
+
|
3554
|
+
super(options.merge h)
|
3555
|
+
|
3556
|
+
end
|
3557
|
+
|
3558
|
+
end
|
3559
|
+
|
3560
|
+
# Category: Device State
|
3561
|
+
#
|
3562
|
+
class AutoSyncConstraint < Constraint
|
3563
|
+
|
3564
|
+
def initialize(h={})
|
3565
|
+
|
3566
|
+
options = {
|
3567
|
+
enabled: false
|
3568
|
+
}
|
3569
|
+
|
3570
|
+
super(options.merge h)
|
3571
|
+
|
3572
|
+
end
|
3573
|
+
|
3574
|
+
end
|
3575
|
+
|
3576
|
+
# Category: Device State
|
3577
|
+
#
|
3578
|
+
class NFCStateConstraint < Constraint
|
3579
|
+
|
3580
|
+
def initialize(h={})
|
3581
|
+
|
3582
|
+
options = {
|
3583
|
+
enabled: true
|
3584
|
+
}
|
3585
|
+
|
3586
|
+
super(options.merge h)
|
3587
|
+
|
3588
|
+
end
|
3589
|
+
|
3590
|
+
end
|
3591
|
+
|
3592
|
+
# Category: Device State
|
3593
|
+
#
|
3594
|
+
class IsRootedConstraint < Constraint
|
3595
|
+
|
3596
|
+
def initialize(h={})
|
3597
|
+
|
3598
|
+
options = {
|
3599
|
+
rooted: true
|
3600
|
+
}
|
3601
|
+
|
3602
|
+
super(options.merge h)
|
3603
|
+
|
3604
|
+
end
|
3605
|
+
|
3606
|
+
end
|
3607
|
+
|
3608
|
+
# Category: Device State
|
3609
|
+
#
|
3610
|
+
class VpnConstraint < Constraint
|
3611
|
+
|
3612
|
+
def initialize(h={})
|
3613
|
+
|
3614
|
+
options = {
|
3615
|
+
option: 0
|
3616
|
+
}
|
3617
|
+
|
3618
|
+
super(options.merge h)
|
3619
|
+
|
3620
|
+
end
|
3621
|
+
|
3622
|
+
end
|
3623
|
+
|
3624
|
+
# Category: MacroDroid Specific
|
3625
|
+
#
|
3626
|
+
class MacroEnabledConstraint < Constraint
|
3627
|
+
|
3628
|
+
def initialize(h={})
|
3629
|
+
|
3630
|
+
options = {
|
3631
|
+
enabled: true,
|
3632
|
+
macro_ids: [-8016812002629322290],
|
3633
|
+
macro_names: ["Intruder photo "]
|
3634
|
+
}
|
3635
|
+
|
3636
|
+
super(options.merge h)
|
3637
|
+
|
3638
|
+
end
|
3639
|
+
|
3640
|
+
end
|
3641
|
+
|
3642
|
+
# Category: MacroDroid Specific
|
3643
|
+
#
|
3644
|
+
class ModeConstraint < Constraint
|
3645
|
+
|
3646
|
+
def initialize(h={})
|
3647
|
+
|
3648
|
+
options = {
|
3649
|
+
mode: 'Away',
|
3650
|
+
mode_selected: true
|
3651
|
+
}
|
3652
|
+
|
3653
|
+
super(options.merge h)
|
3654
|
+
|
3655
|
+
end
|
3656
|
+
|
3657
|
+
end
|
3658
|
+
|
3659
|
+
# Category: MacroDroid Specific
|
3660
|
+
#
|
3661
|
+
class TriggerThatInvokedConstraint < Constraint
|
3662
|
+
|
3663
|
+
def initialize(h={})
|
3664
|
+
|
3665
|
+
options = {
|
3666
|
+
not: false,
|
3667
|
+
si_guid_that_invoked: -4951291100076165433,
|
3668
|
+
trigger_name: 'Shake Device'
|
3669
|
+
}
|
3670
|
+
|
3671
|
+
super(options.merge h)
|
3672
|
+
|
3673
|
+
end
|
3674
|
+
|
3675
|
+
end
|
3676
|
+
|
3677
|
+
# Category: MacroDroid Specific
|
3678
|
+
#
|
3679
|
+
class LastRunTimeConstraint < Constraint
|
3680
|
+
|
3681
|
+
def initialize(h={})
|
3682
|
+
|
3683
|
+
options = {
|
3684
|
+
check_this_macro: false,
|
3685
|
+
invoked: true,
|
3686
|
+
macro_ids: [-6922688338672048267],
|
3687
|
+
macro_names: ["Opendoor"],
|
3688
|
+
time_period_seconds: 7260
|
3689
|
+
}
|
3690
|
+
|
3691
|
+
super(options.merge h)
|
3692
|
+
|
3693
|
+
end
|
3694
|
+
|
3695
|
+
end
|
3696
|
+
|
3697
|
+
# Category: Media
|
3698
|
+
#
|
3699
|
+
class HeadphonesConnectionConstraint < Constraint
|
3700
|
+
|
3701
|
+
def initialize(h={})
|
3702
|
+
|
3703
|
+
options = {
|
3704
|
+
connected: true
|
3705
|
+
}
|
3706
|
+
|
3707
|
+
super(options.merge h)
|
3708
|
+
|
3709
|
+
end
|
3710
|
+
|
3711
|
+
end
|
3712
|
+
|
3713
|
+
# Category: Media
|
3714
|
+
#
|
3715
|
+
class MusicActiveConstraint < Constraint
|
3716
|
+
|
3717
|
+
def initialize(h={})
|
3718
|
+
|
3719
|
+
options = {
|
3720
|
+
music_active: true
|
3721
|
+
}
|
3722
|
+
|
3723
|
+
super(options.merge h)
|
3724
|
+
|
3725
|
+
end
|
3726
|
+
|
3727
|
+
end
|
3728
|
+
|
3729
|
+
# Category: Notification
|
3730
|
+
#
|
3731
|
+
class NotificationPresentConstraint < Constraint
|
3732
|
+
|
3733
|
+
def initialize(h={})
|
3734
|
+
|
3735
|
+
options = {
|
3736
|
+
enable_regex: false,
|
3737
|
+
application_name_list: ["All applications"],
|
3738
|
+
exact_match: false,
|
3739
|
+
excludes: false,
|
3740
|
+
excludes_apps: -1,
|
3741
|
+
option: 0,
|
3742
|
+
package_name_list: ["allApplications"],
|
3743
|
+
text_content: ''
|
3744
|
+
}
|
3745
|
+
|
3746
|
+
super(options.merge h)
|
3747
|
+
|
3748
|
+
end
|
3749
|
+
|
3750
|
+
end
|
3751
|
+
|
3752
|
+
# Category: Notification
|
3753
|
+
#
|
3754
|
+
class PriorityModeConstraint < Constraint
|
3755
|
+
|
3756
|
+
def initialize(h={})
|
3757
|
+
|
3758
|
+
options = {
|
3759
|
+
in_mode: true,
|
3760
|
+
selected_index: 0
|
3761
|
+
}
|
3762
|
+
|
3763
|
+
super(options.merge h)
|
3764
|
+
|
3765
|
+
end
|
3766
|
+
|
3767
|
+
end
|
3768
|
+
|
3769
|
+
# Category: Notification
|
3770
|
+
#
|
3771
|
+
class NotificationVolumeConstraint < Constraint
|
3772
|
+
|
3773
|
+
def initialize(h={})
|
3774
|
+
|
3775
|
+
options = {
|
3776
|
+
option: 1
|
3777
|
+
}
|
3778
|
+
|
3779
|
+
super(options.merge h)
|
3780
|
+
|
3781
|
+
end
|
3782
|
+
|
3783
|
+
end
|
3784
|
+
|
3785
|
+
# Category: Phone
|
3786
|
+
#
|
3787
|
+
class InCallConstraint < Constraint
|
3788
|
+
|
3789
|
+
def initialize(h={})
|
3790
|
+
|
3791
|
+
options = {
|
3792
|
+
in_call: true
|
3793
|
+
}
|
3794
|
+
|
3795
|
+
super(options.merge h)
|
3796
|
+
|
3797
|
+
end
|
3798
|
+
|
3799
|
+
end
|
3800
|
+
|
3801
|
+
# Category: Phone
|
3802
|
+
#
|
3803
|
+
class PhoneRingingConstraint < Constraint
|
3804
|
+
|
3805
|
+
def initialize(h={})
|
3806
|
+
|
3807
|
+
options = {
|
3808
|
+
ringing: true
|
3809
|
+
}
|
3810
|
+
|
3811
|
+
super(options.merge h)
|
3812
|
+
|
3813
|
+
end
|
3814
|
+
|
3815
|
+
end
|
3816
|
+
|
3817
|
+
# Category: Screen and Speaker
|
3818
|
+
#
|
3819
|
+
class BrightnessConstraint < Constraint
|
3820
|
+
|
3821
|
+
def initialize(h={})
|
3822
|
+
|
3823
|
+
options = {
|
3824
|
+
brightness: 35,
|
3825
|
+
equals: false,
|
3826
|
+
force_pie_mode: false,
|
3827
|
+
greater_than: false,
|
3828
|
+
is_auto_brightness: false
|
3829
|
+
}
|
3830
|
+
|
3831
|
+
super(options.merge h)
|
3832
|
+
|
3833
|
+
end
|
3834
|
+
|
3835
|
+
end
|
3836
|
+
|
3837
|
+
# Category: Screen and Speaker
|
3838
|
+
#
|
3839
|
+
class VolumeConstraint < Constraint
|
3840
|
+
|
3841
|
+
def initialize(h={})
|
3842
|
+
|
3843
|
+
options = {
|
3844
|
+
option: 0
|
3845
|
+
}
|
3846
|
+
|
3847
|
+
super(options.merge h)
|
3848
|
+
|
3849
|
+
end
|
3850
|
+
|
3851
|
+
end
|
3852
|
+
|
3853
|
+
# Category: Screen and Speaker
|
3854
|
+
#
|
3855
|
+
class SpeakerPhoneConstraint < Constraint
|
3856
|
+
|
3857
|
+
def initialize(h={})
|
3858
|
+
|
3859
|
+
options = {
|
3860
|
+
enabled: true
|
3861
|
+
}
|
3862
|
+
|
3863
|
+
super(options.merge h)
|
3864
|
+
|
3865
|
+
end
|
3866
|
+
|
3867
|
+
end
|
3868
|
+
|
3869
|
+
# Category: Screen and Speaker
|
3870
|
+
#
|
3871
|
+
class DarkThemeConstraint < Constraint
|
3872
|
+
|
3873
|
+
def initialize(h={})
|
3874
|
+
|
3875
|
+
options = {
|
3876
|
+
option: 0
|
3877
|
+
}
|
3878
|
+
|
3879
|
+
super(options.merge h)
|
3880
|
+
|
3881
|
+
end
|
3882
|
+
|
3883
|
+
end
|
3884
|
+
|
3885
|
+
# Category: Screen and Speaker
|
3886
|
+
#
|
3887
|
+
class ScreenOnOffConstraint < Constraint
|
3888
|
+
|
3889
|
+
def initialize(h={})
|
3890
|
+
|
3891
|
+
options = {
|
3892
|
+
a: true,
|
3893
|
+
screen_on: true
|
3894
|
+
}
|
3895
|
+
|
3896
|
+
super(options.merge h)
|
3897
|
+
|
3898
|
+
end
|
3899
|
+
|
3900
|
+
end
|
3901
|
+
|
3902
|
+
# Category: Screen and Speaker
|
3903
|
+
#
|
3904
|
+
class VolumeLevelConstraint < Constraint
|
3905
|
+
|
3906
|
+
def initialize(h={})
|
3907
|
+
|
3908
|
+
options = {
|
3909
|
+
comparison: 0,
|
3910
|
+
stream_index_array: [false, true, false, false, false, false, false],
|
3911
|
+
volume: 42
|
3912
|
+
}
|
3913
|
+
|
3914
|
+
super(options.merge h)
|
3915
|
+
|
3916
|
+
end
|
3917
|
+
|
3918
|
+
end
|
3919
|
+
|
3920
|
+
# Category: Sensors
|
3921
|
+
#
|
3922
|
+
class FaceUpDownConstraint < Constraint
|
3923
|
+
|
3924
|
+
def initialize(h={})
|
3925
|
+
|
3926
|
+
options = {
|
3927
|
+
option: -1,
|
3928
|
+
selected_options: [true, false, true, false, false, false]
|
3929
|
+
}
|
3930
|
+
|
3931
|
+
super(options.merge h)
|
3932
|
+
|
3933
|
+
end
|
3934
|
+
|
3935
|
+
end
|
3936
|
+
|
3937
|
+
# Category: Sensors
|
3938
|
+
#
|
3939
|
+
class LightLevelConstraint < Constraint
|
3940
|
+
|
3941
|
+
def initialize(h={})
|
3942
|
+
|
3943
|
+
options = {
|
3944
|
+
light_level: -1,
|
3945
|
+
light_level_float: 5000.0,
|
3946
|
+
option: 1
|
3947
|
+
}
|
3948
|
+
|
3949
|
+
super(options.merge h)
|
3950
|
+
|
3951
|
+
end
|
3952
|
+
|
3953
|
+
end
|
3954
|
+
|
3955
|
+
# Category: Sensors
|
3956
|
+
#
|
3957
|
+
class DeviceOrientationConstraint < Constraint
|
3958
|
+
|
3959
|
+
def initialize(h={})
|
3960
|
+
|
3961
|
+
options = {
|
3962
|
+
portrait: true
|
3963
|
+
}
|
3964
|
+
|
3965
|
+
super(options.merge h)
|
3966
|
+
|
3967
|
+
end
|
3968
|
+
|
3969
|
+
end
|
3970
|
+
|
3971
|
+
# Category: Sensors
|
3972
|
+
#
|
3973
|
+
class ProximitySensorConstraint < Constraint
|
3974
|
+
|
3975
|
+
def initialize(h={})
|
3976
|
+
|
3977
|
+
options = {
|
3978
|
+
near: true
|
3979
|
+
}
|
3980
|
+
|
3981
|
+
super(options.merge h)
|
3982
|
+
|
3983
|
+
end
|
2429
3984
|
|
2430
3985
|
end
|