From af74ce734314d16a027f283ce16e8ecc233b7448 Mon Sep 17 00:00:00 2001 From: Jamon Holmgren Date: Tue, 2 Jun 2015 14:07:45 -0700 Subject: [PATCH 1/5] Exploratory programming --- lib/project/ext/object.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/project/ext/object.rb b/lib/project/ext/object.rb index f97cbfa..d3ad55d 100644 --- a/lib/project/ext/object.rb +++ b/lib/project/ext/object.rb @@ -1,4 +1,7 @@ class Object + def repl? + true + end # REMOVE when RubyMotion adds this def object_id From 86b18be97f0250ad490598361a531a30f0a4599f Mon Sep 17 00:00:00 2001 From: Jamon Holmgren Date: Tue, 2 Jun 2015 14:14:43 -0700 Subject: [PATCH 2/5] Added open to repl --- lib/project/ext/object.rb | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/project/ext/object.rb b/lib/project/ext/object.rb index d3ad55d..203f80b 100644 --- a/lib/project/ext/object.rb +++ b/lib/project/ext/object.rb @@ -1,8 +1,4 @@ class Object - def repl? - true - end - # REMOVE when RubyMotion adds this def object_id Java::Lang::System.identityHashCode(self) @@ -68,6 +64,9 @@ def find!(*args) # Do not alias this, strange bugs happen where classes don't ha rmq(*args).get end + def open(screen_class, options={}) + rmq.screen.open(screen_class, options) if rmq.screen + end # BluePotion stuff From 0fe78948e058d5e5baa0461e9ebd0784c5b86838 Mon Sep 17 00:00:00 2001 From: Jamon Holmgren Date: Tue, 2 Jun 2015 14:16:06 -0700 Subject: [PATCH 3/5] Add space back in --- lib/project/ext/object.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/project/ext/object.rb b/lib/project/ext/object.rb index 203f80b..1af38c7 100644 --- a/lib/project/ext/object.rb +++ b/lib/project/ext/object.rb @@ -1,4 +1,5 @@ class Object + # REMOVE when RubyMotion adds this def object_id Java::Lang::System.identityHashCode(self) From 58a41a828b02c5b1c3bf22ea7a47128b7229d601 Mon Sep 17 00:00:00 2001 From: Jamon Holmgren Date: Tue, 2 Jun 2015 15:00:18 -0700 Subject: [PATCH 4/5] Revert open --- lib/project/ext/object.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/project/ext/object.rb b/lib/project/ext/object.rb index 1af38c7..c0a3145 100644 --- a/lib/project/ext/object.rb +++ b/lib/project/ext/object.rb @@ -65,10 +65,6 @@ def find!(*args) # Do not alias this, strange bugs happen where classes don't ha rmq(*args).get end - def open(screen_class, options={}) - rmq.screen.open(screen_class, options) if rmq.screen - end - # BluePotion stuff # REMOVE when mp starts working From 5d7d6660669ee516546844bcdde169c1a924ea56 Mon Sep 17 00:00:00 2001 From: Jamon Holmgren Date: Tue, 2 Jun 2015 16:30:34 -0700 Subject: [PATCH 5/5] Added lifecycle methods, set_action_bar_button --- lib/project/pro_motion/pm_activity.rb | 6 ++++ lib/project/pro_motion/pm_screen.rb | 32 +++++++++++++++++++ lib/project/pro_motion/pm_screen_module.rb | 32 +++++++++++++++++++ .../pro_motion/pm_single_fragment_activity.rb | 6 +++- 4 files changed, 75 insertions(+), 1 deletion(-) diff --git a/lib/project/pro_motion/pm_activity.rb b/lib/project/pro_motion/pm_activity.rb index 5db96a0..845e482 100644 --- a/lib/project/pro_motion/pm_activity.rb +++ b/lib/project/pro_motion/pm_activity.rb @@ -33,6 +33,12 @@ def onDestroy def clear_references end + def onCreateOptionsMenu(menu) + on_create_menu(menu) + end + + def on_create_menu(_); end + end #end diff --git a/lib/project/pro_motion/pm_screen.rb b/lib/project/pro_motion/pm_screen.rb index f166169..a7f298b 100644 --- a/lib/project/pro_motion/pm_screen.rb +++ b/lib/project/pro_motion/pm_screen.rb @@ -6,6 +6,12 @@ class PMScreen < Android::App::Fragment attr_accessor :view + def onAttach(activity); super; on_attach(activity); end + def on_attach(activity); end + + def onCreate(bundle); super; on_create(bundle); end + def on_create(bundle); end + def onCreateView(inflater, parent, saved_instance_state) super @@ -18,8 +24,11 @@ def onCreateView(inflater, parent, saved_instance_state) action_bar.hide if hide_action_bar? + on_create_view(inflater, parent, saved_instance_state) + @view end + def on_create_view(inflater, parent, saved_instance_state); end def load_view Potion::FrameLayout.new(self.activity) @@ -45,8 +54,31 @@ def onActivityCreated(saved_instance_state) self.activity.title = self.class.bars_title on_load + on_activity_created end + def on_load; end + def on_activity_created; end + + def onStart; super; on_start; end + def on_start; end + + def onResume; super; on_resume; end + def on_resume; end + + def onPause; super; on_pause; end + def on_pause; end + + def onStop; super; on_stop; end + def on_stop; end + + def onDestroyView; super; on_destroy_view; end + def on_destroy_view; end + + def onDestroy; super; on_destroy; end + def on_destroy; end + def onDetach; super; on_detach; end + def on_detach; end private diff --git a/lib/project/pro_motion/pm_screen_module.rb b/lib/project/pro_motion/pm_screen_module.rb index 214ff5f..89911cd 100644 --- a/lib/project/pro_motion/pm_screen_module.rb +++ b/lib/project/pro_motion/pm_screen_module.rb @@ -161,5 +161,37 @@ def action_bar activity.getActionBar() end + def menu + activity.menu + end + + # Example: set_action_bar_button :right, { title: "My text", show: :if_room } + def set_action_bar_button(side, options={}) + unless menu + mp "#{self.inspect}#set_action_bar_button: No menu set up yet." + return + end + + option[:show] ||= :always + + # Should be something like Android::MenuItem::SHOW_AS_ACTION_IF_ROOM + show_as_action = 0 if options[:show] == :never + show_as_action = 1 if options[:show] == :if_room + show_as_action = 2 if options[:show] == :always + show_as_action = 4 if options[:show] == :with_text + show_as_action = 8 if options[:show] == :collapse + + if side == :left + mp "#{self.inspect}#set_action_bar_button: Left bar buttons not implemented yet." + elsif side == :right + btn = self.activity.menu.add(options.fetch(:group, 0), options.fetch(:item_id, 0), options.fetch(:order, 0), options.fetch(:title, "Untitled")) + btn.setShowAsAction(show_as_action) if show_as_action + btn.setIcon(options[:icon]) if options[:icon] + end + btn + end + alias_method :set_nav_bar_button, :set_action_bar_button + + end #end diff --git a/lib/project/pro_motion/pm_single_fragment_activity.rb b/lib/project/pro_motion/pm_single_fragment_activity.rb index 89d8024..3d018ac 100644 --- a/lib/project/pro_motion/pm_single_fragment_activity.rb +++ b/lib/project/pro_motion/pm_single_fragment_activity.rb @@ -2,7 +2,7 @@ # RM-733 #module ProMotion class PMSingleFragmentActivity < PMActivity - attr_accessor :fragment_container, :fragment + attr_accessor :fragment_container, :fragment, :menu EXTRA_FRAGMENT_CLASS = "fragment_class" @@ -27,5 +27,9 @@ def set_fragment(fragment) fragmentManager.beginTransaction.add(@fragment_container.getId, fragment, fragment.class.to_s).commit end + def on_create_menu(menu) + @menu = menu + end + end #end