class UIInteractionAction

Category: Device Actions

Public Class Methods

new(obj=nil) click to toggle source
Calls superclass method DeviceAction::new
# File lib/ruby-macrodroid/actions.rb, line 1172
def initialize(obj=nil)

  if obj.is_a? Hash then
    h = obj
  elsif obj.is_a? Array
    
    e, macro = obj
    s = e.text('item/description').to_s
    
    r = s.match(/^(Click|Long Click) \[(.*)\]$/)

    # [Current focus] # Current focus
    # [0,0] # x,y location
    # [274,186] # Identify in app
    # [fooo] # Text content

    h = {
      ui_interaction_configuration: {
                                     :xy_point=>{:x=>0, :y=>0},
                                     :type=>"Click"} 
    }
    h2 = h[:ui_interaction_configuration]

    if r then

      h[:action] = 0

      click, detail = r.captures
      h2[:long_click] = false if click.downcase.to_sym == :click

      if detail == 'Current focus' then          
        h2[:click_option] = 0
      elsif detail =~ /\d+,\d+/
        # to-do
      else
        # text content
        h2[:click_option] = 1
        h2[:text_content] = detail
      end
      
      #h[:ui_interaction_configuration] = h2
    end

  end   
  
  options = {
    ui_interaction_configuration: {:type=>"Copy"},
    action: 2
  }


  super(options.merge h) 
  
  @list = %w(uiInteractionConfiguration action xyPoint textContent  clickOption type longClick)

end

Public Instance Methods

to_s(colour: false, indent: 0) click to toggle source
Calls superclass method MacroObject#to_s
# File lib/ruby-macrodroid/actions.rb, line 1229
def to_s(colour: false, indent: 0)

  ui = @h[:ui_interaction_configuration]
  
  option = -> do
    detail = case ui[:click_option]
    when 0 # 'Current focus'
      'Current focus'
    when 1 # 'Text content'
      ui[:text_content]
    when 2 # 'X, Y location'
      "%s" % ui[:xy_point].values.join(',')
    when 3 # 'Identify in app'
      "id:%s" % ui[:view_id]
    end      
  end
  
  s = case @h[:action]
  when 0 # 'Click'
    'Click' + " [%s]" % option.call
  when 1 # 'Long Click'
    'Long Click' + " [%s]" % option.call
  when 2 # 'Copy'
    'Copy'
  when 3 # 'Cut'
    'Cut'
  when 4 # 'Paste'
    "Paste [%s]" % (ui[:use_clipboard] ? 'Clipboard text' : ui[:text])
  when 5 # 'Clear selection'
    'Clear selection'
  when 6 # 'Gesture'
    detail = "%d ms: %d,%d -> %d,%d" % [ui[:duration_ms], ui[:start_x], 
        ui[:start_y], ui[:end_x], ui[:end_y]]
    "Gesture [%s]" % detail
  end
  
  @s = 'UI Interaction' + "\n" + s #+ ' ' + @h.inspect
  super()
end
Also aliased as: to_summary
to_summary(colour: false, indent: 0)
Alias for: to_s