diff --git a/MusicApp/MainActivity.cs b/MusicApp/MainActivity.cs index 15d0b0e..c7d03ea 100644 --- a/MusicApp/MainActivity.cs +++ b/MusicApp/MainActivity.cs @@ -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(); filterView.QueryTextChange += Search; - filterView.Close += SearchClose; - var searchView = menu.FindItem(Resource.Id.search).ActionView.JavaCast(); 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(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(); - 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(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; diff --git a/MusicApp/Resources/Portable Class/FolderBrowse.cs b/MusicApp/Resources/Portable Class/FolderBrowse.cs index b62a1b4..a420585 100644 --- a/MusicApp/Resources/Portable Class/FolderBrowse.cs +++ b/MusicApp/Resources/Portable Class/FolderBrowse.cs @@ -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) diff --git a/MusicApp/Resources/Portable Class/FolderTracks.cs b/MusicApp/Resources/Portable Class/FolderTracks.cs index 1e904f4..de60ccf 100644 --- a/MusicApp/Resources/Portable Class/FolderTracks.cs +++ b/MusicApp/Resources/Portable Class/FolderTracks.cs @@ -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 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(); if (musicCursor != null && musicCursor.MoveToFirst()) { diff --git a/MusicApp/Resources/Portable Class/Home.cs b/MusicApp/Resources/Portable Class/Home.cs index f11797d..d043924 100644 --- a/MusicApp/Resources/Portable Class/Home.cs +++ b/MusicApp/Resources/Portable Class/Home.cs @@ -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); } } } diff --git a/MusicApp/Resources/Portable Class/Playlist.cs b/MusicApp/Resources/Portable Class/Playlist.cs index 5eab1c9..2120c31 100644 --- a/MusicApp/Resources/Portable Class/Playlist.cs +++ b/MusicApp/Resources/Portable Class/Playlist.cs @@ -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; } } } \ No newline at end of file diff --git a/MusicApp/Resources/Portable Class/PlaylistTracks.cs b/MusicApp/Resources/Portable Class/PlaylistTracks.cs index 052712b..f8761b5 100644 --- a/MusicApp/Resources/Portable Class/PlaylistTracks.cs +++ b/MusicApp/Resources/Portable Class/PlaylistTracks.cs @@ -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 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(); if (musicCursor != null && musicCursor.MoveToFirst()) { @@ -138,6 +142,7 @@ namespace MusicApp.Resources.Portable_Class } else if (ytID != null) { + tracks = new List(); string nextPageToken = ""; while (nextPageToken != null) { diff --git a/MusicApp/Resources/Portable Class/YoutubeEngine.cs b/MusicApp/Resources/Portable Class/YoutubeEngine.cs index 578d2a0..0d57a9f 100644 --- a/MusicApp/Resources/Portable Class/YoutubeEngine.cs +++ b/MusicApp/Resources/Portable Class/YoutubeEngine.cs @@ -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();