mirror of
https://github.com/zoriya/Opus.git
synced 2025-12-06 06:26:15 +00:00
Reworking backstack management for view pagers and for the playlist view.
This commit is contained in:
@@ -397,9 +397,16 @@ namespace MusicApp
|
||||
{
|
||||
if(item.ItemId == Android.Resource.Id.Home)
|
||||
{
|
||||
if (PlaylistTracks.instance != null)
|
||||
if (PlaylistTracks.instance != null || FolderTracks.instance != null)
|
||||
{
|
||||
SupportFragmentManager.BeginTransaction().Remove(PlaylistTracks.instance).Commit();
|
||||
Console.WriteLine("&PlaylistTrack back");
|
||||
for (int i = 0; i < SupportFragmentManager.BackStackEntryCount; i++)
|
||||
{
|
||||
Console.WriteLine("&Back stack entry " + i + ": " + SupportFragmentManager.GetBackStackEntryAt(i));
|
||||
}
|
||||
|
||||
SupportFragmentManager.PopBackStack();
|
||||
//SupportFragmentManager.BeginTransaction().Remove(PlaylistTracks.instance).Commit();
|
||||
}
|
||||
else if (YoutubeEngine.instances != null)
|
||||
{
|
||||
@@ -412,15 +419,10 @@ namespace MusicApp
|
||||
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
|
||||
YoutubeEngine.instances = null;
|
||||
}
|
||||
else if (FolderTracks.instance != null)
|
||||
{
|
||||
HideSearch();
|
||||
SupportActionBar.SetHomeButtonEnabled(false);
|
||||
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
|
||||
SupportActionBar.Title = "MusicApp";
|
||||
FolderTracks.instance = null;
|
||||
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(0, 1)).Commit();
|
||||
}
|
||||
//else if (FolderTracks.instance != null)
|
||||
//{
|
||||
// SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(0, 1)).Commit();
|
||||
//}
|
||||
}
|
||||
else if(item.ItemId == Resource.Id.search)
|
||||
{
|
||||
@@ -436,19 +438,28 @@ namespace MusicApp
|
||||
|
||||
public bool OnMenuItemActionCollapse(IMenuItem item) //Youtube search collapse
|
||||
{
|
||||
if (YoutubeEngine.instances == null)
|
||||
Console.WriteLine("&Youtube Search Collapse");
|
||||
if (YoutubeEngine.instances == null || PlaylistTracks.openned)
|
||||
return true;
|
||||
|
||||
if(Browse.instance != null)
|
||||
Console.WriteLine("&Youtube instnace != null");
|
||||
for (int i = 0; i < SupportFragmentManager.BackStackEntryCount; i++)
|
||||
{
|
||||
YoutubeEngine.instances = null;
|
||||
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(0, 0)).Commit();
|
||||
}
|
||||
else if (YoutubeEngine.instances != null && !PlaylistTracks.openned)
|
||||
{
|
||||
YoutubeEngine.instances = null;
|
||||
SupportFragmentManager.PopBackStack();
|
||||
Console.WriteLine("&Back stack entry " + i + ": " + SupportFragmentManager.GetBackStackEntryAt(i));
|
||||
}
|
||||
SupportFragmentManager.PopBackStack();
|
||||
//if (Browse.instance != null)
|
||||
//{
|
||||
// Console.WriteLine("&Browse insatnce != null");
|
||||
// YoutubeEngine.instances = null;
|
||||
// SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(0, 0)).Commit();
|
||||
//}
|
||||
//else if (YoutubeEngine.instances != null && !PlaylistTracks.openned)
|
||||
//{
|
||||
// Console.WriteLine("&Backstack");
|
||||
// YoutubeEngine.instances = null;
|
||||
// SupportFragmentManager.PopBackStack();
|
||||
//}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1071,10 +1082,7 @@ namespace MusicApp
|
||||
}
|
||||
else
|
||||
{
|
||||
if(PlaylistTracks.instance != null)
|
||||
SupportFragmentManager.BeginTransaction().Remove(PlaylistTracks.instance).CommitNow();
|
||||
|
||||
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(1, 0)).AddToBackStack(null).Commit();
|
||||
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(1, 0)).AddToBackStack("Youtube").Commit();
|
||||
}
|
||||
SearchableActivity.instance = null;
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ namespace MusicApp.Resources.Portable_Class
|
||||
|
||||
public static Fragment NewInstance()
|
||||
{
|
||||
if(instance == null)
|
||||
if (instance == null)
|
||||
instance = new Browse { Arguments = new Bundle() };
|
||||
return instance;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,7 @@ namespace MusicApp.Resources.Portable_Class
|
||||
|
||||
public override void OnDestroy()
|
||||
{
|
||||
System.Console.WriteLine("&Destroy called");
|
||||
MainActivity.instance.contentRefresh.Refresh -= OnRefresh;
|
||||
if (isEmpty)
|
||||
{
|
||||
|
||||
@@ -267,5 +267,14 @@ namespace MusicApp.Resources.Portable_Class
|
||||
base.OnResume();
|
||||
instance = this;
|
||||
}
|
||||
|
||||
public override void OnDestroyView()
|
||||
{
|
||||
MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(false);
|
||||
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(false);
|
||||
MainActivity.instance.SupportActionBar.Title = "MusicApp";
|
||||
MainActivity.instance.HideSearch();
|
||||
base.OnDestroyView();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,12 +13,6 @@ namespace MusicApp.Resources.Portable_Class
|
||||
private int type;
|
||||
private int pos;
|
||||
|
||||
|
||||
public override void OnCreate(Bundle savedInstanceState)
|
||||
{
|
||||
base.OnCreate(savedInstanceState);
|
||||
}
|
||||
|
||||
public static Fragment NewInstance(int type, int pos)
|
||||
{
|
||||
instance = new Pager { Arguments = new Bundle() };
|
||||
@@ -29,6 +23,13 @@ namespace MusicApp.Resources.Portable_Class
|
||||
|
||||
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
|
||||
{
|
||||
//if(savedInstanceState != null)
|
||||
//{
|
||||
// System.Console.WriteLine("&Instance state restored");
|
||||
// type = savedInstanceState.GetInt("type");
|
||||
// pos = savedInstanceState.GetInt("pos");
|
||||
//}
|
||||
|
||||
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);
|
||||
@@ -42,7 +43,7 @@ namespace MusicApp.Resources.Portable_Class
|
||||
tabs.AddTab(tabs.NewTab().SetText(Resources.GetString(Resource.String.songs)));
|
||||
tabs.AddTab(tabs.NewTab().SetText(Resources.GetString(Resource.String.folders)));
|
||||
|
||||
adapter = new ViewPagerAdapter(Activity.SupportFragmentManager);
|
||||
adapter = new ViewPagerAdapter(ChildFragmentManager);
|
||||
adapter.AddFragment(Browse.NewInstance(), Resources.GetString(Resource.String.songs));
|
||||
adapter.AddFragment(FolderBrowse.NewInstance(), Resources.GetString(Resource.String.folders));
|
||||
|
||||
@@ -65,7 +66,7 @@ namespace MusicApp.Resources.Portable_Class
|
||||
tabs.AddTab(tabs.NewTab().SetText(Resources.GetString(Resource.String.lives)));
|
||||
tabs.AddTab(tabs.NewTab().SetText(Resources.GetString(Resource.String.channels)));
|
||||
|
||||
ViewPagerAdapter adapter = new ViewPagerAdapter(Activity.SupportFragmentManager);
|
||||
ViewPagerAdapter adapter = new ViewPagerAdapter(ChildFragmentManager);
|
||||
Fragment[] fragment = YoutubeEngine.NewInstances(YoutubeEngine.searchKeyWorld);
|
||||
adapter.AddFragment(fragment[0], Resources.GetString(Resource.String.all));
|
||||
adapter.AddFragment(fragment[1], Resources.GetString(Resource.String.tracks));
|
||||
@@ -161,6 +162,8 @@ namespace MusicApp.Resources.Portable_Class
|
||||
base.OnDestroyView();
|
||||
Browse.instance = null;
|
||||
FolderBrowse.instance = null;
|
||||
YoutubeEngine.instances = null;
|
||||
|
||||
adapter?.Dispose();
|
||||
|
||||
TabLayout tabs = Activity.FindViewById<TabLayout>(Resource.Id.tabs);
|
||||
@@ -171,5 +174,13 @@ namespace MusicApp.Resources.Portable_Class
|
||||
|
||||
instance = null;
|
||||
}
|
||||
|
||||
//public override void OnSaveInstanceState(Bundle outState)
|
||||
//{
|
||||
// base.OnSaveInstanceState(outState);
|
||||
// System.Console.WriteLine("&Pager insatnce state saved");
|
||||
// outState.PutInt("type", type);
|
||||
// outState.PutInt("pos", View.FindViewById<ViewPager>(Resource.Id.pager).CurrentItem);
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -446,21 +446,17 @@ namespace MusicApp.Resources.Portable_Class
|
||||
return;
|
||||
}
|
||||
|
||||
AppCompatActivity act = (AppCompatActivity)Activity;
|
||||
act.SupportActionBar.SetHomeButtonEnabled(true);
|
||||
act.SupportActionBar.SetDisplayHomeAsUpEnabled(true);
|
||||
act.SupportActionBar.Title = playlist.Name;
|
||||
instance = null;
|
||||
MainActivity.instance.contentRefresh.Refresh -= OnRefresh;
|
||||
MainActivity.instance.contentRefresh.Refresh -= OnRefresh;
|
||||
|
||||
|
||||
if (playlist.SyncState == SyncState.True || playlist.SyncState == SyncState.Loading)
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.YoutubeID, playlist.LocalID, playlist.Name, playlist.HasWritePermission, true, playlist.Owner, playlist.Count, playlist.ImageURL)).AddToBackStack(null).Commit();
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.YoutubeID, playlist.LocalID, playlist.Name, playlist.HasWritePermission, true, playlist.Owner, playlist.Count, playlist.ImageURL)).AddToBackStack("Playlist Track").Commit();
|
||||
else if (local || (playlist.SyncState == SyncState.Error && playlist.LocalID != 0 && playlist.LocalID != -1))
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.LocalID, playlist.Name)).AddToBackStack(null).Commit();
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.LocalID, playlist.Name)).AddToBackStack("Playlist Track").Commit();
|
||||
else
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.YoutubeID, playlist.Name, playlist.HasWritePermission, true, playlist.Owner, playlist.Count, playlist.ImageURL)).AddToBackStack(null).Commit();
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.YoutubeID, playlist.Name, playlist.HasWritePermission, true, playlist.Owner, playlist.Count, playlist.ImageURL)).AddToBackStack("Playlist Track").Commit();
|
||||
}
|
||||
|
||||
private void ListView_ItemLongClick(object sender, int position)
|
||||
|
||||
@@ -61,6 +61,9 @@ namespace MusicApp.Resources.Portable_Class
|
||||
MainActivity.instance.FindViewById(Resource.Id.contentLayout).SetPadding(0, 0, 0, 0);
|
||||
MainActivity.instance.FindViewById(Resource.Id.toolbar).SetPadding(0, statusHeight, 0, 0);
|
||||
MainActivity.instance.FindViewById(Resource.Id.toolbar).LayoutParameters.Height += statusHeight;
|
||||
MainActivity.instance.SupportActionBar.SetHomeButtonEnabled(true);
|
||||
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(true);
|
||||
MainActivity.instance.SupportActionBar.Title = playlistName;
|
||||
}
|
||||
|
||||
public bool OnMenuItemClick(IMenuItem item)
|
||||
@@ -241,7 +244,7 @@ namespace MusicApp.Resources.Portable_Class
|
||||
dialog.Show();
|
||||
}
|
||||
|
||||
public override void OnStop()
|
||||
public override void OnDestroyView()
|
||||
{
|
||||
Activity.FindViewById<ImageButton>(Resource.Id.headerMore).Click -= PlaylistMore;
|
||||
|
||||
@@ -283,18 +286,18 @@ namespace MusicApp.Resources.Portable_Class
|
||||
if (YoutubeEngine.instances[i].focused)
|
||||
selectedTab = i;
|
||||
}
|
||||
if (!navigating)
|
||||
{
|
||||
MainActivity.instance?.SupportFragmentManager.BeginTransaction().Attach(YoutubeEngine.instances[selectedTab]).Commit();
|
||||
MainActivity.instance?.SupportFragmentManager.BeginTransaction().Remove(instance).Commit();
|
||||
}
|
||||
//if (!navigating)
|
||||
//{
|
||||
// MainActivity.instance?.SupportFragmentManager.BeginTransaction().Attach(YoutubeEngine.instances[selectedTab]).Commit();
|
||||
// MainActivity.instance?.SupportFragmentManager.BeginTransaction().Remove(instance).Commit();
|
||||
//}
|
||||
}
|
||||
else if (!navigating && Queue.instance == null)
|
||||
MainActivity.instance.SupportFragmentManager.PopBackStack();
|
||||
//else if (!navigating && Queue.instance == null)
|
||||
// MainActivity.instance.SupportFragmentManager.PopBackStack();
|
||||
|
||||
instance = null;
|
||||
}
|
||||
base.OnStop();
|
||||
base.OnDestroyView();
|
||||
}
|
||||
|
||||
public static async Task<Song> CompleteItem(Song song, string YoutubeID)
|
||||
|
||||
@@ -417,20 +417,12 @@ namespace MusicApp.Resources.Portable_Class
|
||||
Play(item.YoutubeID, item.Title, item.Artist, item.Album);
|
||||
break;
|
||||
case YtKind.Playlist:
|
||||
ViewGroup rootView = Activity.FindViewById<ViewGroup>(Android.Resource.Id.Content);
|
||||
rootView.RemoveView(LoadingView);
|
||||
foreach(YoutubeEngine instance in instances)
|
||||
{
|
||||
rootView.RemoveView(instance.EmptyView);
|
||||
}
|
||||
|
||||
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(true);
|
||||
MainActivity.instance.SupportActionBar.Title = item.Title;
|
||||
PlaylistTracks.openned = true;
|
||||
MainActivity.instance.menu.FindItem(Resource.Id.search).CollapseActionView();
|
||||
MainActivity.instance.FindViewById<TabLayout>(Resource.Id.tabs).Visibility = ViewStates.Gone;
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Add(Resource.Id.contentView, PlaylistTracks.NewInstance(item.YoutubeID, item.Title, false, false, item.Artist, -1, item.Album)).Commit();
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Detach(this).Commit();
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, PlaylistTracks.NewInstance(item.YoutubeID, item.Title, false, false, item.Artist, -1, item.Album)).AddToBackStack("Playlist Track").Commit();
|
||||
//MainActivity.instance.SupportFragmentManager.BeginTransaction().Add(Resource.Id.contentView, PlaylistTracks.NewInstance(item.YoutubeID, item.Title, false, false, item.Artist, -1, item.Album)).Commit();
|
||||
//MainActivity.instance.SupportFragmentManager.BeginTransaction().Detach(this).Commit();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user