Class: MotionPrime::PageViewSection
- Inherits:
-
AbstractCollectionSection
- Object
- Section
- AbstractCollectionSection
- MotionPrime::PageViewSection
- Defined in:
- motion-prime/sections/page_view.rb
Constant Summary
Constants inherited from Section
Section::DEFAULT_CONTENT_HEIGHT, Section::KEYBOARD_HEIGHT_LANDSCAPE, Section::KEYBOARD_HEIGHT_PORTRAIT
Instance Attribute Summary collapse
-
#page_controller ⇒ Object
Returns the value of attribute page_controller.
Attributes inherited from AbstractCollectionSection
#collection_element, #decelerating, #did_appear
Attributes inherited from Section
#elements, #model, #name, #options, #screen, #section_styles
Attributes included from DrawSectionMixin
#cached_draw_image, #container_element, #container_gesture_recognizers
Instance Method Summary collapse
- #add_pages(sections, follow = false) ⇒ Object
- #collection_delegate ⇒ Object
- #collection_styles_base ⇒ Object
- #current_page_id ⇒ Object
- #index_for_page(view_controller) ⇒ Object
- #page_did_set(index) ⇒ Object
- #page_element_options ⇒ Object
-
#page_for_index(index) ⇒ Object
Delegate.
- #page_will_set(index) ⇒ Object
- #reload_collection_data ⇒ Object
- #render_collection ⇒ Object
- #set_first_page ⇒ Object
- #set_page(index, animated = false, &block) ⇒ Object
- #set_view_controllers(controllers, animated = false, &completion) ⇒ Object
Methods inherited from AbstractCollectionSection
#cell_for_index, #cell_name, #cell_section_by_index, #cell_section_styles, #cell_sections_for_group, #collection_data, #collection_element_options, #collection_styles, #collection_view, #data, #dealloc, #fixed_collection_data, #height_for_index, #hide, #on_appear, #on_cell_render, #on_click, #refresh_if_needed, #reload, #reload_data, #render_cell, #reset_collection_data, #scroll_view_did_end_decelerating, #scroll_view_did_end_dragging, #scroll_view_did_scroll, #scroll_view_will_begin_dragging, #show, #update_pull_to_refresh_after_scroll
Methods included from HasStyleChainBuilder
Methods inherited from Section
#add_element, after_element_render, #after_element_render, after_initialize, after_render, before_initialize, before_render, bind_keyboard_close, #bind_keyboard_events, #bring_to_front, container, #container_bounds, #container_height, #container_options, #create_elements, #current_input_view_height, #dealloc, #default_name, element, #element, #elements_options, #elements_to_draw, #elements_to_render, #hard_reload_section, #has_container_bounds?, #hide, #hide_keyboard, inherited, #initialize, #keyboard_will_hide, #keyboard_will_show, #on_keyboard_hide, #on_keyboard_show, #reload, #render, #render!, #render_container, #render_element?, #screen?, #show, #strong_references, #view
Methods included from DelegateMixin
#clear_delegated, #delegated_by
Methods included from DrawSectionMixin
#after_element_render, #before_element_render, #bind_gesture_on_container_for, #clear_gesture_for_receiver, #draw_in, #prerender_elements_for_state, #prerender_enabled?
Methods included from SectionWithContainerMixin
#container_view, #init_container_element, #load_container_with_elements
Methods included from FrameCalculatorMixin
Methods included from HasStyles
Methods included from HasClassFactory
#camelize_factory, #class_factory, #low_camelize_factory, #underscore_factory
Methods included from HasNormalizer
#debug_info, #element?, #normalize_object, #normalize_options, #normalize_value
Methods included from HasAuthorization
#api_client, #current_user, #reset_current_user, #user_signed_in?
Constructor Details
This class inherits a constructor from MotionPrime::Section
Instance Attribute Details
#page_controller ⇒ Object
Returns the value of attribute page_controller.
5 6 7 |
# File 'motion-prime/sections/page_view.rb', line 5 def page_controller @page_controller end |
Instance Method Details
#add_pages(sections, follow = false) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 |
# File 'motion-prime/sections/page_view.rb', line 50 def add_pages(sections, follow = false) @data += Array.wrap(sections) if follow page_index = data.count - 1 set_page(page_index, true) do |finished| BW::Reactor.schedule_on_main { set_page(page_index, false) } end else reload_collection_data end end |
#collection_delegate ⇒ Object
13 14 15 |
# File 'motion-prime/sections/page_view.rb', line 13 def collection_delegate @collection_delegate ||= PageViewDelegate.new(section: self) end |
#collection_styles_base ⇒ Object
9 10 11 |
# File 'motion-prime/sections/page_view.rb', line 9 def collection_styles_base :base_page_view end |
#current_page_id ⇒ Object
62 63 64 |
# File 'motion-prime/sections/page_view.rb', line 62 def current_page_id index_for_page(page_controller.viewControllers.last) end |
#index_for_page(view_controller) ⇒ Object
82 83 84 |
# File 'motion-prime/sections/page_view.rb', line 82 def index_for_page(view_controller) Array.wrap(@view_controllers).index(view_controller) end |
#page_did_set(index) ⇒ Object
47 |
# File 'motion-prime/sections/page_view.rb', line 47 def page_did_set(index); end |
#page_element_options ⇒ Object
17 18 19 |
# File 'motion-prime/sections/page_view.rb', line 17 def end |
#page_for_index(index) ⇒ Object
Delegate
67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'motion-prime/sections/page_view.rb', line 67 def page_for_index(index) return nil if !index || data.length == 0 || index < 0 || index >= data.size @view_controllers ||= [] if @view_controllers[index] @view_controllers[index] else controller = MotionPrime::Screen.new controller.parent_screen = self.screen section = data[index] section.screen = controller.weak_ref controller.set_section :main, instance: section @view_controllers[index] = controller end end |
#page_will_set(index) ⇒ Object
48 |
# File 'motion-prime/sections/page_view.rb', line 48 def page_will_set(index); end |
#reload_collection_data ⇒ Object
34 35 36 |
# File 'motion-prime/sections/page_view.rb', line 34 def reload_collection_data set_view_controllers(page_controller.viewControllers, false) end |
#render_collection ⇒ Object
21 22 23 |
# File 'motion-prime/sections/page_view.rb', line 21 def render_collection self.collection_element = screen.page_view_controller() end |
#set_first_page ⇒ Object
25 26 27 |
# File 'motion-prime/sections/page_view.rb', line 25 def set_first_page set_page(0) end |
#set_page(index, animated = false, &block) ⇒ Object
29 30 31 32 |
# File 'motion-prime/sections/page_view.rb', line 29 def set_page(index, animated = false, &block) page = page_for_index(index) set_view_controllers([page], animated, &block) end |
#set_view_controllers(controllers, animated = false, &completion) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'motion-prime/sections/page_view.rb', line 38 def set_view_controllers(controllers, animated = false, &completion) completion ||= proc{|a|} index = index_for_page(controllers.last) current_index = index_for_page(page_controller.viewControllers.last).to_i direction = current_index <= index ? UIPageViewControllerNavigationDirectionForward : UIPageViewControllerNavigationDirectionReverse page_controller.setViewControllers(controllers, direction: direction, animated: animated, completion: completion) page_did_set(index) end |