diff --git a/Opus/Code/MainActivity.cs b/Opus/Code/MainActivity.cs index 5947582..cc9b243 100644 --- a/Opus/Code/MainActivity.cs +++ b/Opus/Code/MainActivity.cs @@ -186,16 +186,8 @@ namespace Opus else if (MusicPlayer.UseCastPlayer) MusicPlayer.GetQueueFromCast(); - Console.WriteLine("&Resuming, Search Instance: " + SearchableActivity.instance + " SearchQuery: " + SearchableActivity.instance?.SearchQuery); if (SearchableActivity.instance != null && SearchableActivity.instance.SearchQuery != null && SearchableActivity.instance.SearchQuery != "") { - IMenuItem searchItem = menu.FindItem(Resource.Id.search); - searchItem.ExpandActionView(); - SearchView searchView = (SearchView)searchItem.ActionView; - searchView.SetQuery(SearchableActivity.instance.SearchQuery, false); - searchView.ClearFocus(); - searchView.Focusable = false; - if(YoutubeSearch.instances == null || SearchableActivity.instance.SearchQuery != YoutubeSearch.instances[0].querryType) //We don't want to redo the query if the user already searched for the exact same query. SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(SearchableActivity.instance.SearchQuery, 0)).AddToBackStack("Youtube").Commit(); SearchableActivity.instance = null; @@ -315,12 +307,31 @@ namespace Opus { if (PlaylistTracks.instance != null || FolderTracks.instance != null || ChannelDetails.instance != null) { - //for (int i = 0; i < SupportFragmentManager.BackStackEntryCount; i++) - //{ - // Console.WriteLine("&Back stack entry " + i + ": " + SupportFragmentManager.GetBackStackEntryAt(i)); - //} + for (int i = 0; i < SupportFragmentManager.BackStackEntryCount; i++) + { + Console.WriteLine("&Back stack entry " + i + ": " + SupportFragmentManager.GetBackStackEntryAt(i)); + } SupportFragmentManager.PopBackStack(); + Console.WriteLine("&YoutubeEngine instance: " + YoutubeSearch.instances); + + if (YoutubeSearch.instances != null) + { + Console.WriteLine("&Doing youtube back"); + FindViewById(Resource.Id.tabs).Visibility = ViewStates.Visible; + SearchView searchView = (SearchView)menu.FindItem(Resource.Id.search).ActionView; + searchView.Focusable = false; + menu.FindItem(Resource.Id.search).ExpandActionView(); + searchView.SetQuery(YoutubeSearch.instances[0].Query, false); + searchView.ClearFocus(); + + //int selectedTab = 0; + //for (int i = 0; i < YoutubeSearch.instances.Length; i++) + //{ + // if (YoutubeSearch.instances[i].IsFocused) + // selectedTab = i; + //} + } } else if (YoutubeSearch.instances != null) { @@ -347,7 +358,7 @@ namespace Opus public bool OnMenuItemActionCollapse(IMenuItem item) //Youtube search collapse { - if (YoutubeSearch.instances == null /*|| SearchableActivity.IgnoreMyself*/) + if (YoutubeSearch.instances == null || !item.ActionView.Focusable) return true; SupportFragmentManager.PopBackStack(); @@ -361,7 +372,7 @@ namespace Opus public void OnFocusChange(View v, bool hasFocus) { - if (hasFocus) + if (hasFocus && v.Focusable) { Bundle animation = ActivityOptionsCompat.MakeCustomAnimation(this, Android.Resource.Animation.FadeIn, Android.Resource.Animation.FadeOut).ToBundle(); StartActivity(new Intent(this, typeof(SearchableActivity)), animation); diff --git a/Opus/Code/UI/Fragments/PagerFragment.cs b/Opus/Code/UI/Fragments/PagerFragment.cs index 3247f47..65c5391 100644 --- a/Opus/Code/UI/Fragments/PagerFragment.cs +++ b/Opus/Code/UI/Fragments/PagerFragment.cs @@ -2,6 +2,7 @@ using Android.Support.Design.Widget; using Android.Support.V4.App; using Android.Support.V4.View; +using Android.Support.V7.Widget; using Android.Views; using Opus.Adapter; @@ -39,6 +40,8 @@ namespace Opus.Fragments public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + System.Console.WriteLine("&Pager view created"); + View view = inflater.Inflate(Resource.Layout.ViewPager, container, false); TabLayout tabs = Activity.FindViewById(Resource.Id.tabs); ViewPager pager = view.FindViewById(Resource.Id.pager); @@ -95,6 +98,15 @@ namespace Opus.Fragments YoutubeSearch.instances[pos].IsFocused = true; YoutubeSearch.instances[pos].OnFocus(); + MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Visible; + + IMenuItem searchItem = MainActivity.instance.menu.FindItem(Resource.Id.search); + SearchView searchView = (SearchView)searchItem.ActionView; + searchView.Focusable = false; + searchItem.ExpandActionView(); + searchView.SetQuery(query, false); + searchView.ClearFocus(); + searchView.Focusable = true; } return view; } @@ -114,7 +126,7 @@ namespace Opus.Fragments { if (instance.IsFocused) { - instance.ListView.SmoothScrollToPosition(0); + instance.ListView?.SmoothScrollToPosition(0); } } } diff --git a/Opus/Code/UI/Fragments/PlaylistTracks.cs b/Opus/Code/UI/Fragments/PlaylistTracks.cs index d44f159..b372dd5 100644 --- a/Opus/Code/UI/Fragments/PlaylistTracks.cs +++ b/Opus/Code/UI/Fragments/PlaylistTracks.cs @@ -153,24 +153,6 @@ namespace Opus.Fragments MainActivity.instance.contentRefresh.Refresh -= OnRefresh; Activity.FindViewById(Resource.Id.appbar).RemoveOnOffsetChangedListener(this); - - - if (YoutubeSearch.instances != null) - { - MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Visible; - SearchView searchView = (SearchView)MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView; - searchView.Focusable = false; - MainActivity.instance.menu.FindItem(Resource.Id.search).ExpandActionView(); - searchView.SetQuery(YoutubeSearch.instances[0].Query, false); - searchView.ClearFocus(); - - int selectedTab = 0; - for (int i = 0; i < YoutubeSearch.instances.Length; i++) - { - if (YoutubeSearch.instances[i].IsFocused) - selectedTab = i; - } - } instance = null; } base.OnDestroyView(); diff --git a/Opus/Code/UI/Fragments/YoutubeSearch.cs b/Opus/Code/UI/Fragments/YoutubeSearch.cs index 2c1c655..329d466 100644 --- a/Opus/Code/UI/Fragments/YoutubeSearch.cs +++ b/Opus/Code/UI/Fragments/YoutubeSearch.cs @@ -18,7 +18,6 @@ using System.Linq; using System.Threading.Tasks; using Channel = Opus.DataStructure.Channel; using PlaylistItem = Opus.DataStructure.PlaylistItem; -using SearchView = Android.Support.V7.Widget.SearchView; namespace Opus.Fragments { @@ -335,12 +334,16 @@ namespace Opus.Fragments YoutubeManager.Play(result[position].song); break; case YtKind.Playlist: + MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = false; MainActivity.instance.menu.FindItem(Resource.Id.search).CollapseActionView(); + MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = true; MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Gone; MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(result[position].playlist)).AddToBackStack("Playlist Track").Commit(); break; case YtKind.Channel: + MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = false; MainActivity.instance.menu.FindItem(Resource.Id.search).CollapseActionView(); + MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = true; MainActivity.instance.FindViewById(Resource.Id.tabs).Visibility = ViewStates.Gone; MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, ChannelDetails.NewInstance(result[position].channel)).AddToBackStack("Channel Details").Commit(); break; @@ -463,6 +466,12 @@ namespace Opus.Fragments outState.PutString("Query", Query); base.OnSaveInstanceState(outState); } + + public override void OnResume() + { + base.OnResume(); + Console.WriteLine("&Youtube Search Resumed"); + } } } \ No newline at end of file