mirror of
https://github.com/zoriya/Opus.git
synced 2026-06-03 22:40:52 +00:00
Reworking save and resume instance methods
This commit is contained in:
+31
-37
@@ -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())
|
||||
{
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user