class PMBaseAdapter

Attributes

data[RW]

Public Class Methods

new(opts={}) click to toggle source
Calls superclass method
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 4
def initialize(opts={})
  super()
  self.data = opts.fetch(:data, [])
end

Public Instance Methods

action_arguments(data, position) click to toggle source

configure what to pass back when we tap that action

# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 88
def action_arguments(data, position)
  data[:arguments]
end
areAllItemsEnabled() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 16
def areAllItemsEnabled(); are_all_items_enabled?; end
are_all_items_enabled?() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 17
def are_all_items_enabled?
  true
end
count() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 59
def count()
  data.length
end
getCount() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 58
def getCount(); count(); end
getItem(position) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 63
def getItem(position); item_data(position); end
getItemId(position) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 68
def getItemId(position); item_id(position); end
getItemViewType(position) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 42
def getItemViewType(position); item_view_type_id(position); end
getView(position, convert_view, parent) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 73
def getView(position, convert_view, parent); view(position, convert_view, parent); end
getViewTypeCount() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 36
def getViewTypeCount(); view_type_count; end
hasStableIds() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 31
def hasStableIds(); has_stable_ids?; end
has_stable_ids?() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 32
def has_stable_ids?
  true
end
inflate_row(xml_resource) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 141
def inflate_row(xml_resource)
  inflater = Potion::LayoutInflater.from(find.activity)
  row_view = inflater.inflate(xml_resource, nil, true)
end
isEmpty() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 26
def isEmpty(); is_empty?; end
isEnabled(position) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 21
def isEnabled(position); is_enabled?(position); end
is_empty?() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 27
def is_empty?
  data.blank?
end
is_enabled?(position) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 22
def is_enabled?(position)
  true
end
item_data(position) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 64
def item_data(position)
  data[position]
end
item_id(position) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 69
def item_id(position)
  position
end
item_view_type_id(position) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 43
def item_view_type_id(position)
  data_item = self.item_data(position)
  idx = nil
  if data_item[:prevent_reuse]
    idx = Android::Widget::Adapter::IGNORE_ITEM_VIEW_TYPE
  else
    # get custom cell index
    idx = view_types.index(data_item[:cell_xml] || data_item[:cell_class])
    # Shift custom cells up 1, no custom == index 0
    idx = idx ? (idx + 1) : 0
  end

  idx
end
screen() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 9
def screen
  @screen ||= rmq.screen
end
screen=(value) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 12
def screen=(value)
  @screen
end
selected_view(cv, data) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 123
def selected_view(cv, data)
  row_view = cv
  unless row_view
    if data[:cell_class]
      row_view = rmq.create!(data[:cell_class])
    elsif data[:cell_xml]
      row_view = inflate_row(data[:cell_xml])
      rmq.tag_all_from_resource_entry_name(row_view)
    else
      # Default is Sipmle List Item 1
      # TODO:  Possibly use Android::R::Layout::Simple_list_item_2 which has subtitle
      #https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/layout/simple_list_item_2.xml
      row_view = inflate_row(Android::R::Layout::Simple_list_item_1)
    end
  end
  row_view
end
update_view(view, data) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 92
def update_view(view, data)
  update = data[:update]
  if update.is_a?(Proc)
    update.call(out, data)
  elsif update.is_a?(Symbol) || update.is_a?(String)
    if find.screen.respond_to?(update)
      find.screen.send(update, view, data)
    else
      mp "Warning: #{find.screen.class} does not respond to #{update}"
    end
  elsif data[:properties]
    data[:properties].each do |k, v|
      if view.respond_to?("#{k}=")
        view.send("#{k}=", v)
      else
        mp "Warning: #{view.class} does not respond to #{k}="
      end
    end
  elsif view.is_a?(Potion::TextView)
    # Specific to use of Simple list item 1
    view.text = data[:title]
  elsif update
    mp "We don't know how to update your cell"
  end
end
view(position, convert_view, parent) click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 74
def view(position, convert_view, parent)
  data = item_data(position)
  out = selected_view(convert_view, data)
  update_view(out, data)
  if data[:action]
    find(out).on(:tap) do
      arguments = action_arguments data, position
      find.screen.send(data[:action], arguments, position) 
    end
  end
  out
end
view_type_count() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 37
def view_type_count()
  # all custom items added up (+1 for non-custom)
  view_types.length + 1
end
view_types() click to toggle source
# File lib/project/pro_motion/adapters/pm_base_adapter.rb, line 118
def view_types
  # unique cell_xmls and cell_classes
  data.map{ |i| i[:cell_xml] || i[:cell_class]}.compact.uniq
end