mirror of
https://github.com/zoriya/Opus.git
synced 2025-12-06 06:26:15 +00:00
Solving bugs.
This commit is contained in:
@@ -1275,6 +1275,9 @@ namespace Opus.Api.Services
|
||||
|
||||
public async void Pause()
|
||||
{
|
||||
if (!isRunning)
|
||||
return;
|
||||
|
||||
ShouldResumePlayback = false;
|
||||
FrameLayout smallPlayer = MainActivity.instance.FindViewById<FrameLayout>(Resource.Id.smallPlayer);
|
||||
smallPlayer?.FindViewById<ImageButton>(Resource.Id.spPlay)?.SetImageResource(Resource.Drawable.Play);
|
||||
@@ -1283,7 +1286,7 @@ namespace Opus.Api.Services
|
||||
isRunning = false;
|
||||
Queue.instance?.RefreshCurrent();
|
||||
|
||||
if (!UseCastPlayer && player != null && isRunning)
|
||||
if (!UseCastPlayer && player != null)
|
||||
{
|
||||
Intent tmpPauseIntent = new Intent(Application.Context, typeof(MusicPlayer));
|
||||
tmpPauseIntent.SetAction("Pause");
|
||||
@@ -1308,7 +1311,7 @@ namespace Opus.Api.Services
|
||||
noisyRegistered = false;
|
||||
}
|
||||
}
|
||||
else if(UseCastPlayer && RemotePlayer != null && isRunning)
|
||||
else if(UseCastPlayer && RemotePlayer != null)
|
||||
RemotePlayer.Pause();
|
||||
|
||||
SaveTimer(CurrentPosition);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using Android.Views;
|
||||
using Android.Support.Design.Widget;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using Opus.Api;
|
||||
using Opus.Api.Services;
|
||||
@@ -206,6 +207,18 @@ namespace Opus.Code.Api
|
||||
if (startPlaybackWhenPosible)
|
||||
Player.instance?.Ready();
|
||||
}
|
||||
catch //We use this because when the network is reseted, an unknow error is thrown. We also don't want the app to crash at this state so it's ok to use a global catch.
|
||||
{
|
||||
MainActivity.instance.UnknowError(null, Snackbar.LengthLong);
|
||||
|
||||
song.IsParsed = false;
|
||||
|
||||
if (MainActivity.instance != null)
|
||||
MainActivity.instance.FindViewById<ProgressBar>(Resource.Id.ytProgress).Visibility = ViewStates.Gone;
|
||||
|
||||
if (startPlaybackWhenPosible)
|
||||
Player.instance?.Ready();
|
||||
}
|
||||
|
||||
queuePosition = -1;
|
||||
instances.Remove(this);
|
||||
|
||||
@@ -188,9 +188,18 @@ namespace Opus
|
||||
else if (MusicPlayer.UseCastPlayer)
|
||||
MusicPlayer.GetQueueFromCast();
|
||||
|
||||
Console.WriteLine("&Resuming, Search Instance: " + SearchableActivity.instance + " SearchQuery: " + SearchableActivity.instance?.SearchQuery);
|
||||
if (SearchableActivity.instance != null && SearchableActivity.instance.SearchQuery != null && SearchableActivity.instance.SearchQuery != "")
|
||||
{
|
||||
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(SearchableActivity.instance.SearchQuery, 0)).AddToBackStack("Youtube").Commit();
|
||||
IMenuItem searchItem = menu.FindItem(Resource.Id.search);
|
||||
searchItem.ExpandActionView();
|
||||
SearchView searchView = (SearchView)searchItem.ActionView;
|
||||
searchView.SetQuery(SearchableActivity.instance.SearchQuery, false);
|
||||
searchView.ClearFocus();
|
||||
searchView.Focusable = false;
|
||||
|
||||
if(SearchableActivity.instance.SearchQuery != YoutubeSearch.instances[0].querryType) //We don't want to redo the query if the user already searched for the exact same query.
|
||||
SupportFragmentManager.BeginTransaction().Replace(Resource.Id.contentView, Pager.NewInstance(SearchableActivity.instance.SearchQuery, 0)).AddToBackStack("Youtube").Commit();
|
||||
SearchableActivity.instance = null;
|
||||
}
|
||||
|
||||
@@ -316,7 +325,7 @@ namespace Opus
|
||||
|
||||
public bool OnMenuItemActionCollapse(IMenuItem item) //Youtube search collapse
|
||||
{
|
||||
if (YoutubeSearch.instances == null || SearchableActivity.IgnoreMyself)
|
||||
if (YoutubeSearch.instances == null /*|| SearchableActivity.IgnoreMyself*/)
|
||||
return true;
|
||||
|
||||
SupportFragmentManager.PopBackStack();
|
||||
@@ -340,7 +349,7 @@ namespace Opus
|
||||
|
||||
public void OnFocusChange(View v, bool hasFocus)
|
||||
{
|
||||
if (hasFocus && !SearchableActivity.IgnoreMyself)
|
||||
if (hasFocus /*&& !SearchableActivity.IgnoreMyself*/)
|
||||
{
|
||||
Bundle animation = ActivityOptionsCompat.MakeCustomAnimation(this, Android.Resource.Animation.FadeIn, Android.Resource.Animation.FadeOut).ToBundle();
|
||||
StartActivity(new Intent(this, typeof(SearchableActivity)), animation);
|
||||
@@ -552,9 +561,9 @@ namespace Opus
|
||||
snackBar.Show();
|
||||
}
|
||||
|
||||
public void UnknowError(Action action = null)
|
||||
public void UnknowError(Action action = null, int Length = Snackbar.LengthIndefinite)
|
||||
{
|
||||
Snackbar snackBar = Snackbar.Make(FindViewById(Resource.Id.snackBar), Resource.String.unknow, Snackbar.LengthIndefinite);
|
||||
Snackbar snackBar = Snackbar.Make(FindViewById(Resource.Id.snackBar), Resource.String.unknow, Length);
|
||||
if (action != null)
|
||||
snackBar.SetAction("Try Again", (sender) => { action.Invoke(); snackBar.Dismiss(); });
|
||||
else
|
||||
|
||||
@@ -8,6 +8,7 @@ using Newtonsoft.Json;
|
||||
using Opus.Adapter;
|
||||
using Opus.DataStructure;
|
||||
using SQLite;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
@@ -19,7 +20,7 @@ using Toolbar = Android.Support.V7.Widget.Toolbar;
|
||||
namespace Opus.Fragments
|
||||
{
|
||||
[Activity(Label = "SearchableActivity", Theme = "@style/Theme")]
|
||||
public class SearchableActivity : AppCompatActivity, IMenuItemOnActionExpandListener
|
||||
public class SearchableActivity : AppCompatActivity, SearchView.IOnCloseListener
|
||||
{
|
||||
public static SearchableActivity instance;
|
||||
public static bool IgnoreMyself = false;
|
||||
@@ -118,7 +119,7 @@ namespace Opus.Fragments
|
||||
suggestions = items.ConvertAll(StringToSugest);
|
||||
suggestions.InsertRange(0, History.Where(x => x.Text.StartsWith(e.NewText)));
|
||||
|
||||
if(SearchQuery == null || SearchQuery == "")
|
||||
if (SearchQuery == null || SearchQuery == "")
|
||||
RunOnUiThread(new Java.Lang.Runnable(() => { ListView.Adapter = new SuggestionAdapter(instance, Resource.Layout.SuggestionLayout, suggestions); }));
|
||||
}
|
||||
}
|
||||
@@ -137,14 +138,22 @@ namespace Opus.Fragments
|
||||
SearchQuery = e.NewText;
|
||||
AddQueryToHistory(e.NewText);
|
||||
Finish();
|
||||
OverridePendingTransition(Android.Resource.Animation.FadeIn, Android.Resource.Animation.FadeOut);
|
||||
OverridePendingTransition(0, 0);
|
||||
e.Handled = true;
|
||||
};
|
||||
searchItem.SetOnActionExpandListener(this);
|
||||
searchView.SetQuery(((SearchView)MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView).Query, false);
|
||||
searchView.SetOnCloseListener(new SearchableCloseListener());
|
||||
SearchQuery = ((SearchView)MainActivity.instance.menu.FindItem(Resource.Id.search).ActionView).Query;
|
||||
searchView.SetQuery(SearchQuery, false);
|
||||
return base.OnCreateOptionsMenu(menu);
|
||||
}
|
||||
|
||||
public bool OnClose()
|
||||
{
|
||||
Finish();
|
||||
OverridePendingTransition(0, 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
void AddQueryToHistory(string query)
|
||||
{
|
||||
if (!History.ConvertAll(SuggestToQuery).Contains(query, new QueryComparer()))
|
||||
@@ -191,15 +200,6 @@ namespace Opus.Fragments
|
||||
if ((SearchQuery == null || SearchQuery == "") && YoutubeSearch.instances == null)
|
||||
MainActivity.instance.CancelSearch();
|
||||
}
|
||||
|
||||
public bool OnMenuItemActionCollapse(IMenuItem item)
|
||||
{
|
||||
Finish();
|
||||
OverridePendingTransition(Android.Resource.Animation.FadeIn, Android.Resource.Animation.FadeOut);
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool OnMenuItemActionExpand(IMenuItem item) { return true; }
|
||||
}
|
||||
|
||||
public class QueryComparer : IEqualityComparer<string>
|
||||
@@ -214,4 +214,13 @@ namespace Opus.Fragments
|
||||
return obj.GetHashCode();
|
||||
}
|
||||
}
|
||||
|
||||
public class SearchableCloseListener : Java.Lang.Object, SearchView.IOnCloseListener
|
||||
{
|
||||
public bool OnClose()
|
||||
{
|
||||
Console.WriteLine("&OnClose");
|
||||
return SearchableActivity.instance.OnClose();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -169,13 +169,13 @@ namespace Opus.Fragments
|
||||
|
||||
public async Task Search(string search, string querryType, bool loadingBar)
|
||||
{
|
||||
SearchableActivity.IgnoreMyself = true;
|
||||
IMenuItem searchItem = MainActivity.instance.menu.FindItem(Resource.Id.search);
|
||||
searchItem.ExpandActionView();
|
||||
SearchView searchView = (SearchView)searchItem.ActionView;
|
||||
searchView.SetQuery(search, false);
|
||||
searchView.ClearFocus();
|
||||
searchView.Focusable = false;
|
||||
//SearchableActivity.IgnoreMyself = true;
|
||||
//IMenuItem searchItem = MainActivity.instance.menu.FindItem(Resource.Id.search);
|
||||
//searchItem.ExpandActionView();
|
||||
//SearchView searchView = (SearchView)searchItem.ActionView;
|
||||
//searchView.SetQuery(search, false);
|
||||
//searchView.ClearFocus();
|
||||
//searchView.Focusable = false;
|
||||
|
||||
if (search == null || search == "")
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user