ruby-macrodroid 0.8.2 → 0.8.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b183aef5c9ca96ad7f0c3abbb5e3439dd6af1a9bb14b9da75ffb99edb9944554
4
- data.tar.gz: 237916d146bd126816dfa8f8ffe420ffc8a75fa383d6b5893b4e85bf4702d948
3
+ metadata.gz: 24d851b05dbc6ecfd52b146846a6bbe935a06d30bfdf523c0550bd18c701b93b
4
+ data.tar.gz: 97171c71818bc1d0ce3ed70dc790f3464170e18f8ff62b5b3ff47b66f40c49d0
5
5
  SHA512:
6
- metadata.gz: ab40874c447fe623c393c3e9a4eab63a44ec71b6431cfd295cd95cf11412ad4c0c9f2238fc4e1038d0f256734dd29217e91a790fc927f1e2db1517eae8753bed
7
- data.tar.gz: 056c5e9f07eb9f148276392ad881f1658addd43a7022102f6614326bb224a8b2824048647bd223c5f2a649e702b35573856a09a773dfa2b329245a660710fcd8
6
+ metadata.gz: a9187782e93e70a758e50a07c49812d5bb915dab37bb108d174157a76d76cc2b625b766665ad5ac3f47c7d12d3ac8082b291966aa36c114d4d573ddf38e567b3
7
+ data.tar.gz: 7514ffbe6a9b4c063fe278c685ce0a860b4d28a1945d4819faa65b081395b701b5dab657a3d7764b87689f230c74d7c14051e563ad4360937ade7f78466ac3a3
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -154,6 +154,16 @@ class ActionsNlp
154
154
  [ToastAction, {msg: msg}]
155
155
  end
156
156
 
157
+ # e.g. Popup Message\n hello world!
158
+ get /^Popup Message\n\s+(.*)/im do |msg|
159
+ [ToastAction, {msg: msg}]
160
+ end
161
+
162
+ # e.g. Popup Message
163
+ get /^Popup Message$/i do
164
+ [ToastAction, {}]
165
+ end
166
+
157
167
  # e.g. say current time
158
168
  get /^say current[ _]time/i do
159
169
  [SayTimeAction, {}]
@@ -243,16 +253,17 @@ class ActionsNlp
243
253
  [KeepAwakeAction, {enabled: false, screen_option: 0}]
244
254
  end
245
255
 
256
+ #a: Disable Keep Awake
257
+ #
258
+ get /if (.*)/i do
259
+ [IfConditionAction, {}]
260
+ end
246
261
 
247
262
  end
248
263
 
249
264
  alias find_action run_route
250
265
 
251
- def to_s(colour: false)
252
- 'ActionsNlp ' + @h.inspect
253
- end
254
266
 
255
- alias to_summary to_s
256
267
  end
257
268
 
258
269
  class ConstraintsNlp
@@ -333,6 +344,7 @@ module Params
333
344
  end
334
345
 
335
346
 
347
+
336
348
  class Macro
337
349
  using ColouredText
338
350
  using Params
@@ -379,6 +391,7 @@ class Macro
379
391
  local_variables: @local_variables,
380
392
  m_trigger_list: @triggers.map(&:to_h),
381
393
  m_action_list: @actions.map(&:to_h),
394
+ m_category: @category,
382
395
  m_constraint_list: @constraints.map(&:to_h),
383
396
  m_description: '',
384
397
  m_name: title(),
@@ -402,11 +415,30 @@ class Macro
402
415
  puts 'h:' + h.inspect
403
416
  end
404
417
 
418
+ @category = h[:category]
405
419
  @title = h[:name]
406
420
  @description = h[:description]
407
421
 
408
422
  # fetch the local variables
409
- @local_variables = h['local_variables']
423
+ if h[:local_variables].any? and h[:local_variables].first.any? then
424
+
425
+ @local_variables = h[:local_variables].map do |var|
426
+
427
+ val = case var[:type]
428
+ when 0 # boolean
429
+ var[:boolean_value]
430
+ when 1 # integer
431
+ var[:int_value]
432
+ when 2 # string
433
+ var[:string_value]
434
+ when 3 # decimal
435
+ var[:decimal_Value]
436
+ end
437
+
438
+ [var[:name], val]
439
+
440
+ end.to_h
441
+ end
410
442
 
411
443
  # fetch the triggers
412
444
  @triggers = h[:trigger_list].map do |trigger|
@@ -419,17 +451,17 @@ class Macro
419
451
  @actions = h[:action_list].map do |action|
420
452
  object(action.to_snake_case)
421
453
  end
422
-
454
+ puts 'before fetch constraints' if @debug
423
455
  # fetch the constraints
424
456
  @constraints = h[:constraint_list].map do |constraint|
425
457
  object(constraint.to_snake_case)
426
458
  end
427
-
459
+ puts 'after fetch constraints' if @debug
428
460
  @h = h
429
461
 
430
462
  %i(local_variables m_trigger_list m_action_list m_constraint_list)\
431
463
  .each {|x| @h[x] = [] }
432
-
464
+ puts 'after @h set' if @debug
433
465
  @h
434
466
 
435
467
  end
@@ -446,6 +478,7 @@ class Macro
446
478
  # level 2
447
479
 
448
480
  @title = node.attributes[:name]
481
+ @category = node.attributes[:category]
449
482
  @description = node.attributes[:description]
450
483
 
451
484
 
@@ -513,20 +546,42 @@ class Macro
513
546
  @actions = node.xpath('action').map do |e|
514
547
 
515
548
  puts 'action e: ' + e.xml.inspect if @debug
516
- r = ap.find_action e.text
549
+ puts 'e.text ' + e.text if @debug
550
+
551
+ inner_lines = e.xpath('item/description/text()')
552
+
553
+ action = if e.text.to_s.strip.empty? then
554
+ inner_lines.shift
555
+ else
556
+ e.text.strip
557
+ end
558
+
559
+ r = ap.find_action action
517
560
  puts 'found action ' + r.inspect if @debug
518
561
 
519
562
  if r then
520
563
 
521
- a = e.xpath('item/*')
564
+ loose = inner_lines.shift
565
+
566
+ raw_attributes = if loose then
522
567
 
523
- h = if a.any? then
524
- a.map {|node| [node.name.to_sym, node.text.to_s]}.to_h
568
+ puts 'do something ' + loose.to_s if @debug
569
+ loose.to_s
570
+
525
571
  else
526
- {}
572
+
573
+ a = e.xpath('item/*')
574
+
575
+ h = if a.any? then
576
+ a.map {|node| [node.name.to_sym, node.text.to_s]}.to_h
577
+ else
578
+ {}
579
+ end
580
+
581
+ r[1].merge(h)
582
+
527
583
  end
528
-
529
- r[0].new(r[1].merge(h))
584
+ r[0].new(raw_attributes)
530
585
  end
531
586
 
532
587
  end
@@ -634,7 +689,7 @@ EOF
634
689
 
635
690
  end
636
691
 
637
- if s =~ /^If/i then
692
+ if s =~ /^(?:If|DO \/ WHILE)/i then
638
693
 
639
694
  if indent < 1 then
640
695
 
@@ -655,13 +710,32 @@ EOF
655
710
  r
656
711
 
657
712
  end.join("\n")
713
+
714
+ a = []
715
+ a << '# ' + @category + "\n" if @category
716
+ a << (colour ? "m".bg_cyan.gray.bold : 'm') + ': ' + @title
717
+
718
+
719
+ if @description and @description.length >= 1 then
720
+ a << (colour ? "d".bg_gray.gray.bold : 'd') + ': ' \
721
+ + @description.gsub(/\n/,"\n ")
722
+ end
723
+
724
+ if @local_variables.length >= 1 then
725
+
726
+ vars = @local_variables.map do |k,v|
727
+ label = colour ? 'v'.bg_magenta : 'v'
728
+ label += ': '
729
+ label + "%s: %s" % [k,v]
730
+ end
731
+
732
+ a << vars.join("\n")
733
+ end
658
734
 
659
- a = [
660
- (colour ? "m".bg_cyan.gray.bold : 'm') + ': ' + @title,
661
- @triggers.map {|x| (colour ? "t".bg_red.gray.bold : 't') \
662
- + ": %s" % x}.join("\n"),
663
- actions
664
- ]
735
+ a << @triggers.map {|x| (colour ? "t".bg_red.gray.bold : 't') \
736
+ + ": %s" % x}.join("\n")
737
+ a << actions
738
+
665
739
 
666
740
  if @constraints.any? then
667
741
  a << @constraints.map do |x|
@@ -669,10 +743,9 @@ EOF
669
743
  end.join("\n")
670
744
  end
671
745
 
672
- if @description and @description.length >= 1 then
673
- a.insert(1, (colour ? "d".bg_gray.gray.bold : 'd') + ': ' \
674
- + @description.gsub(/\n/,"\n "))
675
- end
746
+
747
+
748
+
676
749
 
677
750
  a.join("\n") + "\n"
678
751
 
@@ -735,7 +808,7 @@ EOF
735
808
  h2 = h.merge( macro: self)
736
809
  puts 'h2: ' + h2.inspect
737
810
  r = klass.new h2
738
-
811
+ puts 'r:' + r.inspect
739
812
  r
740
813
 
741
814
  end
@@ -745,8 +818,6 @@ EOF
745
818
  end
746
819
 
747
820
 
748
-
749
-
750
821
  class MacroDroidError < Exception
751
822
  end
752
823
 
@@ -775,6 +846,7 @@ class MacroDroid
775
846
  if s[0] == '{' then
776
847
 
777
848
  import_json(s)
849
+ puts 'after import_json' if @debug
778
850
 
779
851
  elsif s[0] == '<'
780
852
 
@@ -867,7 +939,7 @@ class MacroDroid
867
939
  end
868
940
 
869
941
  alias to_json export_json
870
-
942
+
871
943
 
872
944
  def to_h()
873
945
 
@@ -53,14 +53,14 @@ class Action < MacroObject
53
53
  "%s/%s: %s" % [@group, @type, s]
54
54
  end
55
55
 
56
- def to_s(colour: false)
56
+ def to_s(colour: false, indent: 0)
57
57
 
58
58
  h = @h.clone
59
59
  h.delete :macro
60
60
  @s ||= "#<%s %s>" % [self.class, h.inspect]
61
61
  operator = @h[:is_or_condition] ? 'OR' : 'AND'
62
62
  constraints = @constraints.map \
63
- {|x| x.to_summary(colour: colour)}.join(" %s " % operator)
63
+ {|x| ' ' * indent + x.to_summary(colour: colour)}.join(" %s " % operator)
64
64
 
65
65
  @s + constraints
66
66
 
@@ -69,43 +69,6 @@ class Action < MacroObject
69
69
  end
70
70
 
71
71
 
72
- class LocationAction < Action
73
-
74
- def initialize(h={})
75
- super(h)
76
- @group = 'location'
77
- end
78
-
79
- end
80
-
81
- # Category: Location
82
- #
83
- class ShareLocationAction < LocationAction
84
-
85
- def initialize(h={})
86
-
87
- super()
88
-
89
- options = {
90
- email: '',
91
- variable: {:m_stringValue=>"", :m_name=>"",
92
- :m_decimalValue=>0.0, :isLocal=>true, :m_booleanValue=>false,
93
- :excludeFromLog=>false, :m_intValue=>0, :m_type=>2},
94
- sim_id: 0,
95
- output_channel: 5,
96
- old_variable_format: true
97
- }
98
-
99
- super(options.merge h)
100
-
101
- end
102
-
103
- def to_s(colour: false)
104
- 'ShareLocationAction ' + @h.inspect
105
- end
106
-
107
- alias to_summary to_s
108
- end
109
72
 
110
73
 
111
74
  class ApplicationAction < Action
@@ -134,7 +97,7 @@ class LaunchActivityAction < ApplicationAction
134
97
 
135
98
  end
136
99
 
137
- def to_s(colour: false)
100
+ def to_s(colour: false, indent: 0)
138
101
  'Launch ' + @h[:application_name]
139
102
  end
140
103
 
@@ -155,7 +118,7 @@ class KillBackgroundAppAction < ApplicationAction
155
118
 
156
119
  end
157
120
 
158
- def to_s(colour: false)
121
+ def to_s(colour: false, indent: 0)
159
122
  'KillBackgroundAppAction ' + @h.inspect
160
123
  end
161
124
 
@@ -176,7 +139,7 @@ class LaunchShortcutAction < ApplicationAction
176
139
 
177
140
  end
178
141
 
179
- def to_s(colour: false)
142
+ def to_s(colour: false, indent: 0)
180
143
  @s = "Launch Shortcut: " + @h[:app_name] + "\n " + @h[:name]
181
144
  super()
182
145
  end
@@ -205,7 +168,7 @@ class OpenWebPageAction < ApplicationAction
205
168
 
206
169
  end
207
170
 
208
- def to_s(colour: false)
171
+ def to_s(colour: false, indent: 0)
209
172
  "HTTP GET\n url: " + @h[:url_to_open]
210
173
  end
211
174
 
@@ -236,7 +199,7 @@ class UploadPhotoAction < CameraAction
236
199
 
237
200
  end
238
201
 
239
- def to_s(colour: false)
202
+ def to_s(colour: false, indent: 0)
240
203
  'UploadPhotoAction ' + @h.inspect
241
204
  end
242
205
 
@@ -266,13 +229,16 @@ class TakePictureAction < CameraAction
266
229
  'take_photo :' + camera.to_s
267
230
  end
268
231
 
269
- def to_s(colour: false)
232
+ def to_s(colour: false, indent: 0)
270
233
  'Take Picture'
271
234
  end
272
235
 
273
236
  end
274
237
 
275
- class IfConditionAction < Action
238
+
239
+ # Conditions/Loops
240
+ #
241
+ class IfConfirmedThenAction < Action
276
242
 
277
243
  def initialize(h={})
278
244
 
@@ -286,11 +252,97 @@ class IfConditionAction < Action
286
252
 
287
253
  super(h2)
288
254
 
255
+ @label = 'If Confirmed Then '
256
+
257
+ end
258
+
259
+ def to_s(colour: false, indent: 0)
260
+
261
+ @s = "If Confirmed Then " #+ @constraints.map(&:to_s).join(" %s " % operator)
262
+ super(colour: colour)
263
+
264
+ end
265
+ end
266
+
267
+ # Conditions/Loops
268
+ #
269
+ class LoopAction < Action
270
+
271
+ def initialize(h={})
272
+
273
+ options = {
274
+
275
+ }
276
+
277
+ h2 = options.merge(h)
278
+
279
+ super(h2)
280
+
281
+ @label = 'DO / WHILE '
282
+
283
+ end
284
+
285
+ def to_s(colour: false, indent: 0)
286
+
287
+ @s = 'DO / WHILE '
288
+ super()
289
+
290
+ end
291
+ end
292
+
293
+ # Conditions/Loops
294
+ #
295
+ class EndLoopAction < Action
296
+
297
+ def initialize(h={})
298
+
299
+ options = {
300
+
301
+ }
302
+
303
+ h2 = options.merge(h)
304
+
305
+ super(h2)
306
+
307
+ @label = 'End Loop '
308
+
309
+ end
310
+
311
+ def to_s(colour: false, indent: 0)
312
+
313
+ 'End Loop '
314
+
315
+ end
316
+ end
317
+
318
+ # Conditions/Loops
319
+ #
320
+ class IfConditionAction < Action
321
+
322
+ def initialize(obj=nil)
323
+
324
+ h = if obj.is_a? Hash then
325
+ obj
326
+ else
327
+ # get the constraints
328
+
329
+ end
330
+
331
+ options = {
332
+ a: true,
333
+ constraint_list: ''
334
+ }
335
+
336
+ macro = h[:macro]
337
+ h2 = options.merge(filter(options,h).merge(macro: macro))
338
+
339
+ super(h2)
340
+
289
341
  @label = 'If '
290
342
 
291
343
  end
292
344
 
293
- def to_s(colour: false)
345
+ def to_s(colour: false, indent: 0)
294
346
 
295
347
  @s = "If " #+ @constraints.map(&:to_s).join(" %s " % operator)
296
348
  super(colour: colour)
@@ -311,13 +363,13 @@ class ElseAction < Action
311
363
 
312
364
  end
313
365
 
314
- def to_s(colour: false)
366
+ def to_s(colour: false, indent: 0)
315
367
  'Else'
316
368
  end
317
369
 
318
370
  end
319
371
 
320
- class ElseIfConditionAction < IfConditionAction
372
+ class ElseIfConditionAction < Action
321
373
 
322
374
  def initialize(h={})
323
375
 
@@ -326,9 +378,14 @@ class ElseIfConditionAction < IfConditionAction
326
378
  }
327
379
 
328
380
  super(options.merge h)
329
- @label = 'ElseIf '
381
+ @label = 'Else If '
330
382
 
331
383
  end
384
+
385
+ def to_s(colour: false, indent: 0)
386
+ @s = 'Else If '
387
+ super()
388
+ end
332
389
 
333
390
 
334
391
  end
@@ -346,7 +403,7 @@ class EndIfAction < Action
346
403
 
347
404
  end
348
405
 
349
- def to_s(colour: false)
406
+ def to_s(colour: false, indent: 0)
350
407
  'End If'
351
408
  end
352
409
 
@@ -376,7 +433,7 @@ class SetAirplaneModeAction < ConnectivityAction
376
433
 
377
434
  end
378
435
 
379
- def to_s(colour: false)
436
+ def to_s(colour: false, indent: 0)
380
437
 
381
438
  state = ['On', 'Off', 'Toggle'][@h[:state]]
382
439
  @s = 'Airplane Mode ' + state + "\n"
@@ -402,7 +459,7 @@ class SetWifiAction < ConnectivityAction
402
459
 
403
460
  end
404
461
 
405
- def to_s(colour: false)
462
+ def to_s(colour: false, indent: 0)
406
463
  action = @h[:state] == 0 ? 'Enable' : 'Disable'
407
464
  action + ' Wifi'
408
465
  end
@@ -424,7 +481,7 @@ class SetBluetoothAction < ConnectivityAction
424
481
 
425
482
  end
426
483
 
427
- def to_s(colour: false)
484
+ def to_s(colour: false, indent: 0)
428
485
  'SetBluetoothAction ' + @h.inspect
429
486
  end
430
487
 
@@ -446,7 +503,7 @@ class SetBluetoothAction < ConnectivityAction
446
503
 
447
504
  end
448
505
 
449
- def to_s(colour: false)
506
+ def to_s(colour: false, indent: 0)
450
507
  'SetBluetoothAction ' + @h.inspect
451
508
  end
452
509
 
@@ -466,7 +523,7 @@ class SetHotspotAction < ConnectivityAction
466
523
 
467
524
  end
468
525
 
469
- def to_s(colour: false)
526
+ def to_s(colour: false, indent: 0)
470
527
  action = @h[:turn_wifi_on] ? 'Enable' : 'Disable'
471
528
  action + ' HotSpot'
472
529
  end
@@ -498,7 +555,7 @@ class SendIntentAction < ConnectivityAction
498
555
 
499
556
  end
500
557
 
501
- def to_s(colour: false)
558
+ def to_s(colour: false, indent: 0)
502
559
  'Send Intent ' + "\n " + @h[:action]
503
560
  end
504
561
 
@@ -538,7 +595,7 @@ class SetAlarmClockAction < DateTimeAction
538
595
 
539
596
  end
540
597
 
541
- def to_s(colour: false)
598
+ def to_s(colour: false, indent: 0)
542
599
  'SetAlarmClockAction ' + @h.inspect
543
600
  end
544
601
 
@@ -560,7 +617,7 @@ class StopWatchAction < DateTimeAction
560
617
 
561
618
  end
562
619
 
563
- def to_s(colour: false)
620
+ def to_s(colour: false, indent: 0)
564
621
  'StopWatchAction ' + @h.inspect
565
622
  end
566
623
 
@@ -591,7 +648,7 @@ class SayTimeAction < DateTimeAction
591
648
  'say current_time()'
592
649
  end
593
650
 
594
- def to_s(colour: false)
651
+ def to_s(colour: false, indent: 0)
595
652
  'Say Current Time'
596
653
  end
597
654
 
@@ -621,7 +678,7 @@ class AndroidShortcutsAction < DeviceAction
621
678
 
622
679
  end
623
680
 
624
- def to_s(colour: false)
681
+ def to_s(colour: false, indent: 0)
625
682
  'AndroidShortcutsAction ' + @h.inspect
626
683
  end
627
684
 
@@ -642,8 +699,8 @@ class ClipboardAction < DeviceAction
642
699
 
643
700
  end
644
701
 
645
- def to_s(colour: false)
646
- 'ClipboardAction ' + @h.inspect
702
+ def to_s(colour: false, indent: 0)
703
+ 'Fill Clipboard' + "\n " + @h[:clipboard_text] #+ @h.inspect
647
704
  end
648
705
 
649
706
  alias to_summary to_s
@@ -662,7 +719,7 @@ class PressBackAction < DeviceAction
662
719
 
663
720
  end
664
721
 
665
- def to_s(colour: false)
722
+ def to_s(colour: false, indent: 0)
666
723
  'PressBackAction ' + @h.inspect
667
724
  end
668
725
 
@@ -690,7 +747,7 @@ class SpeakTextAction < DeviceAction
690
747
 
691
748
  end
692
749
 
693
- def to_s(colour: false)
750
+ def to_s(colour: false, indent: 0)
694
751
  "Speak Text (%s)" % @h[:text_to_say]
695
752
  end
696
753
 
@@ -711,8 +768,43 @@ class UIInteractionAction < DeviceAction
711
768
 
712
769
  end
713
770
 
714
- def to_s(colour: false)
715
- 'UIInteractionAction ' + @h.inspect
771
+ def to_s(colour: false, indent: 0)
772
+
773
+ ui = @h[:ui_interaction_configuration]
774
+
775
+ option = -> do
776
+ detail = case ui[:click_option]
777
+ when 0 # 'Current focus'
778
+ 'Current focus'
779
+ when 1 # 'Text content'
780
+ ui[:text_content]
781
+ when 2 # 'X, Y location'
782
+ "%s" % ui[:xy_point].values.join(',')
783
+ when 3 # 'Identify in app'
784
+ "id:%s" % ui[:view_id]
785
+ end
786
+ end
787
+
788
+ s = case @h[:action]
789
+ when 0 # 'Click'
790
+ 'Click' + " [%s]" % option.call
791
+ when 1 # 'Long Click'
792
+ 'Long Click' + " [%s]" % option.call
793
+ when 2 # 'Copy'
794
+ 'Copy'
795
+ when 3 # 'Cut'
796
+ 'Cut'
797
+ when 4 # 'Paste'
798
+ "Paste [%s]" % (ui[:use_clipboard] ? 'Clipboard text' : ui[:text])
799
+ when 5 # 'Clear selection'
800
+ 'Clear selection'
801
+ when 6 # 'Gesture'
802
+ detail = "%d ms: %d,%d -> %d,%d" % [ui[:duration_ms], ui[:start_x],
803
+ ui[:start_y], ui[:end_x], ui[:end_y]]
804
+ "Gesture [%s]" % detail
805
+ end
806
+
807
+ 'UI Interaction' + "\n " + s #+ ' ' + @h.inspect
716
808
  end
717
809
 
718
810
  alias to_summary to_s
@@ -731,7 +823,7 @@ class VoiceSearchAction < DeviceAction
731
823
 
732
824
  end
733
825
 
734
- def to_s(colour: false)
826
+ def to_s(colour: false, indent: 0)
735
827
  'VoiceSearchAction ' + @h.inspect
736
828
  end
737
829
 
@@ -762,7 +854,7 @@ class ExpandCollapseStatusBarAction < DeviceSettingsAction
762
854
 
763
855
  end
764
856
 
765
- def to_s(colour: false)
857
+ def to_s(colour: false, indent: 0)
766
858
  'ExpandCollapseStatusBarAction ' + @h.inspect
767
859
  end
768
860
 
@@ -782,7 +874,7 @@ class LaunchHomeScreenAction < DeviceSettingsAction
782
874
 
783
875
  end
784
876
 
785
- def to_s(colour: false)
877
+ def to_s(colour: false, indent: 0)
786
878
  'LaunchHomeScreenAction ' + @h.inspect
787
879
  end
788
880
 
@@ -793,6 +885,11 @@ end
793
885
  #
794
886
  class CameraFlashLightAction < DeviceSettingsAction
795
887
 
888
+ # options
889
+ # 0 Toch On
890
+ # 1 Torch Off
891
+ # 2 Torch Toggle
892
+ #
796
893
  def initialize(h={})
797
894
 
798
895
  options = {
@@ -808,7 +905,7 @@ class CameraFlashLightAction < DeviceSettingsAction
808
905
  ['torch :on', 'torch :off', 'torch :toggle'][@h[:state]]
809
906
  end
810
907
 
811
- def to_s(colour: false)
908
+ def to_s(colour: false, indent: 0)
812
909
  ['Torch On', 'Torch Off', 'Torch Toggle'][@h[:state]]
813
910
  end
814
911
 
@@ -828,7 +925,7 @@ class VibrateAction < DeviceSettingsAction
828
925
 
829
926
  end
830
927
 
831
- def to_s(colour: false)
928
+ def to_s(colour: false, indent: 0)
832
929
 
833
930
  pattern = [
834
931
  'Blip', 'Short Buzz', 'Long Buzz', 'Rapid', 'Slow', 'Increasing',
@@ -855,7 +952,7 @@ class SetAutoRotateAction < DeviceSettingsAction
855
952
 
856
953
  end
857
954
 
858
- def to_s(colour: false)
955
+ def to_s(colour: false, indent: 0)
859
956
  'SetAutoRotateAction ' + @h.inspect
860
957
  end
861
958
 
@@ -875,7 +972,7 @@ class DayDreamAction < DeviceSettingsAction
875
972
 
876
973
  end
877
974
 
878
- def to_s(colour: false)
975
+ def to_s(colour: false, indent: 0)
879
976
  'DayDreamAction ' + @h.inspect
880
977
  end
881
978
 
@@ -895,7 +992,7 @@ class SetKeyboardAction < DeviceSettingsAction
895
992
 
896
993
  end
897
994
 
898
- def to_s(colour: false)
995
+ def to_s(colour: false, indent: 0)
899
996
  'SetKeyboardAction ' + @h.inspect
900
997
  end
901
998
 
@@ -916,7 +1013,7 @@ class SetKeyguardAction < DeviceSettingsAction
916
1013
 
917
1014
  end
918
1015
 
919
- def to_s(colour: false)
1016
+ def to_s(colour: false, indent: 0)
920
1017
  'SetKeyguardAction ' + @h.inspect
921
1018
  end
922
1019
 
@@ -937,7 +1034,7 @@ class CarModeAction < DeviceSettingsAction
937
1034
 
938
1035
  end
939
1036
 
940
- def to_s(colour: false)
1037
+ def to_s(colour: false, indent: 0)
941
1038
  'CarModeAction ' + @h.inspect
942
1039
  end
943
1040
 
@@ -959,7 +1056,7 @@ class ChangeKeyboardAction < DeviceSettingsAction
959
1056
 
960
1057
  end
961
1058
 
962
- def to_s(colour: false)
1059
+ def to_s(colour: false, indent: 0)
963
1060
  'ChangeKeyboardAction ' + @h.inspect
964
1061
  end
965
1062
 
@@ -985,7 +1082,7 @@ class SetWallpaperAction < DeviceSettingsAction
985
1082
 
986
1083
  end
987
1084
 
988
- def to_s(colour: false)
1085
+ def to_s(colour: false, indent: 0)
989
1086
  'SetWallpaperAction ' + @h.inspect
990
1087
  end
991
1088
 
@@ -1001,6 +1098,40 @@ class FileAction < Action
1001
1098
 
1002
1099
  end
1003
1100
 
1101
+
1102
+
1103
+ # Category: Files
1104
+ #
1105
+ class FileOperationV21Action < FileAction
1106
+
1107
+ def initialize(h={})
1108
+
1109
+ options = {
1110
+ :app_name=>"", :class_name=>"", :package_name=>"", :file_path=>"",
1111
+ :file_extensions=>["jpg", "jpeg", "png", "raw", "bmp", "tif", "tiff",
1112
+ "gif"], :file_option=>2, :from_name=>"Sent",
1113
+ :from_uri_string=>"", :option=>2
1114
+ }
1115
+
1116
+ super(options.merge h)
1117
+
1118
+ end
1119
+
1120
+ def to_s(colour: false, indent: 0)
1121
+
1122
+ operation = ['Copy', 'Move', 'Delete', 'Create Folder']
1123
+ file = ['All Files', 'All Media Files', 'Images', 'Audio', 'Videos', 'Specify File Pattern', 'Folder']
1124
+
1125
+ detail = @h[:from_name]
1126
+ detail += ' to: ' + @h[:to_name] if @h[:option] == 1
1127
+ @s = "%s %s" % [operation[@h[:option]], file[@h[:file_option]]] \
1128
+ + "\n " + detail #+ @h.inspect
1129
+ super()
1130
+ end
1131
+
1132
+ alias to_summary to_s
1133
+ end
1134
+
1004
1135
  # Category: Files
1005
1136
  #
1006
1137
  class OpenFileAction < FileAction
@@ -1018,7 +1149,7 @@ class OpenFileAction < FileAction
1018
1149
 
1019
1150
  end
1020
1151
 
1021
- def to_s(colour: false)
1152
+ def to_s(colour: false, indent: 0)
1022
1153
  'OpenFileAction ' + @h.inspect
1023
1154
  end
1024
1155
 
@@ -1026,6 +1157,30 @@ class OpenFileAction < FileAction
1026
1157
  end
1027
1158
 
1028
1159
 
1160
+ # Category: Files
1161
+ #
1162
+ class WriteToFileAction < FileAction
1163
+
1164
+ def initialize(h={})
1165
+
1166
+ options = {
1167
+ app_name: '',
1168
+ class_name: '',
1169
+ package_name: '',
1170
+ file_path: ''
1171
+ }
1172
+
1173
+ super(options.merge h)
1174
+
1175
+ end
1176
+
1177
+ def to_s(colour: false, indent: 0)
1178
+ 'Write To File' + "\n " + @h[:filename] #+ @h.inspect
1179
+ end
1180
+
1181
+ alias to_summary to_s
1182
+ end
1183
+
1029
1184
  class LocationAction < Action
1030
1185
 
1031
1186
  def initialize(h={})
@@ -1048,22 +1203,37 @@ class ForceLocationUpdateAction < LocationAction
1048
1203
 
1049
1204
  end
1050
1205
 
1051
- def to_s(colour: false)
1206
+ def to_s(colour: false, indent: 0)
1052
1207
  'ForceLocationUpdateAction ' + @h.inspect
1053
1208
  end
1054
1209
 
1055
1210
  alias to_summary to_s
1056
1211
  end
1057
1212
 
1213
+ # Category: Location
1214
+ #
1215
+ class LocationAction < Action
1216
+
1217
+ def initialize(h={})
1218
+ super(h)
1219
+ @group = 'location'
1220
+ end
1221
+
1222
+ end
1223
+
1058
1224
  # Category: Location
1059
1225
  #
1060
1226
  class ShareLocationAction < LocationAction
1061
1227
 
1062
1228
  def initialize(h={})
1229
+
1230
+ super()
1063
1231
 
1064
1232
  options = {
1065
1233
  email: '',
1066
- variable: {:m_stringValue=>"", :m_name=>"", :m_decimalValue=>0.0, :isLocal=>true, :m_booleanValue=>false, :excludeFromLog=>false, :m_intValue=>0, :m_type=>2},
1234
+ variable: {:m_stringValue=>"", :m_name=>"",
1235
+ :m_decimalValue=>0.0, :isLocal=>true, :m_booleanValue=>false,
1236
+ :excludeFromLog=>false, :m_intValue=>0, :m_type=>2},
1067
1237
  sim_id: 0,
1068
1238
  output_channel: 5,
1069
1239
  old_variable_format: true
@@ -1073,13 +1243,15 @@ class ShareLocationAction < LocationAction
1073
1243
 
1074
1244
  end
1075
1245
 
1076
- def to_s(colour: false)
1077
- 'ShareLocationAction ' + @h.inspect
1246
+ def to_s(colour: false, indent: 0)
1247
+ @s = 'Share Location' + "\n GPS" # + @h.inspect
1248
+ super()
1078
1249
  end
1079
1250
 
1080
1251
  alias to_summary to_s
1081
1252
  end
1082
1253
 
1254
+
1083
1255
  # Category: Location
1084
1256
  #
1085
1257
  class SetLocationUpdateRateAction < LocationAction
@@ -1095,7 +1267,7 @@ class SetLocationUpdateRateAction < LocationAction
1095
1267
 
1096
1268
  end
1097
1269
 
1098
- def to_s(colour: false)
1270
+ def to_s(colour: false, indent: 0)
1099
1271
  'SetLocationUpdateRateAction ' + @h.inspect
1100
1272
  end
1101
1273
 
@@ -1138,7 +1310,7 @@ class AddCalendarEntryAction < LoggingAction
1138
1310
 
1139
1311
  end
1140
1312
 
1141
- def to_s(colour: false)
1313
+ def to_s(colour: false, indent: 0)
1142
1314
  'AddCalendarEntryAction ' + @h.inspect
1143
1315
  end
1144
1316
 
@@ -1160,7 +1332,7 @@ class LogAction < LoggingAction
1160
1332
 
1161
1333
  end
1162
1334
 
1163
- def to_s(colour: false)
1335
+ def to_s(colour: false, indent: 0)
1164
1336
  'LogAction ' + @h.inspect
1165
1337
  end
1166
1338
 
@@ -1181,13 +1353,39 @@ class ClearLogAction < LoggingAction
1181
1353
 
1182
1354
  end
1183
1355
 
1184
- def to_s(colour: false)
1356
+ def to_s(colour: false, indent: 0)
1185
1357
  'ClearLogAction ' + @h.inspect
1186
1358
  end
1187
1359
 
1188
1360
  alias to_summary to_s
1189
1361
  end
1190
1362
 
1363
+ # MacroDroid Specific
1364
+ #
1365
+ class ConfirmNextAction < Action
1366
+
1367
+ def initialize(h={})
1368
+
1369
+ options = {
1370
+ :message=>"Do you want to fill the clipboard? ", :title=>"Fill clipboard? ", :negative_text=>"NO", :positive_text=>"YES", :class_type=>"ConfirmNextAction"
1371
+
1372
+ }
1373
+
1374
+ super(h)
1375
+
1376
+ end
1377
+
1378
+ def to_s(colour: false, indent: 0)
1379
+
1380
+ @s = 'Confirm Next' + "\n %s: %s" % [@h[:title], @h[:message]]
1381
+ super()
1382
+
1383
+ end
1384
+
1385
+ alias to_summary to_s
1386
+
1387
+ end
1388
+
1191
1389
  # MacroDroid Specific
1192
1390
  #
1193
1391
  class ExportMacrosAction < Action
@@ -1201,7 +1399,7 @@ class ExportMacrosAction < Action
1201
1399
 
1202
1400
  end
1203
1401
 
1204
- def to_s(colour: false)
1402
+ def to_s(colour: false, indent: 0)
1205
1403
 
1206
1404
  'Export macros'
1207
1405
 
@@ -1211,6 +1409,114 @@ class ExportMacrosAction < Action
1211
1409
 
1212
1410
  end
1213
1411
 
1412
+
1413
+ # MacroDroid Specific
1414
+ #
1415
+ class SetVariableAction < Action
1416
+
1417
+ def initialize(h={})
1418
+
1419
+ options = {
1420
+ :user_prompt=>true,
1421
+ :user_prompt_message=>"Please enter a word to see it reversed",
1422
+ :user_prompt_show_cancel=>true,
1423
+ :user_prompt_stop_after_cancel=>true,
1424
+ :user_prompt_title=>"Word reverse",
1425
+ :name => 'word'
1426
+ }
1427
+ super(h)
1428
+
1429
+ end
1430
+
1431
+ def to_s(colour: false, indent: 0)
1432
+
1433
+ input = if @h[:user_prompt] then
1434
+ '[User Prompt]'
1435
+ elsif @h[:expression]
1436
+ @h[:expression]
1437
+ elsif @h[:int_value_increment]
1438
+ '(+1)'
1439
+ elsif @h[:int_value_decrement]
1440
+ '(-1)'
1441
+ elsif @h[:int_random]
1442
+ "Random %d -> %d" % [@h[:int_random_min], @h[:int_random_max]]
1443
+ else
1444
+
1445
+ =begin
1446
+ sym = case @h[:variable][:type]
1447
+ when 0 # boolean
1448
+ :new_boolean_value
1449
+ when 1 # integer
1450
+ :new_int_value
1451
+ when 2 # string
1452
+ :new_string_value
1453
+ when 3 # decimal
1454
+ :new_double_value
1455
+ end
1456
+
1457
+ @h[sym].to_s
1458
+ =end
1459
+ a = %i(new_boolean_value new_int_value new_string_value new_double_value)
1460
+ @h[a[@h[:variable][:type]]].to_s
1461
+
1462
+ end
1463
+
1464
+ @s = 'Set Variable' + ("\n %s: " % @h[:variable][:name]) + input #+ @h.inspect
1465
+ super()
1466
+
1467
+ end
1468
+
1469
+ alias to_summary to_s
1470
+
1471
+ end
1472
+
1473
+
1474
+
1475
+ # MacroDroid Specific
1476
+ #
1477
+ class TextManipulationAction < Action
1478
+
1479
+ def initialize(h={})
1480
+
1481
+ options = {
1482
+
1483
+ }
1484
+ super(h)
1485
+
1486
+ end
1487
+
1488
+ def to_s(colour: false, indent: 0)
1489
+
1490
+ #tm = @h[:text_manipulation][:type]
1491
+
1492
+ #s = case tm[:type].to_sym
1493
+ s = case 3 # @h[:text_manipulation][:option].to_i
1494
+ when 0 # :SubstringManipulation
1495
+ "Substring(%s, %s)" % [@h[:text], tm[:params].join(', ')]
1496
+ when 1 # :ReplaceAllManipulation
1497
+ "Replace all(%s, %s, %s)" % [@h[:text], *tm[:params]]
1498
+ when 2 # :ExtractTextManipulation
1499
+ "Extract text(%s, %s)" % [@h[:text], tm[:params].join(', ')]
1500
+ when 3 # :UpperCaseManipulation
1501
+ "Upper case(%s)" % [@h[:text]]
1502
+ #'foo'
1503
+ when 4 # :LowerCaseManipulation
1504
+ "Lower case(%s)" % [@h[:text]]
1505
+ when 5 # :TrimWhitespaceManipulation
1506
+ "Trim whitespace(%s)" % [@h[:text]]
1507
+ end
1508
+
1509
+ 'Text Manipulation' + "\n " + s.inspect #+ ' ' + @h.inspect
1510
+
1511
+ end
1512
+
1513
+ alias to_summary to_s
1514
+
1515
+ end
1516
+
1517
+
1518
+
1519
+
1214
1520
  class PauseAction < Action
1215
1521
 
1216
1522
  def initialize(h={})
@@ -1222,7 +1528,7 @@ class PauseAction < Action
1222
1528
 
1223
1529
  end
1224
1530
 
1225
- def to_s(colour: false)
1531
+ def to_s(colour: false, indent: 0)
1226
1532
 
1227
1533
  su = Subunit.new(units={minutes:60, hours:60},
1228
1534
  seconds: @h[:delay_in_seconds])
@@ -1266,7 +1572,7 @@ class RecordMicrophoneAction < MediaAction
1266
1572
 
1267
1573
  end
1268
1574
 
1269
- def to_s(colour: false)
1575
+ def to_s(colour: false, indent: 0)
1270
1576
  'RecordMicrophoneAction ' + @h.inspect
1271
1577
  end
1272
1578
 
@@ -1288,7 +1594,7 @@ class PlaySoundAction < MediaAction
1288
1594
 
1289
1595
  end
1290
1596
 
1291
- def to_s(colour: false)
1597
+ def to_s(colour: false, indent: 0)
1292
1598
  'Play: ' + @h[:file_path]
1293
1599
  end
1294
1600
 
@@ -1324,8 +1630,10 @@ class SendEmailAction < MessagingAction
1324
1630
 
1325
1631
  end
1326
1632
 
1327
- def to_s(colour: false)
1328
- 'SendEmailAction ' + @h.inspect
1633
+ def to_s(colour: false, indent: 0)
1634
+ recipient = @h[:email_address]
1635
+ @s = 'Send EmailAction' + "\n To: " + recipient #+ ' ' + @h.inspect
1636
+ super()
1329
1637
  end
1330
1638
 
1331
1639
  alias to_summary to_s
@@ -1350,7 +1658,7 @@ class SendSMSAction < MessagingAction
1350
1658
 
1351
1659
  end
1352
1660
 
1353
- def to_s(colour: false)
1661
+ def to_s(colour: false, indent: 0)
1354
1662
  'SendSMSAction ' + @h.inspect
1355
1663
  end
1356
1664
 
@@ -1373,7 +1681,7 @@ class UDPCommandAction < MessagingAction
1373
1681
 
1374
1682
  end
1375
1683
 
1376
- def to_s(colour: false)
1684
+ def to_s(colour: false, indent: 0)
1377
1685
  'UDPCommandAction ' + @h.inspect
1378
1686
  end
1379
1687
 
@@ -1412,7 +1720,7 @@ class ClearNotificationsAction < NotificationsAction
1412
1720
 
1413
1721
  end
1414
1722
 
1415
- def to_s(colour: false)
1723
+ def to_s(colour: false, indent: 0)
1416
1724
  'ClearNotificationsAction ' + @h.inspect
1417
1725
  end
1418
1726
 
@@ -1444,7 +1752,7 @@ class MessageDialogAction < NotificationsAction
1444
1752
 
1445
1753
  end
1446
1754
 
1447
- def to_s(colour: false)
1755
+ def to_s(colour: false, indent: 0)
1448
1756
  'Display Dialog' + "\n Battery at: [battery]"
1449
1757
  end
1450
1758
 
@@ -1464,7 +1772,7 @@ class AllowLEDNotificationLightAction < NotificationsAction
1464
1772
 
1465
1773
  end
1466
1774
 
1467
- def to_s(colour: false)
1775
+ def to_s(colour: false, indent: 0)
1468
1776
  'AllowLEDNotificationLightAction ' + @h.inspect
1469
1777
  end
1470
1778
 
@@ -1485,7 +1793,7 @@ class SetNotificationSoundAction < NotificationsAction
1485
1793
 
1486
1794
  end
1487
1795
 
1488
- def to_s(colour: false)
1796
+ def to_s(colour: false, indent: 0)
1489
1797
  'SetNotificationSoundAction ' + @h.inspect
1490
1798
  end
1491
1799
 
@@ -1506,7 +1814,7 @@ class SetNotificationSoundAction < NotificationsAction
1506
1814
 
1507
1815
  end
1508
1816
 
1509
- def to_s(colour: false)
1817
+ def to_s(colour: false, indent: 0)
1510
1818
  'SetNotificationSoundAction ' + @h.inspect
1511
1819
  end
1512
1820
 
@@ -1527,7 +1835,7 @@ class SetNotificationSoundAction < NotificationsAction
1527
1835
 
1528
1836
  end
1529
1837
 
1530
- def to_s(colour: false)
1838
+ def to_s(colour: false, indent: 0)
1531
1839
  'SetNotificationSoundAction ' + @h.inspect
1532
1840
  end
1533
1841
 
@@ -1561,7 +1869,7 @@ class NotificationAction < NotificationsAction
1561
1869
 
1562
1870
  end
1563
1871
 
1564
- def to_s(colour: false)
1872
+ def to_s(colour: false, indent: 0)
1565
1873
  "Display Notification\n " + \
1566
1874
  "%s: %s" % [@h[:notification_subject], @h[:notification_text]]
1567
1875
  end
@@ -1572,7 +1880,13 @@ end
1572
1880
  #
1573
1881
  class ToastAction < NotificationsAction
1574
1882
 
1575
- def initialize(h={})
1883
+ def initialize(obj)
1884
+
1885
+ h = if obj.is_a? Hash then
1886
+ obj
1887
+ else
1888
+ {msg: obj}
1889
+ end
1576
1890
 
1577
1891
  if h[:msg] then
1578
1892
  h[:message_text] = h[:msg]
@@ -1602,8 +1916,8 @@ class ToastAction < NotificationsAction
1602
1916
  "popup_message '%s'" % @h[:message_text]
1603
1917
  end
1604
1918
 
1605
- def to_s(colour: false)
1606
- "Popup Message\n %s" % @h[:message_text]
1919
+ def to_s(colour: false, indent: 0)
1920
+ @s = "Popup Message\n %s" % @h[:message_text]
1607
1921
  end
1608
1922
 
1609
1923
  end
@@ -1632,7 +1946,7 @@ class AnswerCallAction < PhoneAction
1632
1946
 
1633
1947
  end
1634
1948
 
1635
- def to_s(colour: false)
1949
+ def to_s(colour: false, indent: 0)
1636
1950
  @s = 'Answer Call' + "\n "
1637
1951
  super()
1638
1952
  end
@@ -1654,7 +1968,7 @@ class ClearCallLogAction < PhoneAction
1654
1968
 
1655
1969
  end
1656
1970
 
1657
- def to_s(colour: false)
1971
+ def to_s(colour: false, indent: 0)
1658
1972
  'ClearCallLogAction ' + @h.inspect
1659
1973
  end
1660
1974
 
@@ -1674,7 +1988,7 @@ class OpenCallLogAction < PhoneAction
1674
1988
 
1675
1989
  end
1676
1990
 
1677
- def to_s(colour: false)
1991
+ def to_s(colour: false, indent: 0)
1678
1992
  'OpenCallLogAction ' + @h.inspect
1679
1993
  end
1680
1994
 
@@ -1694,7 +2008,7 @@ class RejectCallAction < PhoneAction
1694
2008
 
1695
2009
  end
1696
2010
 
1697
- def to_s(colour: false)
2011
+ def to_s(colour: false, indent: 0)
1698
2012
  @s = 'Call Reject' + "\n "
1699
2013
  super()
1700
2014
  end
@@ -1716,7 +2030,7 @@ class MakeCallAction < PhoneAction
1716
2030
 
1717
2031
  end
1718
2032
 
1719
- def to_s(colour: false)
2033
+ def to_s(colour: false, indent: 0)
1720
2034
  'MakeCallAction ' + @h.inspect
1721
2035
  end
1722
2036
 
@@ -1738,7 +2052,7 @@ class SetRingtoneAction < PhoneAction
1738
2052
 
1739
2053
  end
1740
2054
 
1741
- def to_s(colour: false)
2055
+ def to_s(colour: false, indent: 0)
1742
2056
  'SetRingtoneAction ' + @h.inspect
1743
2057
  end
1744
2058
 
@@ -1770,7 +2084,7 @@ class SetBrightnessAction < ScreenAction
1770
2084
 
1771
2085
  end
1772
2086
 
1773
- def to_s(colour: false)
2087
+ def to_s(colour: false, indent: 0)
1774
2088
  'SetBrightnessAction ' + @h.inspect
1775
2089
  end
1776
2090
 
@@ -1791,7 +2105,7 @@ class ForceScreenRotationAction < ScreenAction
1791
2105
 
1792
2106
  end
1793
2107
 
1794
- def to_s(colour: false)
2108
+ def to_s(colour: false, indent: 0)
1795
2109
  'ForceScreenRotationAction ' + @h.inspect
1796
2110
  end
1797
2111
 
@@ -1815,7 +2129,7 @@ class ScreenOnAction < ScreenAction
1815
2129
 
1816
2130
  end
1817
2131
 
1818
- def to_s(colour: false)
2132
+ def to_s(colour: false, indent: 0)
1819
2133
 
1820
2134
  state = @h[:screen_off] ? 'Off' : 'On'
1821
2135
  state += ' ' + 'No Lock (root only)' if @h[:screen_off_no_lock]
@@ -1843,7 +2157,7 @@ class DimScreenAction < ScreenAction
1843
2157
 
1844
2158
  end
1845
2159
 
1846
- def to_s(colour: false)
2160
+ def to_s(colour: false, indent: 0)
1847
2161
  'DimScreenAction ' + @h.inspect
1848
2162
  end
1849
2163
 
@@ -1871,7 +2185,7 @@ class KeepAwakeAction < ScreenAction
1871
2185
 
1872
2186
  end
1873
2187
 
1874
- def to_s(colour: false)
2188
+ def to_s(colour: false, indent: 0)
1875
2189
 
1876
2190
  screen = @h[:screen_option] == 0 ? 'Screen On' : 'Screen Off'
1877
2191
 
@@ -1912,7 +2226,7 @@ class SetScreenTimeoutAction < ScreenAction
1912
2226
 
1913
2227
  end
1914
2228
 
1915
- def to_s(colour: false)
2229
+ def to_s(colour: false, indent: 0)
1916
2230
  'SetScreenTimeoutAction ' + @h.inspect
1917
2231
  end
1918
2232
 
@@ -1943,7 +2257,7 @@ class SilentModeVibrateOffAction < VolumeAction
1943
2257
 
1944
2258
  end
1945
2259
 
1946
- def to_s(colour: false)
2260
+ def to_s(colour: false, indent: 0)
1947
2261
  'SilentModeVibrateOffAction ' + @h.inspect
1948
2262
  end
1949
2263
 
@@ -1965,7 +2279,7 @@ class SetVibrateAction < VolumeAction
1965
2279
 
1966
2280
  end
1967
2281
 
1968
- def to_s(colour: false)
2282
+ def to_s(colour: false, indent: 0)
1969
2283
 
1970
2284
  a = [
1971
2285
  'Silent (Vibrate On)',
@@ -2002,7 +2316,7 @@ class VolumeIncrementDecrementAction < VolumeAction
2002
2316
 
2003
2317
  end
2004
2318
 
2005
- def to_s(colour: false)
2319
+ def to_s(colour: false, indent: 0)
2006
2320
  'VolumeIncrementDecrementAction ' + @h.inspect
2007
2321
  end
2008
2322
 
@@ -2024,7 +2338,7 @@ class SpeakerPhoneAction < VolumeAction
2024
2338
 
2025
2339
  end
2026
2340
 
2027
- def to_s(colour: false)
2341
+ def to_s(colour: false, indent: 0)
2028
2342
  'SpeakerPhoneAction ' + @h.inspect
2029
2343
  end
2030
2344
 
@@ -2049,7 +2363,7 @@ class SetVolumeAction < VolumeAction
2049
2363
 
2050
2364
  end
2051
2365
 
2052
- def to_s(colour: false)
2366
+ def to_s(colour: false, indent: 0)
2053
2367
  volume = @h[:stream_index_array].zip(@h[:stream_volume_array]).to_h[true]
2054
2368
  'Volume Change ' + "Notification = %s%%" % volume
2055
2369
  end