package com.sregg.android.tv.spotifyPlayer.fragments; import android.os.Bundle; import android.support.v17.leanback.widget.Action; import android.support.v17.leanback.widget.OnItemViewClickedListener; import android.support.v17.leanback.widget.Presenter; import android.util.Log; import com.squareup.otto.Subscribe; import com.sregg.android.tv.spotifyPlayer.BusProvider; import com.sregg.android.tv.spotifyPlayer.R; import com.sregg.android.tv.spotifyPlayer.SpotifyTvApplication; import com.sregg.android.tv.spotifyPlayer.activities.ArtistsAlbumsActivity; import com.sregg.android.tv.spotifyPlayer.events.ContentState; import com.sregg.android.tv.spotifyPlayer.events.OnTrackChanged; import com.sregg.android.tv.spotifyPlayer.presenters.NowPlayingDetailsPresenter; import com.sregg.android.tv.spotifyPlayer.presenters.PlaylistTrackRowPresenter; import java.util.ArrayList; import java.util.List; import kaaes.spotify.webapi.android.models.ArtistSimple; import kaaes.spotify.webapi.android.models.TrackSimple; /** * Created by Björn Dahlgren on 27/07/15. */ public class NowPlayingFragment extends TracksDetailsFragment { private static final String TAG = NowPlayingFragment.class.getSimpleName(); private static final long ACTION_VIEW_ARTIST = 2; private SpotifyTvApplication mApp; private ContentState mContentState; @Override public void onCreate(Bundle savedInstanceState) { Log.d(TAG, "onCreate"); super.onCreate(savedInstanceState); mApp = SpotifyTvApplication.getInstance(); setupFragment(); } @Override public void onDestroy() { BusProvider.getInstance().unregister(this); super.onDestroy(); } private void setupFragment() { BusProvider.getInstance().register(this); updateContent(); } private void updateContent() { this.mContentState = mApp.getSpotifyPlayerController().getPlayingState(); if (this.mContentState != null && this.mContentState.getCurrentTrack() != null) { onContentLoaded(); } } @Override List<Action> getDetailActions() { List<Action> actions = new ArrayList<>(); actions.add(new Action( ACTION_VIEW_ARTIST, getResources().getString(R.string.go_to_artist), null )); return actions; } @Override protected boolean onActionClicked(Action action) { if (super.onActionClicked(action)) { return true; } if (action.getId() == ACTION_VIEW_ARTIST) { ArtistSimple artist = null; TrackSimple track = (TrackSimple) getObject(); if (track.artists.size() > 0) { artist = track.artists.get(0); } if (artist != null) { ArtistsAlbumsActivity.launch(getActivity(), artist.id, artist.name); } return true; } return false; } @Override protected Presenter getDetailsPresenter() { return new NowPlayingDetailsPresenter(); } @Override protected Presenter getTrackRowPresenter(OnItemViewClickedListener onTrackRowItemClicked) { return new PlaylistTrackRowPresenter(onTrackRowItemClicked); } @Override protected List<TrackSimple> getTracks() { return mContentState.getTracksQueue(); } @Override protected List<String> getTrackUris() { return mContentState.getTrackUrisQueue(); } @Override protected String getObjectUri() { return mContentState != null ? mContentState.getCurrentObjectUri() : null; } @Override protected Object getObject() { return mContentState != null ? mContentState.getCurrentTrack() : null; } @SuppressWarnings("unused") @Subscribe public void onTrackChanged(OnTrackChanged trackChanged) { updateContent(); } }