Sha256: ed7b8e92286b7d836955b6410589f8976df81ebabff77d306c4a6af2960ef116

Contents?: true

Size: 1.64 KB

Versions: 3

Compression:

Stored size: 1.64 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

    def start_refreshing
      return unless @refresh_control

      @refresh_control.beginRefreshing
    end
    alias :begin_refreshing :start_refreshing

    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
    alias :stop_refreshing :end_refreshing

    ######### 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

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
ProMotion-0.7.8 lib/ProMotion/screens/_tables/_refreshable_table.rb
ProMotion-0.7.6 lib/ProMotion/screens/_tables/_refreshable_table.rb
ProMotion-0.7.5 lib/ProMotion/screens/_tables/_refreshable_table.rb