Reworking save and resume instance methods

This commit is contained in:
Anonymous Raccoon
2018-05-05 19:35:24 +02:00
parent 6af7aa0990
commit cad4043948
7 changed files with 58 additions and 57 deletions
+31 -37
View File
@@ -38,7 +38,7 @@ using SearchView = Android.Support.V7.Widget.SearchView;
namespace MusicApp
{
[Activity(Label = "MusicApp", MainLauncher = true, Icon = "@drawable/launcher_icon", Theme = "@style/Theme", ScreenOrientation = ScreenOrientation.Portrait)]
public class MainActivity : AppCompatActivity, ViewPager.IOnPageChangeListener, SwipeDismissBehavior.IOnDismissListener, GoogleApiClient.IOnConnectionFailedListener, Square.OkHttp.ICallback, IResultCallback
public class MainActivity : AppCompatActivity, ViewPager.IOnPageChangeListener, SwipeDismissBehavior.IOnDismissListener, GoogleApiClient.IOnConnectionFailedListener, Square.OkHttp.ICallback, IResultCallback, IMenuItemOnActionExpandListener
{
public static MainActivity instance;
public static int paddingBot = 0;
@@ -373,8 +373,6 @@ namespace MusicApp
var filterView = item.ActionView.JavaCast<SearchView>();
filterView.QueryTextChange += Search;
filterView.Close += SearchClose;
var searchView = menu.FindItem(Resource.Id.search).ActionView.JavaCast<SearchView>();
searchView.QueryTextSubmit += (s, e) =>
{
@@ -394,6 +392,8 @@ namespace MusicApp
}
e.Handled = true;
};
menu.FindItem(Resource.Id.search).SetOnActionExpandListener(this);
return base.OnCreateOptionsMenu(menu);
}
@@ -438,26 +438,6 @@ namespace MusicApp
FolderTracks.instance = null;
SetBrowseTabs(1);
}
else if(YoutubeEngine.instances != null)
{
ViewGroup rootView = FindViewById<ViewGroup>(Android.Resource.Id.Content);
foreach(YoutubeEngine instance in YoutubeEngine.instances)
{
OnPaddingChanged -= instance.OnPaddingChanged;
rootView.RemoveView(instance.emptyView);
}
rootView.RemoveView(YoutubeEngine.loadingView);
var searchView = menu.FindItem(Resource.Id.search).ActionView.JavaCast<Android.Support.V7.Widget.SearchView>();
menu.FindItem(Resource.Id.search).CollapseActionView();
searchView.ClearFocus();
searchView.Iconified = true;
searchView.SetQuery("", false);
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
YoutubeEngine.instances = null;
ResumeInstance();
}
}
else if(item.ItemId == Resource.Id.settings)
{
@@ -467,6 +447,25 @@ namespace MusicApp
return base.OnOptionsItemSelected(item);
}
public bool OnMenuItemActionCollapse(IMenuItem item) //Youtube search collapse
{
ViewGroup rootView = FindViewById<ViewGroup>(Android.Resource.Id.Content);
foreach (YoutubeEngine instance in YoutubeEngine.instances)
{
OnPaddingChanged -= instance.OnPaddingChanged;
rootView.RemoveView(instance.emptyView);
}
rootView.RemoveView(YoutubeEngine.loadingView);
YoutubeEngine.instances = null;
ResumeInstance();
return true;
}
public bool OnMenuItemActionExpand(IMenuItem item)
{
return true;
}
void Search(object sender, SearchView.QueryTextChangeEventArgs e)
{
if (Browse.instance != null)
@@ -477,16 +476,6 @@ namespace MusicApp
FolderTracks.instance.Search(e.NewText);
}
void SearchClose(object sender, SearchView.CloseEventArgs e)
{
if (Browse.instance != null)
Browse.instance.result = null;
if (PlaylistTracks.instance != null)
PlaylistTracks.instance.result = null;
if (FolderTracks.instance != null)
FolderTracks.instance.result = null;
}
public void HideSearch()
{
if (!searchDisplayed)
@@ -562,7 +551,6 @@ namespace MusicApp
searchView.SetQuery("", false);
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
YoutubeEngine.instances = null;
ResumeInstance();
}
Android.Support.V4.App.Fragment fragment = null;
@@ -583,7 +571,6 @@ namespace MusicApp
break;
case Resource.Id.browseLayout:
Console.WriteLine("&Switching to browse");
if (Browse.instance != null && YoutubeEngine.instances != null && !resuming)
{
Browse.instance.Refresh();
@@ -936,9 +923,9 @@ namespace MusicApp
private void Container_Click(object sender, EventArgs e)
{
SaveInstance();
HideTabs();
HideSearch();
SaveInstance();
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Player.NewInstance()).AddToBackStack(null).Commit();
}
@@ -1289,7 +1276,6 @@ namespace MusicApp
}
else if (Browse.instance != null && Browse.instance.focused)
{
Console.WriteLine("&Browse saved");
parcelableSender = "Browse";
parcelable = Browse.instance.ListView.OnSaveInstanceState();
HideTabs();
@@ -1302,6 +1288,7 @@ namespace MusicApp
}
else if (Playlist.instance != null)
{
Console.WriteLine("&Playlist saved");
parcelableSender = "Playlist";
parcelable = Playlist.instance.ListView.GetLayoutManager().OnSaveInstanceState();
}
@@ -1320,6 +1307,7 @@ namespace MusicApp
public void ResumeInstance()
{
Console.WriteLine("&Resuming " + parcelableSender);
switch (parcelableSender)
{
case "Home":
@@ -1361,9 +1349,15 @@ namespace MusicApp
break;
case "PlaylistTracks":
Transition(Resource.Id.contentView, PlaylistTracks.instance, false, true);
SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.Title = PlaylistTracks.instance.playlistName;
break;
case "FolderTracks":
Transition(Resource.Id.contentView, FolderTracks.instance, false, true);
SupportActionBar.SetHomeButtonEnabled(true);
SupportActionBar.SetDisplayHomeAsUpEnabled(true);
SupportActionBar.Title = FolderTracks.instance.folderName;
break;
default:
break;
@@ -235,7 +235,7 @@ namespace MusicApp.Resources.Portable_Class
act.SupportActionBar.Title = displayPath;
MainActivity.instance.HideTabs();
MainActivity.instance.Transition(Resource.Id.contentView, FolderTracks.NewInstance(path), true);
MainActivity.instance.Transition(Resource.Id.contentView, FolderTracks.NewInstance(path, displayPath), true);
}
public void GetPlaylist(string path)
@@ -15,6 +15,7 @@ namespace MusicApp.Resources.Portable_Class
public class FolderTracks : ListFragment
{
public static FolderTracks instance;
public string folderName;
public Adapter adapter;
public View emptyView;
public List<Song> result;
@@ -61,10 +62,11 @@ namespace MusicApp.Resources.Portable_Class
return view;
}
public static Fragment NewInstance(string path)
public static Fragment NewInstance(string path, string folderName)
{
instance = new FolderTracks { Arguments = new Bundle() };
instance.path = path;
instance.folderName = folderName;
return instance;
}
@@ -75,7 +77,7 @@ namespace MusicApp.Resources.Portable_Class
CursorLoader cursorLoader = new CursorLoader(Android.App.Application.Context, musicUri, null, null, null, null);
ICursor musicCursor = (ICursor)cursorLoader.LoadInBackground();
System.Console.WriteLine("&Path: " + path + " URI: " + musicUri.ToString());
tracks = new List<Song>();
if (musicCursor != null && musicCursor.MoveToFirst())
{
+2 -2
View File
@@ -304,7 +304,7 @@ namespace MusicApp.Resources.Portable_Class
MainActivity.instance.HideTabs();
MainActivity.instance.HomeDetails = true;
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(section.data), true);
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(section.data, item.GetName()), true);
}
}
else
@@ -325,7 +325,7 @@ namespace MusicApp.Resources.Portable_Class
MainActivity.instance.HideTabs();
MainActivity.instance.HomeDetails = true;
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(item.youtubeID), true);
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(item.youtubeID, item.GetName()), true);
}
}
}
@@ -139,13 +139,9 @@ namespace MusicApp.Resources.Portable_Class
ListView.SetItemAnimator(new DefaultItemAnimator());
ListView.ScrollChange += MainActivity.instance.Scroll;
//Youtube playlists
await MainActivity.instance.WaitForYoutube();
while (YoutubeEngine.youtubeService == null)
await Task.Delay(500);
YouTubeService youtube = YoutubeEngine.youtubeService;
PlaylistsResource.ListRequest request = youtube.Playlists.List("snippet,contentDetails");
@@ -174,6 +170,8 @@ namespace MusicApp.Resources.Portable_Class
ytPlaylists.Add(new Song("EMPTY", "You don't have any youtube playlist on your account. \nWarning: Only playlist from your google account are displayed", null, null, -1, -1, null));
}
System.Console.WriteLine("&Youtube data retrieved");
adapter.SetYtPlaylists(ytPlaylists);
}
@@ -212,9 +210,9 @@ namespace MusicApp.Resources.Portable_Class
RemoveEmptyView();
if (local)
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.GetID()), true);
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.GetID(), playlist.GetName()), true);
else
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.youtubeID), true);
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(playlist.youtubeID, playlist.GetName()), true);
}
private void ListView_ItemLongClick(object sender, int position)
@@ -397,6 +395,8 @@ namespace MusicApp.Resources.Portable_Class
MainActivity.parcelable = null;
MainActivity.parcelableSender = null;
}
if (instance == null)
instance = this;
}
}
}
@@ -16,6 +16,7 @@ namespace MusicApp.Resources.Portable_Class
public class PlaylistTracks : ListFragment
{
public static PlaylistTracks instance;
public string playlistName;
public Adapter adapter;
public View emptyView;
public List<Song> result;
@@ -64,17 +65,19 @@ namespace MusicApp.Resources.Portable_Class
return view;
}
public static Fragment NewInstance(long playlistId)
public static Fragment NewInstance(long playlistId, string playlistName)
{
instance = new PlaylistTracks { Arguments = new Bundle() };
instance.playlistId = playlistId;
instance.playlistName = playlistName;
return instance;
}
public static Fragment NewInstance(string ytID)
public static Fragment NewInstance(string ytID, string playlistName)
{
instance = new PlaylistTracks { Arguments = new Bundle() };
instance.ytID = ytID;
instance.playlistName = playlistName;
return instance;
}
@@ -90,6 +93,7 @@ namespace MusicApp.Resources.Portable_Class
CursorLoader cursorLoader = new CursorLoader(Android.App.Application.Context, musicUri, null, null, null, null);
ICursor musicCursor = (ICursor)cursorLoader.LoadInBackground();
tracks = new List<Song>();
if (musicCursor != null && musicCursor.MoveToFirst())
{
@@ -138,6 +142,7 @@ namespace MusicApp.Resources.Portable_Class
}
else if (ytID != null)
{
tracks = new List<Song>();
string nextPageToken = "";
while (nextPageToken != null)
{
@@ -44,7 +44,6 @@ namespace MusicApp.Resources.Portable_Class
base.OnActivityCreated(savedInstanceState);
ListView.ScrollChange += MainActivity.instance.Scroll;
MainActivity.instance.OnPaddingChanged += OnPaddingChanged;
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(true);
}
public void OnPaddingChanged(object sender, PaddingChange e)
@@ -248,7 +247,7 @@ namespace MusicApp.Resources.Portable_Class
act.SupportActionBar.Title = item.GetName();
MainActivity.instance.HideTabs();
instances = null;
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(item.youtubeID), true);
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(item.youtubeID, item.GetName()), true);
break;
case YtKind.Channel:
Toast.MakeText(Activity, "Action comming soon", ToastLength.Short).Show();
@@ -332,11 +331,12 @@ namespace MusicApp.Resources.Portable_Class
Android.App.Application.Context.StartService(intent);
parseProgress.Visibility = ViewStates.Gone;
if(instance != null)
{
MainActivity.parcelable = instance.ListView.GetLayoutManager().OnSaveInstanceState();
MainActivity.parcelableSender = "YoutubeEngine" + "-" + instance.querryType;
}
//if(instance != null)
//{
// MainActivity.parcelable = instance.ListView.GetLayoutManager().OnSaveInstanceState();
// MainActivity.parcelableSender = "YoutubeEngine" + "-" + instance.querryType;
//}
MainActivity.instance.SaveInstance();
MainActivity.instance.HideTabs();
MainActivity.instance.HideSearch();
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Player.NewInstance()).AddToBackStack(null).Commit();