Solving bugs.

This commit is contained in:
Anonymus Raccoon
2019-06-08 16:17:21 +02:00
parent 7179680d84
commit 0f6720a381
5 changed files with 63 additions and 29 deletions

View File

@@ -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);

View File

@@ -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);

View File

@@ -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

View File

@@ -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();
}
}
}

View File

@@ -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;