mirror of
https://github.com/zoriya/Opus.git
synced 2025-12-06 06:26:15 +00:00
Reworking youtube search view and backstack managment.
This commit is contained in:
@@ -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<TabLayout>(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);
|
||||
|
||||
@@ -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<TabLayout>(Resource.Id.tabs);
|
||||
ViewPager pager = view.FindViewById<ViewPager>(Resource.Id.pager);
|
||||
@@ -95,6 +98,15 @@ namespace Opus.Fragments
|
||||
|
||||
YoutubeSearch.instances[pos].IsFocused = true;
|
||||
YoutubeSearch.instances[pos].OnFocus();
|
||||
MainActivity.instance.FindViewById<TabLayout>(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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,24 +153,6 @@ namespace Opus.Fragments
|
||||
|
||||
MainActivity.instance.contentRefresh.Refresh -= OnRefresh;
|
||||
Activity.FindViewById<AppBarLayout>(Resource.Id.appbar).RemoveOnOffsetChangedListener(this);
|
||||
|
||||
|
||||
if (YoutubeSearch.instances != null)
|
||||
{
|
||||
MainActivity.instance.FindViewById<TabLayout>(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();
|
||||
|
||||
@@ -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<TabLayout>(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<TabLayout>(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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user