module MotionHybrid::Bridgeable

Public Instance Methods

on_appear() click to toggle source
Calls superclass method
# File lib/motion-hybrid/concerns/bridgeable.rb, line 4
def on_appear
  super
  @appeared = true
  set_titles if dom_loaded?
  refresher.endRefreshing if refresher #avoids stuck animation
end

Private Instance Methods

appeared?() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 30
def appeared?
  !!@appeared
end
dom_loaded() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 17
def dom_loaded
  PM.logger.debug "#{self} dom_loaded"
  set_titles if appeared?
  set_buttons
  set_refresher
  render_flash
  @dom_loaded = true
end
dom_loaded?() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 26
def dom_loaded?
  !!@dom_loaded
end
load_bridge() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 13
def load_bridge
  self.bridge = Bridge.new(self)
end
on_nav_bar_button_click(side) click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 59
def on_nav_bar_button_click(side)
  button = bridge.nav_bar_buttons.send(side)
  if button.options.any?
    UIActionSheet.alert nil, buttons: button.options do |pressed, index|
      index = remap_index(index, button.options)
      bridge.click_child(button.id, index)
    end
  else
    bridge.click(button.id)
  end
end
on_nav_bar_left_button_click() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 80
def on_nav_bar_left_button_click
  on_nav_bar_button_click(:left)
end
on_nav_bar_right_button_click() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 84
def on_nav_bar_right_button_click
  on_nav_bar_button_click(:right)
end
remap_index(index, options) click to toggle source

iOS button order and actual order of buttons on screen are not the same

# File lib/motion-hybrid/concerns/bridgeable.rb, line 72
def remap_index(index, options)
  if index == options.length - 1
    0
  else
    index + 1
  end
end
render_flash() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 96
def render_flash
  Flash.new(bridge.flash.title, subtitle: bridge.flash.subtitle).show if bridge.flash
end
set_button(side, button) click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 52
def set_button(side, button)
  return unless button
  return if button.if && !send(button.if)
  label = button.icon ? Icon.new(button.icon, 20) : button.label
  send "set_nav_bar_#{side}_button", label, action: "on_nav_bar_#{side}_button_click"
end
set_buttons() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 43
def set_buttons
  if bridge.nav_bar_buttons
    set_button :left, bridge.nav_bar_buttons.left
    set_button :right, bridge.nav_bar_buttons.right
  else
    PM.logger.debug 'No buttons found'
  end
end
set_refresher() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 88
def set_refresher
  if bridge.refreshable && !refresher
    self.refresher = UIRefreshControl.alloc.init
    refresher.addTarget(self, action: 'reload', forControlEvents: UIControlEventValueChanged)
    webview.scrollView.addSubview(refresher)
  end
end
set_titles() click to toggle source
# File lib/motion-hybrid/concerns/bridgeable.rb, line 34
def set_titles
  if bridge.subtitle.present?
    self.navigationItem.titleView = MultiLineHeader.new(bridge.title, bridge.subtitle)
  else
    self.title = bridge.title
    self.navigationItem.titleView = nil
  end
end