lib/ProMotion/classes/Screen.rb in ProMotion-0.1.0 vs lib/ProMotion/classes/Screen.rb in ProMotion-0.1.1
- old
+ new
@@ -1,139 +1,12 @@
module ProMotion
- module ScreenElements
- def add_element(view, attrs = {})
- if attrs.length > 0
- set_attributes(view, attrs)
- end
- self.view_controller.view.addSubview(view)
- view
- end
-
- def remove_element(view)
- view.removeFromSuperview
- view = nil
- nil
- end
-
- def bounds
- return self.view_controller.view.bounds
- end
-
- def frame
- return self.view_controller.view.frame
- end
-
- def view
- return self.view_controller.view
- end
-
- def set_attributes(element, args = {})
- args.each do |k, v|
- element.send("#{k}=", v) if element.respond_to? "#{k}="
- end
- element
- end
- end
-
- module ScreenNavigation
- def open_screen(screen, args = {})
- # Instantiate screen if given a class instead
- screen = screen.new if screen.respond_to? :new
- screen.add_nav_bar if args[:nav_bar]
- screen.parent_screen = self
-
- screen.main_controller.hidesBottomBarWhenPushed = true if args[:hide_tab_bar]
-
- if args[:close_all]
- fresh_start(screen)
- elsif self.navigation_controller
- screen.navigation_controller = self.navigation_controller
- push_view_controller screen.view_controller
- else
- open_view_controller screen.main_controller
- end
-
- screen.on_opened if screen.respond_to? :on_opened
- end
-
- def fresh_start(screen)
- app_delegate.fresh_start(screen)
- end
-
- def app_delegate
- UIApplication.sharedApplication.delegate
- end
-
- def close_screen(args = {})
- # Pop current view, maybe with arguments, if in navigation controller
- if self.navigation_controller
- self.navigation_controller.popViewControllerAnimated(true)
- else
- # What do we do now? Nothing to "pop"
- end
- end
-
- def tab_bar_controller(*screens)
- tab_bar_controller = UITabBarController.alloc.init
-
- view_controllers = []
- screens.each do |s|
- if s.is_a? Screen
- s = s.new if s.respond_to? :new
- view_controllers << s.main_controller
- else
- Console.log("Non-Screen passed into tab_bar_controller: #{s.to_s}", withColor: Console::RED_COLOR)
- end
- end
-
- tab_bar_controller.viewControllers = view_controllers
- tab_bar_controller
- end
-
- def open_tab_bar(*screens)
- tab_bar = tab_bar_controller(*screens)
- open_view_controller tab_bar
- screens.each do |s|
- s.on_opened if s.respond_to? :on_opened
- s.parent_screen = self if s.respond_to? "parent_screen="
- end
- tab_bar
- end
-
- def push_tab_bar(*screens)
- tab_bar = tab_bar_controller(*screens)
- push_view_controller tab_bar
- screens.each do |s|
- s.on_opened if s.respond_to? :on_opened
- s.parent_screen = self if s.respond_to? "parent_screen="
- end
- tab_bar
- end
-
- def open_view_controller(vc)
- UIApplication.sharedApplication.delegate.load_root_view vc
- end
-
- def push_view_controller(vc)
- # vc.hidesBottomBarWhenPushed = true if args[:hide_tab_bar]
- Console.log(" You need a nav_bar if you are going to push #{vc.to_s} onto it.", withColor: Console::RED_COLOR) unless self.navigation_controller
- self.navigation_controller.pushViewController(vc, animated: true)
- end
- end
-end
-
-module ProMotion
# Instance methods
class Screen
include ProMotion::ScreenNavigation
include ProMotion::ScreenElements
- attr_accessor :view_controller
- attr_accessor :navigation_controller
- attr_accessor :parent_screen
- attr_accessor :first_screen
- attr_accessor :tab_bar_item
+ attr_accessor :view_controller, :navigation_controller, :parent_screen, :first_screen, :tab_bar_item, :modal
def initialize(attrs = {})
attrs.each do |k, v|
self.send "#{k}=", v if self.respond_to? "#{k}="
end
@@ -147,10 +20,14 @@
self.on_load if self.respond_to? :on_load
self
end
+ def is_modal?
+ self.modal
+ end
+
def load_view_controller
self.view_controller ||= ViewController
end
def set_tab_bar_item(args = {})
@@ -198,9 +75,10 @@
def set_view_controller(vc)
self.view_controller = vc
end
def view_will_appear(animated)
+ self.will_appear if self.respond_to? :will_appear
end
def view_did_appear(animated)
self.on_appear if self.respond_to? :on_appear
end
\ No newline at end of file