mirror of
https://github.com/zoriya/Opus.git
synced 2026-06-09 00:34:42 +00:00
Updating youtube engine instance cotroller
This commit is contained in:
+41
-25
@@ -370,9 +370,18 @@ namespace MusicApp
|
||||
var searchView = menu.FindItem(Resource.Id.search).ActionView.JavaCast<SearchView>();
|
||||
searchView.QueryTextSubmit += (s, e) =>
|
||||
{
|
||||
SaveInstance();
|
||||
SetYtTabs(e.Query, 0);
|
||||
|
||||
if(YoutubeEngine.instances != null)
|
||||
{
|
||||
YoutubeEngine.searchKeyWorld = e.Query;
|
||||
#pragma warning disable CS4014
|
||||
foreach(YoutubeEngine instance in YoutubeEngine.instances)
|
||||
instance.Search(e.Query, instance.querryType, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
SaveInstance();
|
||||
SetYtTabs(e.Query, 0);
|
||||
}
|
||||
e.Handled = true;
|
||||
};
|
||||
return base.OnCreateOptionsMenu(menu);
|
||||
@@ -419,13 +428,15 @@ namespace MusicApp
|
||||
FolderTracks.instance = null;
|
||||
SetBrowseTabs(1);
|
||||
}
|
||||
else if(YoutubeEngine.instance != null)
|
||||
else if(YoutubeEngine.instances != null)
|
||||
{
|
||||
contentRefresh.Refresh -= YoutubeEngine.instance.OnRefresh;
|
||||
OnPaddingChanged -= YoutubeEngine.instance.OnPaddingChanged;
|
||||
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);
|
||||
rootView.RemoveView(YoutubeEngine.instance.emptyView);
|
||||
|
||||
var searchView = menu.FindItem(Resource.Id.search).ActionView.JavaCast<Android.Support.V7.Widget.SearchView>();
|
||||
menu.FindItem(Resource.Id.search).CollapseActionView();
|
||||
@@ -433,7 +444,7 @@ namespace MusicApp
|
||||
searchView.Iconified = true;
|
||||
searchView.SetQuery("", false);
|
||||
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
|
||||
YoutubeEngine.instance = null;
|
||||
YoutubeEngine.instances = null;
|
||||
ResumeInstance();
|
||||
|
||||
}
|
||||
@@ -524,13 +535,15 @@ namespace MusicApp
|
||||
|
||||
public void Navigate(int layout)
|
||||
{
|
||||
if(YoutubeEngine.instance != null)
|
||||
if(YoutubeEngine.instances != null)
|
||||
{
|
||||
contentRefresh.Refresh -= YoutubeEngine.instance.OnRefresh;
|
||||
OnPaddingChanged -= YoutubeEngine.instance.OnPaddingChanged;
|
||||
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);
|
||||
rootView.RemoveView(YoutubeEngine.instance.emptyView);
|
||||
|
||||
var searchView = menu.FindItem(Resource.Id.search).ActionView.JavaCast<Android.Support.V7.Widget.SearchView>();
|
||||
menu.FindItem(Resource.Id.search).CollapseActionView();
|
||||
@@ -538,14 +551,15 @@ namespace MusicApp
|
||||
searchView.Iconified = true;
|
||||
searchView.SetQuery("", false);
|
||||
SupportActionBar.SetDisplayHomeAsUpEnabled(false);
|
||||
YoutubeEngine.instance = null;
|
||||
YoutubeEngine.instances = null;
|
||||
ResumeInstance();
|
||||
}
|
||||
|
||||
Android.Support.V4.App.Fragment fragment = null;
|
||||
switch (layout)
|
||||
{
|
||||
case Resource.Id.musicLayout:
|
||||
if (Home.instance != null && YoutubeEngine.instance == null)
|
||||
if (Home.instance != null && YoutubeEngine.instances != null)
|
||||
{
|
||||
Home.instance.Refresh();
|
||||
return;
|
||||
@@ -559,7 +573,7 @@ namespace MusicApp
|
||||
break;
|
||||
|
||||
case Resource.Id.browseLayout:
|
||||
if (Browse.instance != null && YoutubeEngine.instance == null)
|
||||
if (Browse.instance != null && YoutubeEngine.instances != null)
|
||||
{
|
||||
Browse.instance.Refresh();
|
||||
return;
|
||||
@@ -572,7 +586,7 @@ namespace MusicApp
|
||||
break;
|
||||
|
||||
case Resource.Id.playlistLayout:
|
||||
if (Playlist.instance != null && YoutubeEngine.instance == null)
|
||||
if (Playlist.instance != null && YoutubeEngine.instances != null)
|
||||
{
|
||||
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
Playlist.instance.Refresh();
|
||||
@@ -610,7 +624,7 @@ namespace MusicApp
|
||||
TabLayout tabs = FindViewById<TabLayout>(Resource.Id.tabs);
|
||||
ViewPager pager = FindViewById<ViewPager>(Resource.Id.pager);
|
||||
|
||||
if (YoutubeEngine.instance != null)
|
||||
if (YoutubeEngine.instances != null)
|
||||
{
|
||||
ViewPagerAdapter oldAdapter = (ViewPagerAdapter)pager.Adapter;
|
||||
for(int i = 0; i < oldAdapter.Count; i++)
|
||||
@@ -679,10 +693,11 @@ namespace MusicApp
|
||||
tabs.AddTab(tabs.NewTab().SetText("Playlists"));
|
||||
tabs.AddTab(tabs.NewTab().SetText("Channels"));
|
||||
|
||||
oldAdapter.AddFragment(YoutubeEngine.NewInstance(querry, "All"), "All");
|
||||
oldAdapter.AddFragment(YoutubeEngine.NewInstance(querry, "Tracks"), "Tracks");
|
||||
oldAdapter.AddFragment(YoutubeEngine.NewInstance(querry, "Playlists"), "Playlists");
|
||||
oldAdapter.AddFragment(YoutubeEngine.NewInstance(querry, "Channels"), "Channels");
|
||||
Android.Support.V4.App.Fragment[] fragment = YoutubeEngine.NewInstances(querry);
|
||||
oldAdapter.AddFragment(fragment[0], "All");
|
||||
oldAdapter.AddFragment(fragment[1], "Tracks");
|
||||
oldAdapter.AddFragment(fragment[2], "Playlists");
|
||||
oldAdapter.AddFragment(fragment[3], "Channels");
|
||||
|
||||
pager.Adapter = oldAdapter;
|
||||
}
|
||||
@@ -698,10 +713,11 @@ namespace MusicApp
|
||||
tabs.AddTab(tabs.NewTab().SetText("Channels"));
|
||||
|
||||
ViewPagerAdapter adapter = new ViewPagerAdapter(SupportFragmentManager);
|
||||
adapter.AddFragment(YoutubeEngine.NewInstance(querry, "All"), "All");
|
||||
adapter.AddFragment(YoutubeEngine.NewInstance(querry, "Tracks"), "Tracks");
|
||||
adapter.AddFragment(YoutubeEngine.NewInstance(querry, "Playlists"), "Playlists");
|
||||
adapter.AddFragment(YoutubeEngine.NewInstance(querry, "Channels"), "Channels");
|
||||
Android.Support.V4.App.Fragment[] fragment = YoutubeEngine.NewInstances(querry);
|
||||
adapter.AddFragment(fragment[0], "All");
|
||||
adapter.AddFragment(fragment[1], "Tracks");
|
||||
adapter.AddFragment(fragment[2], "Playlists");
|
||||
adapter.AddFragment(fragment[3], "Channels");
|
||||
|
||||
pager.Adapter = adapter;
|
||||
pager.AddOnPageChangeListener(this);
|
||||
|
||||
@@ -25,8 +25,10 @@ namespace MusicApp.Resources.Portable_Class
|
||||
{
|
||||
public class YoutubeEngine : Fragment
|
||||
{
|
||||
public static YoutubeEngine instance;
|
||||
public static YoutubeEngine[] instances;
|
||||
public static YouTubeService youtubeService;
|
||||
public static string searchKeyWorld;
|
||||
public string querryType;
|
||||
public List<YtFile> result;
|
||||
|
||||
private RecyclerView ListView;
|
||||
@@ -34,15 +36,11 @@ namespace MusicApp.Resources.Portable_Class
|
||||
public View emptyView;
|
||||
public static View loadingView;
|
||||
private string[] actions = new string[] { "Play", "Play Next", "Play Last", "Add To Playlist", "Download" };
|
||||
private string searchKeyWorld;
|
||||
private string querryType;
|
||||
|
||||
public override void OnActivityCreated(Bundle savedInstanceState)
|
||||
{
|
||||
base.OnActivityCreated(savedInstanceState);
|
||||
instance = this;
|
||||
ListView.ScrollChange += MainActivity.instance.Scroll;
|
||||
MainActivity.instance.contentRefresh.Refresh += OnRefresh;
|
||||
MainActivity.instance.OnPaddingChanged += OnPaddingChanged;
|
||||
MainActivity.instance.SupportActionBar.SetDisplayHomeAsUpEnabled(true);
|
||||
}
|
||||
@@ -55,12 +53,21 @@ namespace MusicApp.Resources.Portable_Class
|
||||
adapter.listPadding = (int)(8 * MainActivity.instance.Resources.DisplayMetrics.Density + 0.5f);
|
||||
}
|
||||
|
||||
public static Fragment NewInstance(string searchQuery, string querryType)
|
||||
public static Fragment[] NewInstances(string searchQuery)
|
||||
{
|
||||
instance = new YoutubeEngine { Arguments = new Bundle() };
|
||||
instance.searchKeyWorld = searchQuery;
|
||||
instance.querryType = querryType;
|
||||
return instance;
|
||||
searchKeyWorld = searchQuery;
|
||||
instances = new YoutubeEngine[]
|
||||
{
|
||||
new YoutubeEngine { Arguments = new Bundle() },
|
||||
new YoutubeEngine { Arguments = new Bundle() },
|
||||
new YoutubeEngine { Arguments = new Bundle() },
|
||||
new YoutubeEngine { Arguments = new Bundle() },
|
||||
};
|
||||
instances[0].querryType = "All";
|
||||
instances[1].querryType = "Tracks";
|
||||
instances[2].querryType = "Playlists";
|
||||
instances[3].querryType = "Channels";
|
||||
return instances;
|
||||
}
|
||||
|
||||
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
|
||||
@@ -157,6 +164,8 @@ namespace MusicApp.Resources.Portable_Class
|
||||
{
|
||||
listPadding = MainActivity.paddingBot - MainActivity.defaultPaddingBot
|
||||
};
|
||||
adapter.ItemClick += ListView_ItemClick;
|
||||
adapter.ItemLongCLick += ListView_ItemLongClick;
|
||||
ListView.SetAdapter(adapter);
|
||||
|
||||
if(adapter == null || adapter.ItemCount == 0)
|
||||
@@ -185,26 +194,51 @@ namespace MusicApp.Resources.Portable_Class
|
||||
}
|
||||
}
|
||||
|
||||
public async void OnRefresh(object sender, System.EventArgs e)
|
||||
private void ListView_ItemClick(object sender, int position)
|
||||
{
|
||||
await Refresh();
|
||||
MainActivity.instance.contentRefresh.Refreshing = false;
|
||||
Song item = result[position].item;
|
||||
switch (result[position].Kind)
|
||||
{
|
||||
case YtKind.Video:
|
||||
Play(item.GetPath(), item.GetName(), item.GetArtist(), item.GetAlbum());
|
||||
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.OnPaddingChanged -= instance.OnPaddingChanged;
|
||||
}
|
||||
|
||||
var searchView = MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView.JavaCast<Android.Support.V7.Widget.SearchView>();
|
||||
MainActivity.instance.menu.FindItem(Resource.Id.search).CollapseActionView();
|
||||
searchView.ClearFocus();
|
||||
searchView.Iconified = true;
|
||||
searchView.SetQuery("", false);
|
||||
AppCompatActivity act = (AppCompatActivity)Activity;
|
||||
act.SupportActionBar.SetHomeButtonEnabled(true);
|
||||
act.SupportActionBar.SetDisplayHomeAsUpEnabled(true);
|
||||
act.SupportActionBar.Title = item.GetName();
|
||||
MainActivity.instance.HideTabs();
|
||||
instances = null;
|
||||
MainActivity.instance.Transition(Resource.Id.contentView, PlaylistTracks.NewInstance(item.youtubeID), true);
|
||||
break;
|
||||
case YtKind.Channel:
|
||||
Toast.MakeText(Activity, "Action comming soon", ToastLength.Short).Show();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public async Task Refresh()
|
||||
private void ListView_ItemLongClick(object sender, int position)
|
||||
{
|
||||
await Search(searchKeyWorld, querryType, false);
|
||||
}
|
||||
|
||||
private void ListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
|
||||
{
|
||||
Play(result[e.Position].item.GetPath(), result[e.Position].item.GetName(), result[e.Position].item.GetArtist(), result[e.Position].item.GetAlbum());
|
||||
}
|
||||
|
||||
private void ListView_ItemLongClick(object sender, AdapterView.ItemLongClickEventArgs e)
|
||||
{
|
||||
Song item = result[e.Position].item;
|
||||
More(item);
|
||||
if(result[position].Kind == YtKind.Video)
|
||||
{
|
||||
Song item = result[position].item;
|
||||
More(item);
|
||||
}
|
||||
}
|
||||
|
||||
public void More(Song item)
|
||||
@@ -272,21 +306,9 @@ namespace MusicApp.Resources.Portable_Class
|
||||
Android.App.Application.Context.StartService(intent);
|
||||
|
||||
parseProgress.Visibility = ViewStates.Gone;
|
||||
|
||||
if(instance == null)
|
||||
{
|
||||
MainActivity.instance.HideTabs();
|
||||
MainActivity.instance.HideSearch();
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Player.NewInstance()).Commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
await Task.Delay(100);
|
||||
intent = new Intent(Android.App.Application.Context, typeof(MainActivity));
|
||||
intent.SetAction("Player");
|
||||
instance.StartActivity(intent);
|
||||
instance = null;
|
||||
}
|
||||
MainActivity.instance.HideTabs();
|
||||
MainActivity.instance.HideSearch();
|
||||
MainActivity.instance.SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Player.NewInstance()).Commit();
|
||||
}
|
||||
|
||||
public static async void PlayFiles(Song[] files, bool skipExistVerification = false)
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace MusicApp.Resources.Portable_Class
|
||||
holder.more.Click += (sender, e) =>
|
||||
{
|
||||
int tagPosition = (int)((ImageView)sender).Tag;
|
||||
YoutubeEngine.instance.More(items[tagPosition].item);
|
||||
YoutubeEngine.instances[0].More(items[tagPosition].item);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user