Skip to content

Commit

Permalink
MobileLibraryBrowserPresenter now creates a new MobileLibraryBrowserV…
Browse files Browse the repository at this point in the history
…iew when necessary.

Related to issue #408.
  • Loading branch information
ycastonguay committed Feb 20, 2013
1 parent 95f1847 commit 974c281
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 6 deletions.
4 changes: 2 additions & 2 deletions MPfm/MPfm.MVP/Navigation/MobileNavigationManager.cs
Expand Up @@ -203,7 +203,8 @@ public virtual IMobileLibraryBrowserView CreateMobileLibraryBrowserView(MobileNa
// The view list can be accessed from different threads.
lock (_locker)
{
var presenter = Bootstrapper.GetContainer().Resolve<IMobileLibraryBrowserPresenter>(new NamedParameterOverloads() {{"tabType", tabType}});
var presenter = Bootstrapper.GetContainer().Resolve<IMobileLibraryBrowserPresenter>(new NamedParameterOverloads()
{{"tabType", tabType }, { "browserType", browserType}});
presenter.BindView((IMobileLibraryBrowserView) view);
_mobileLibraryBrowserList.Add((IMobileLibraryBrowserView) view, presenter);
}
Expand All @@ -212,7 +213,6 @@ public virtual IMobileLibraryBrowserView CreateMobileLibraryBrowserView(MobileNa
// Create view and manage view destruction
IMobileLibraryBrowserView newView = null;
newView = Bootstrapper.GetContainer().Resolve<IMobileLibraryBrowserView>(new NamedParameterOverloads() { { "onViewReady", onViewReady } });
newView.BrowserType = browserType; // TODO: Shouldn't this be in the presenter instead...? browserType + filter (can be artist or album)
newView.OnViewDestroy = (view) =>
{
// The view list can be accessed from different threads.
Expand Down
18 changes: 17 additions & 1 deletion MPfm/MPfm.MVP/Presenters/MobileLibraryBrowserPresenter.cs
Expand Up @@ -36,17 +36,19 @@ public class MobileLibraryBrowserPresenter : BasePresenter<IMobileLibraryBrowser
{
private readonly MobileNavigationManager _navigationManager;
private readonly MobileNavigationTabType _tabType;
private readonly MobileLibraryBrowserType _browserType;
private readonly ITinyMessengerHub _messengerHub;
private readonly ILibraryService _libraryService;
private readonly IAudioFileCacheService _audioFileCacheService;
private List<LibraryBrowserEntity> _items;

public AudioFileFormat Filter { get; private set; }

public MobileLibraryBrowserPresenter(MobileNavigationTabType tabType, ITinyMessengerHub messengerHub, MobileNavigationManager navigationManager,
public MobileLibraryBrowserPresenter(MobileNavigationTabType tabType, MobileLibraryBrowserType browserType, ITinyMessengerHub messengerHub, MobileNavigationManager navigationManager,
ILibraryService libraryService, IAudioFileCacheService audioFileCacheService)
{
_tabType = tabType;
_browserType = browserType;
_messengerHub = messengerHub;
_navigationManager = navigationManager;
_libraryService = libraryService;
Expand Down Expand Up @@ -74,6 +76,20 @@ private void AudioFileCacheUpdated(AudioFileCacheUpdatedMessage audioFileCacheUp

private void OnItemClick(int i)
{
// PLAYLIST TAB: Playlists --> Player
// ARTISTS TAB: Artists --> Albums --> Songs --> Player
// ALBUMS TAB: Albums --> Songs --> Player
// SONGS TAB: Songs --> Player

// Check if another MobileLibraryBrowser view needs to be pushed
if (_tabType == MobileNavigationTabType.Artists || _tabType == MobileNavigationTabType.Albums)
{
var browserType = (_browserType == MobileLibraryBrowserType.Artists) ? MobileLibraryBrowserType.Albums : MobileLibraryBrowserType.Songs;
var newView = _navigationManager.CreateMobileLibraryBrowserView(_tabType, browserType);
_navigationManager.PushTabView(_tabType, newView);
return;
}

// Make sure the view was binded to the presenter before publishing a message
Action<IBaseView> onViewBindedToPresenter = (theView) => _messengerHub.PublishAsync<MobileLibraryBrowserItemClickedMessage>(new MobileLibraryBrowserItemClickedMessage(this)
{
Expand Down
3 changes: 0 additions & 3 deletions MPfm/MPfm.MVP/Views/IMobileLibraryBrowserView.cs
Expand Up @@ -26,9 +26,6 @@ namespace MPfm.MVP.Views
/// </summary>
public interface IMobileLibraryBrowserView : IBaseView
{
MobileLibraryBrowserType BrowserType { get; set; }
string Filter { get; set; }

Action<int> OnItemClick { get; set; }

void RefreshLibraryBrowser(IEnumerable<LibraryBrowserEntity> entities);
Expand Down

0 comments on commit 974c281

Please sign in to comment.