module ProMotion
  class CollectionViewController < UICollectionViewController
    def self.new(args = {})
      s = self.alloc.initWithCollectionViewLayout(get_collection_layout)
      s.screen_init(args) if s.respond_to?(:screen_init)
      s
    end

    def init
      super.tap do
        screen_init if respond_to?(:screen_init)
      end
    end

    def loadView
      self.respond_to?(:load_view) ? self.load_view : super
    end

    def viewWillAppear(animated)
      super
      self.view_will_appear(animated) if self.respond_to?("view_will_appear:")
    end

    def viewDidAppear(animated)
      super
      self.view_did_appear(animated) if self.respond_to?("view_did_appear:")
    end

    def viewWillDisappear(animated)
      self.view_will_disappear(animated) if self.respond_to?("view_will_disappear:")
      super
    end

    def viewDidDisappear(animated)
      self.view_did_disappear(animated) if self.respond_to?("view_did_disappear:")
      super
    end

    def shouldAutorotateToInterfaceOrientation(orientation)
      self.should_rotate(orientation)
    end

    def shouldAutorotate
      self.should_autorotate
    end

    def willRotateToInterfaceOrientation(orientation, duration:duration)
      self.will_rotate(orientation, duration)
    end

    def didRotateFromInterfaceOrientation(orientation)
      self.on_rotate
    end
  end
end
