Sha256: fa5ccc90ad5c2ee0630ccde2670cfb5e677c44cd7dc90a9a934bb2c2f02272c2

Contents?: true

Size: 1.56 KB

Versions: 4

Compression:

Stored size: 1.56 KB

Contents

module ProMotion
  module RefreshableTable
    def make_refreshable(params={})
      pull_message = params[:pull_message] || "Pull to refresh"
      @refreshing = params[:refreshing] || "Refreshing data..."
      @updated_format = params[:updated_format] || "Last updated at %s"
      @updated_time_format = params[:updated_time_format] || "%l:%M %p"
      @refreshable_callback = params[:callback]|| :on_refresh

      @refresh_control = UIRefreshControl.alloc.init
      @refresh_control.attributedTitle = NSAttributedString.alloc.initWithString(pull_message)
      @refresh_control.addTarget(self, action:'refreshView:', forControlEvents:UIControlEventValueChanged)
      self.refreshControl = @refresh_control
    end
    alias :makeRefreshable :make_refreshable

    ######### iOS methods, headless camel case #######

    # UIRefreshControl Delegates
    def refreshView(refresh)
      refresh.attributedTitle = NSAttributedString.alloc.initWithString(@refreshing)
      if @refreshable_callback && self.respond_to?(@refreshable_callback)
        self.send(@refreshable_callback)
      else
        PM.logger.warn "You must implement the '#{@refreshable_callback}' method in your TableScreen."
      end
    end

    def start_refreshing
      return unless @refresh_control

      @refresh_control.beginRefreshing
    end

    def end_refreshing
      return unless @refresh_control

      @refresh_control.attributedTitle = NSAttributedString.alloc.initWithString(sprintf(@updated_format, Time.now.strftime(@updated_time_format)))
      @refresh_control.endRefreshing
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
ProMotion-0.7.3 lib/ProMotion/screens/_tables/_refreshable_table.rb
ProMotion-0.7.2 lib/ProMotion/screens/_tables/_refreshable_table.rb
ProMotion-0.7.1 lib/ProMotion/screens/_tables/_refreshable_table.rb
ProMotion-0.7.0 lib/ProMotion/screens/_tables/_refreshable_table.rb