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)
|
else if (MusicPlayer.UseCastPlayer)
|
||||||
MusicPlayer.GetQueueFromCast();
|
MusicPlayer.GetQueueFromCast();
|
||||||
|
|
||||||
Console.WriteLine("&Resuming, Search Instance: " + SearchableActivity.instance + " SearchQuery: " + SearchableActivity.instance?.SearchQuery);
|
|
||||||
if (SearchableActivity.instance != null && SearchableActivity.instance.SearchQuery != null && 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.
|
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();
|
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(SearchableActivity.instance.SearchQuery, 0)).AddToBackStack("Youtube").Commit();
|
||||||
SearchableActivity.instance = null;
|
SearchableActivity.instance = null;
|
||||||
@@ -315,12 +307,31 @@ namespace Opus
|
|||||||
{
|
{
|
||||||
if (PlaylistTracks.instance != null || FolderTracks.instance != null || ChannelDetails.instance != null)
|
if (PlaylistTracks.instance != null || FolderTracks.instance != null || ChannelDetails.instance != null)
|
||||||
{
|
{
|
||||||
//for (int i = 0; i < SupportFragmentManager.BackStackEntryCount; i++)
|
for (int i = 0; i < SupportFragmentManager.BackStackEntryCount; i++)
|
||||||
//{
|
{
|
||||||
// Console.WriteLine("&Back stack entry " + i + ": " + SupportFragmentManager.GetBackStackEntryAt(i));
|
Console.WriteLine("&Back stack entry " + i + ": " + SupportFragmentManager.GetBackStackEntryAt(i));
|
||||||
//}
|
}
|
||||||
|
|
||||||
SupportFragmentManager.PopBackStack();
|
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)
|
else if (YoutubeSearch.instances != null)
|
||||||
{
|
{
|
||||||
@@ -347,7 +358,7 @@ namespace Opus
|
|||||||
|
|
||||||
public bool OnMenuItemActionCollapse(IMenuItem item) //Youtube search collapse
|
public bool OnMenuItemActionCollapse(IMenuItem item) //Youtube search collapse
|
||||||
{
|
{
|
||||||
if (YoutubeSearch.instances == null /*|| SearchableActivity.IgnoreMyself*/)
|
if (YoutubeSearch.instances == null || !item.ActionView.Focusable)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
SupportFragmentManager.PopBackStack();
|
SupportFragmentManager.PopBackStack();
|
||||||
@@ -361,7 +372,7 @@ namespace Opus
|
|||||||
|
|
||||||
public void OnFocusChange(View v, bool hasFocus)
|
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();
|
Bundle animation = ActivityOptionsCompat.MakeCustomAnimation(this, Android.Resource.Animation.FadeIn, Android.Resource.Animation.FadeOut).ToBundle();
|
||||||
StartActivity(new Intent(this, typeof(SearchableActivity)), animation);
|
StartActivity(new Intent(this, typeof(SearchableActivity)), animation);
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using Android.Support.Design.Widget;
|
using Android.Support.Design.Widget;
|
||||||
using Android.Support.V4.App;
|
using Android.Support.V4.App;
|
||||||
using Android.Support.V4.View;
|
using Android.Support.V4.View;
|
||||||
|
using Android.Support.V7.Widget;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Opus.Adapter;
|
using Opus.Adapter;
|
||||||
|
|
||||||
@@ -39,6 +40,8 @@ namespace Opus.Fragments
|
|||||||
|
|
||||||
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
|
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);
|
View view = inflater.Inflate(Resource.Layout.ViewPager, container, false);
|
||||||
TabLayout tabs = Activity.FindViewById<TabLayout>(Resource.Id.tabs);
|
TabLayout tabs = Activity.FindViewById<TabLayout>(Resource.Id.tabs);
|
||||||
ViewPager pager = view.FindViewById<ViewPager>(Resource.Id.pager);
|
ViewPager pager = view.FindViewById<ViewPager>(Resource.Id.pager);
|
||||||
@@ -95,6 +98,15 @@ namespace Opus.Fragments
|
|||||||
|
|
||||||
YoutubeSearch.instances[pos].IsFocused = true;
|
YoutubeSearch.instances[pos].IsFocused = true;
|
||||||
YoutubeSearch.instances[pos].OnFocus();
|
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;
|
return view;
|
||||||
}
|
}
|
||||||
@@ -114,7 +126,7 @@ namespace Opus.Fragments
|
|||||||
{
|
{
|
||||||
if (instance.IsFocused)
|
if (instance.IsFocused)
|
||||||
{
|
{
|
||||||
instance.ListView.SmoothScrollToPosition(0);
|
instance.ListView?.SmoothScrollToPosition(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,24 +153,6 @@ namespace Opus.Fragments
|
|||||||
|
|
||||||
MainActivity.instance.contentRefresh.Refresh -= OnRefresh;
|
MainActivity.instance.contentRefresh.Refresh -= OnRefresh;
|
||||||
Activity.FindViewById<AppBarLayout>(Resource.Id.appbar).RemoveOnOffsetChangedListener(this);
|
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;
|
instance = null;
|
||||||
}
|
}
|
||||||
base.OnDestroyView();
|
base.OnDestroyView();
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ using System.Linq;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Channel = Opus.DataStructure.Channel;
|
using Channel = Opus.DataStructure.Channel;
|
||||||
using PlaylistItem = Opus.DataStructure.PlaylistItem;
|
using PlaylistItem = Opus.DataStructure.PlaylistItem;
|
||||||
using SearchView = Android.Support.V7.Widget.SearchView;
|
|
||||||
|
|
||||||
namespace Opus.Fragments
|
namespace Opus.Fragments
|
||||||
{
|
{
|
||||||
@@ -335,12 +334,16 @@ namespace Opus.Fragments
|
|||||||
YoutubeManager.Play(result[position].song);
|
YoutubeManager.Play(result[position].song);
|
||||||
break;
|
break;
|
||||||
case YtKind.Playlist:
|
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).CollapseActionView();
|
||||||
|
MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = true;
|
||||||
MainActivity.instance.FindViewById<TabLayout>(Resource.Id.tabs).Visibility = ViewStates.Gone;
|
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();
|
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(result[position].playlist)).AddToBackStack("Playlist Track").Commit();
|
||||||
break;
|
break;
|
||||||
case YtKind.Channel:
|
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).CollapseActionView();
|
||||||
|
MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.Focusable = true;
|
||||||
MainActivity.instance.FindViewById<TabLayout>(Resource.Id.tabs).Visibility = ViewStates.Gone;
|
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();
|
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, ChannelDetails.NewInstance(result[position].channel)).AddToBackStack("Channel Details").Commit();
|
||||||
break;
|
break;
|
||||||
@@ -463,6 +466,12 @@ namespace Opus.Fragments
|
|||||||
outState.PutString("Query", Query);
|
outState.PutString("Query", Query);
|
||||||
base.OnSaveInstanceState(outState);
|
base.OnSaveInstanceState(outState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void OnResume()
|
||||||
|
{
|
||||||
|
base.OnResume();
|
||||||
|
Console.WriteLine("&Youtube Search Resumed");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user