Skip to content

Commit

Permalink
Android: Several bug fixes with new MobileNavigationManager implement…
Browse files Browse the repository at this point in the history
…ation and new MobileLibraryBrowserPresenter tab history.
  • Loading branch information
ycastonguay committed Oct 31, 2013
1 parent adebc97 commit 0fb9225
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 17 deletions.
2 changes: 1 addition & 1 deletion MPfm/MPfm.Android/Classes/Activities/MainActivity.cs
Expand Up @@ -239,7 +239,7 @@ public override void OnBackPressed()
{
//Console.WriteLine("MainActivity - OnBackPressed - CanRemoveFragment");
//PopMobileLibraryBrowserBackstack(tabType);
_messengerHub.PublishAsync<MobileLibraryBrowserPopBackstackMessage>(new MobileLibraryBrowserPopBackstackMessage(this, MobileLibraryBrowserType.Artists, new LibraryQuery()));
_messengerHub.PublishAsync<MobileLibraryBrowserPopBackstackMessage>(new MobileLibraryBrowserPopBackstackMessage(this));
}
else
{
Expand Down
Expand Up @@ -27,14 +27,9 @@ namespace MPfm.MVP.Messages
/// </summary>
public class MobileLibraryBrowserPopBackstackMessage : TinyMessageBase
{
public LibraryQuery Query { get; set; }
public MobileLibraryBrowserType BrowserType { get; set; }

public MobileLibraryBrowserPopBackstackMessage(object sender, MobileLibraryBrowserType browserType, LibraryQuery query)
public MobileLibraryBrowserPopBackstackMessage(object sender)
: base(sender)
{
BrowserType = browserType;
Query = query;
}
}
}
28 changes: 18 additions & 10 deletions MPfm/MPfm.MVP/Presenters/MobileLibraryBrowserPresenter.cs
Expand Up @@ -120,6 +120,13 @@ private void SetQuery(MobileLibraryBrowserType browserType, LibraryQuery query)

private void ChangeQuery(MobileLibraryBrowserChangeQueryMessage message)
{
// Do not change query if the current query is the same
if (_browserType == message.BrowserType &&
_query.ArtistName == message.Query.ArtistName &&
_query.AlbumTitle == message.Query.AlbumTitle &&
_query.Format == message.Query.Format)
return;

_queryHistory.Clear();
SetQuery(message.BrowserType, message.Query);
}
Expand All @@ -130,8 +137,10 @@ private void PopBackstack(MobileLibraryBrowserPopBackstackMessage message)
return;

_queryHistory.RemoveAt(_queryHistory.Count - 1);
_browserType = message.BrowserType;
_query = message.Query;
var history = _queryHistory[_queryHistory.Count - 1];
_browserType = history.Item1;
_query = history.Item2;

RefreshLibraryBrowser(true);
}

Expand Down Expand Up @@ -362,6 +371,10 @@ private void ItemClick(int index)
_browserType != MobileLibraryBrowserType.Songs)
{
var browserType = (_browserType == MobileLibraryBrowserType.Artists) ? MobileLibraryBrowserType.Albums : MobileLibraryBrowserType.Songs;
_messengerHub.PublishAsync<MobileLibraryBrowserItemClickedMessage>(new MobileLibraryBrowserItemClickedMessage(this)
{
Query = _items[index].Query
});

// On Android, pushing new fragments on ViewPager is extremely buggy, so instead we refresh the same view with new queries.
#if ANDROID
Expand All @@ -371,17 +384,12 @@ private void ItemClick(int index)
_navigationManager.PushTabView(_tabType, browserType, _items[index].Query, newView);
#endif

_messengerHub.PublishAsync<MobileLibraryBrowserItemClickedMessage>(new MobileLibraryBrowserItemClickedMessage(this)
{
Query = _items[index].Query
});
return;
}

_messengerHub.PublishAsync<MobileLibraryBrowserItemClickedMessage>(new MobileLibraryBrowserItemClickedMessage(this) {
Query = _items[index].Query,
FilePath = _items[index].AudioFile.FilePath
});
// Start playback and start Player view
var audioFiles = _audioFileCacheService.SelectAudioFiles(_query);
_playerService.Play(audioFiles, _items[index].AudioFile != null ? _items[index].AudioFile.FilePath : string.Empty);
_navigationManager.CreatePlayerView(_tabType);
}
catch(Exception ex)
Expand Down

0 comments on commit 0fb9225

Please sign in to comment.