class Formotion::RowType::ImageRow
Constants
- CANCEL
- CHOOSE
- DELETE
- IMAGE_VIEW_TAG
- TAKE
Public Instance Methods
actionSheet(actionSheet, clickedButtonAtIndex: index)
click to toggle source
# File lib/formotion/row_type/image_row.rb, line 72 def actionSheet actionSheet, clickedButtonAtIndex: index source = nil if index == actionSheet.destructiveButtonIndex row.value = nil return end case actionSheet.buttonTitleAtIndex(index) when TAKE source = :camera when CHOOSE source = :photo_library when CANCEL else p "Unrecognized button title #{actionSheet.buttonTitleAtIndex(index)}" end if source @camera = BW::Device.camera.send((source == :camera) ? :rear : :any) @camera.picture(source_type: source, media_types: [:image]) do |result| if result[:original_image] #-Resize image when requested (no image upscale) if result[:original_image].respond_to?(:resize_image_to_size) and row.max_image_size result[:original_image]=result[:original_image].resize_image_to_size(row.max_image_size, false) end row.value = result[:original_image] end end end end
add_plus_accessory(cell)
click to toggle source
# File lib/formotion/row_type/image_row.rb, line 104 def add_plus_accessory(cell) @add_button ||= begin button = UIButton.buttonWithType(UIButtonTypeContactAdd) button.accessibilityLabel = BW.localized_string("add image", nil) button.when(UIControlEventTouchUpInside) do self._on_select(nil, nil) end button end cell.accessoryView = cell.editingAccessoryView = @add_button end
build_cell(cell)
click to toggle source
# File lib/formotion/row_type/image_row.rb, line 15 def build_cell(cell) cell.selectionStyle = self.row.selection_style || UITableViewCellSelectionStyleBlue # only show the "plus" when editable add_plus_accessory(cell) if row.editable? && (row.value == nil) observe(self.row, "value") do |old_value, new_value| @image_view.image = new_value if new_value self.row.row_height = 200 cell.accessoryView = cell.editingAccessoryView = nil else self.row.row_height = 44 # only show the "plus" when editable add_plus_accessory(cell) if row.editable? && (row.value == nil) end row.form.reload_data end @image_view = UIImageView.alloc.init @image_view.image = row.value if row.value @image_view.tag = IMAGE_VIEW_TAG @image_view.contentMode = UIViewContentModeScaleAspectFit @image_view.backgroundColor = UIColor.clearColor cell.addSubview(@image_view) cell.swizzle(:layoutSubviews) do def layoutSubviews old_layoutSubviews # viewWithTag is terrible, but I think it's ok to use here... formotion_field = self.viewWithTag(IMAGE_VIEW_TAG) field_frame = formotion_field.frame field_frame.origin.y = 10 field_frame.origin.x = self.textLabel.frame.origin.x + self.textLabel.frame.size.width + Formotion::RowType::Base.field_buffer field_frame.size.width = self.frame.size.width - field_frame.origin.x - Formotion::RowType::Base.field_buffer field_frame.size.height = self.frame.size.height - Formotion::RowType::Base.field_buffer formotion_field.frame = field_frame end end end
layoutSubviews()
click to toggle source
# File lib/formotion/row_type/image_row.rb, line 41 def layoutSubviews old_layoutSubviews # viewWithTag is terrible, but I think it's ok to use here... formotion_field = self.viewWithTag(IMAGE_VIEW_TAG) field_frame = formotion_field.frame field_frame.origin.y = 10 field_frame.origin.x = self.textLabel.frame.origin.x + self.textLabel.frame.size.width + Formotion::RowType::Base.field_buffer field_frame.size.width = self.frame.size.width - field_frame.origin.x - Formotion::RowType::Base.field_buffer field_frame.size.height = self.frame.size.height - Formotion::RowType::Base.field_buffer formotion_field.frame = field_frame end
on_select(tableView, tableViewDelegate)
click to toggle source
# File lib/formotion/row_type/image_row.rb, line 57 def on_select(tableView, tableViewDelegate) if !row.editable? return end @action_sheet = UIActionSheet.alloc.init @action_sheet.delegate = self @action_sheet.destructiveButtonIndex = (@action_sheet.addButtonWithTitle DELETE) if row.value @action_sheet.addButtonWithTitle TAKE if BW::Device.camera.front? or BW::Device.camera.rear? @action_sheet.addButtonWithTitle CHOOSE @action_sheet.cancelButtonIndex = (@action_sheet.addButtonWithTitle CANCEL) @action_sheet.showInView @image_view end