diff --git a/MusicApp/MainActivity.cs b/MusicApp/MainActivity.cs index 81ba395..9067417 100644 --- a/MusicApp/MainActivity.cs +++ b/MusicApp/MainActivity.cs @@ -66,6 +66,21 @@ namespace MusicApp SupportActionBar.Title = "MusicApp"; Navigate(Resource.Id.playlistLayout); } + if (FolderTracks.instance != null) + { + var item2 = menu.FindItem(Resource.Id.search); + item2.SetVisible(false); + if (FolderTracks.instance.isEmpty) + { + ViewGroup rootView = FindViewById(Android.Resource.Id.Content); + rootView.RemoveView(PlaylistTracks.instance.emptyView); + } + SupportActionBar.SetHomeButtonEnabled(false); + SupportActionBar.SetDisplayHomeAsUpEnabled(false); + SupportActionBar.Title = "MusicApp"; + FolderTracks.instance = null; + SetTabs(1); + } } else if(item.ItemId == Resource.Id.search) { @@ -147,7 +162,7 @@ namespace MusicApp searchView.ClearFocus(); searchView.OnActionViewCollapsed(); - if (id == 3) + if (id != 0) return; SupportActionBar.SetHomeButtonEnabled(false); @@ -195,7 +210,7 @@ namespace MusicApp SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, fragment).Commit(); } - void SetTabs() + void SetTabs(int selectedTab = 0) { FrameLayout frame = FindViewById(Resource.Id.contentView); frame.Visibility = ViewStates.Gone; @@ -217,14 +232,21 @@ namespace MusicApp pager.Adapter = adapter; tabs.SetupWithViewPager(pager); + + pager.CurrentItem = selectedTab; + tabs.SetScrollPosition(selectedTab, 0f, true); } + //AFTER USING FOLDERTRACKS, BROWSE AND FOLDERBROWSE OONCLICK DOES NOT WORK; + public void HideTabs() { TabLayout tabs = FindViewById(Resource.Id.tabs); tabs.RemoveAllTabs(); tabs.Visibility = ViewStates.Gone; ViewPager pager = FindViewById(Resource.Id.pager); + if (pager.Adapter != null) + pager.Adapter.Dispose(); pager.Adapter = null; FrameLayout frame = FindViewById(Resource.Id.contentView); diff --git a/MusicApp/Resources/Portable Class/Browse.cs b/MusicApp/Resources/Portable Class/Browse.cs index 418d425..43973d2 100644 --- a/MusicApp/Resources/Portable Class/Browse.cs +++ b/MusicApp/Resources/Portable Class/Browse.cs @@ -77,6 +77,8 @@ namespace MusicApp.Resources.Portable_Class if (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(Android.App.Application.Context, permission) == (int)Permission.Granted) { PopulateList(); + //if(FolderBrowse.instance != null) + // FolderBrowse.instance.PopulateList(); return; } string[] permissions = new string[] { permission }; diff --git a/MusicApp/Resources/Portable Class/FolderBrowse.cs b/MusicApp/Resources/Portable Class/FolderBrowse.cs index 57f76a1..cd73d2c 100644 --- a/MusicApp/Resources/Portable Class/FolderBrowse.cs +++ b/MusicApp/Resources/Portable Class/FolderBrowse.cs @@ -20,6 +20,7 @@ namespace MusicApp.Resources.Portable_Class public static FolderBrowse instance; public static Context act; public static LayoutInflater inflater; + public List pathDisplay = new List(); public List paths = new List(); public List pathUse = new List(); public ArrayAdapter adapter; @@ -69,8 +70,11 @@ namespace MusicApp.Resources.Portable_Class return instance; } - void PopulateList() + public void PopulateList() { + if (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(Android.App.Application.Context, Manifest.Permission.ReadExternalStorage) != (int)Permission.Granted) + return; + Uri musicUri = MediaStore.Audio.Media.ExternalContentUri; CursorLoader cursorLoader = new CursorLoader(Android.App.Application.Context, musicUri, null, null, null, null); @@ -84,10 +88,11 @@ namespace MusicApp.Resources.Portable_Class { string path = musicCursor.GetString(pathID); path = path.Substring(0, path.LastIndexOf("/")); - + string displayPath = path.Substring(path.LastIndexOf("/") + 1, path.Length - (path.LastIndexOf("/") + 1)); if (!paths.Contains(path)) { + pathDisplay.Add(displayPath); paths.Add(path); pathUse.Add(1); } @@ -98,7 +103,7 @@ namespace MusicApp.Resources.Portable_Class musicCursor.Close(); } - adapter = new TwoLineAdapter(Android.App.Application.Context, Resource.Layout.TwoLineLayout, paths, pathUse); + adapter = new TwoLineAdapter(Android.App.Application.Context, Resource.Layout.TwoLineLayout, pathDisplay, pathUse); ListAdapter = adapter; ListView.TextFilterEnabled = true; ListView.ItemClick += ListView_ItemClick; @@ -113,12 +118,13 @@ namespace MusicApp.Resources.Portable_Class public void ListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e) { - ListSongs(paths[e.Position]); + ListSongs(pathDisplay[e.Position], paths[e.Position]); } private void ListView_ItemLongClick(object sender, AdapterView.ItemLongClickEventArgs e) { string path = paths[e.Position]; + string displayPath = pathDisplay[e.Position]; AlertDialog.Builder builder = new AlertDialog.Builder(Activity, Resource.Style.AppCompatAlertDialogStyle); builder.SetTitle("Pick an action"); @@ -127,7 +133,7 @@ namespace MusicApp.Resources.Portable_Class switch (args.Which) { case 0: - ListSongs(path); + ListSongs(displayPath, path); break; case 1: GetPlaylist(path); @@ -142,15 +148,15 @@ namespace MusicApp.Resources.Portable_Class builder.Show(); } - void ListSongs(string path) + void ListSongs(string displayPath, string path) { AppCompatActivity act = (AppCompatActivity)Activity; act.SupportActionBar.SetHomeButtonEnabled(true); act.SupportActionBar.SetDisplayHomeAsUpEnabled(true); - act.SupportActionBar.Title = path; - MainActivity.instance.HideTabs(); + act.SupportActionBar.Title = displayPath; + //MainActivity.instance.HideTabs(); FragmentTransaction transaction = FragmentManager.BeginTransaction(); - transaction.Replace(Resource.Id.contentView, FolderTracks.NewInstance(path)); + transaction.Replace(Resource.Id.pager, FolderTracks.NewInstance(path)); transaction.AddToBackStack(null); transaction.Commit(); } diff --git a/MusicApp/Resources/Portable Class/FolderTracks.cs b/MusicApp/Resources/Portable Class/FolderTracks.cs index a515bfb..7abdb95 100644 --- a/MusicApp/Resources/Portable Class/FolderTracks.cs +++ b/MusicApp/Resources/Portable Class/FolderTracks.cs @@ -56,12 +56,14 @@ namespace MusicApp.Resources.Portable_Class { instance = new FolderTracks { Arguments = new Bundle() }; instance.path = path; + System.Console.WriteLine("Path : " + path); return instance; } void PopulateList() { Uri musicUri = MediaStore.Audio.Media.GetContentUriForPath(path); + System.Console.WriteLine(path); CursorLoader cursorLoader = new CursorLoader(Android.App.Application.Context, musicUri, null, null, null, null); ICursor musicCursor = (ICursor)cursorLoader.LoadInBackground(); @@ -76,12 +78,16 @@ namespace MusicApp.Resources.Portable_Class int pathID = musicCursor.GetColumnIndex(MediaStore.Audio.Media.InterfaceConsts.Data); do { + string path = musicCursor.GetString(pathID); + + if (!path.Contains(this.path)) + continue; + string Artist = musicCursor.GetString(artistID); string Title = musicCursor.GetString(titleID); string Album = musicCursor.GetString(albumID); long AlbumArt = musicCursor.GetLong(musicCursor.GetColumnIndex(MediaStore.Audio.Albums.InterfaceConsts.AlbumId)); long id = musicCursor.GetLong(thisID); - string path = musicCursor.GetString(pathID); if (Title == null) Title = "Unknown Title"; diff --git a/MusicApp/Resources/layout/Main.axml b/MusicApp/Resources/layout/Main.axml index 6798c9f..f0947d9 100644 --- a/MusicApp/Resources/layout/Main.axml +++ b/MusicApp/Resources/layout/Main.axml @@ -1,106 +1,50 @@ - - - - - - - - - - - \ No newline at end of file + + + + + + \ No newline at end of file