package com.wigwamlabs.spotify.app; import android.app.PendingIntent; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.SeekBar; import android.widget.TextView; import com.wigwamlabs.spotify.NativeItem; import com.wigwamlabs.spotify.Playlist; import com.wigwamlabs.spotify.PlaylistContainer; import com.wigwamlabs.spotify.PlaylistQueue; import com.wigwamlabs.spotify.Session; import com.wigwamlabs.spotify.ui.PlaylistAdapter; import com.wigwamlabs.spotify.ui.PlaylistContainerAdapter; import com.wigwamlabs.spotify.ui.SpotifyPlayerActivity; public class MainActivity extends SpotifyPlayerActivity { private TextView mConnectionState; private PlaylistContainer mPlaylistContainer; private ListView mPlaylistsList; private Playlist mPlaylist; private ListView mPlaylistList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mConnectionState = (TextView) findViewById(R.id.connectionState); mPlaylistsList = (ListView) findViewById(R.id.playlists); mPlaylistsList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { onPlaylistClicked(((PlaylistContainerAdapter) parent.getAdapter()).getItem(position)); } }); mPlaylistList = (ListView) findViewById(R.id.playlist); mPlaylistList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { onTrackClicked(position); } }); setTrackArtists((TextView) findViewById(R.id.trackArtists)); setTrackName((TextView) findViewById(R.id.trackName)); setTrackProgress((SeekBar) findViewById(R.id.seekBar)); setResumeButton(findViewById(R.id.resumeButton)); setPauseButton(findViewById(R.id.pauseButton)); setNextButton(findViewById(R.id.nextButton)); bindSpotifyService(); } @Override protected void onSpotifySessionAttached(Session spotifySession) { super.onSpotifySessionAttached(spotifySession); setAutoLogin(true); } @Override protected void onDestroy() { if (mPlaylist != null) { mPlaylist.destroy(); mPlaylist = null; } if (mPlaylistContainer != null) { mPlaylistContainer.destroy(); mPlaylistContainer = null; } super.onDestroy(); } @Override public void onConnectionStateUpdated(int state) { super.onConnectionStateUpdated(state); final int res; switch (state) { case Session.CONNECTION_STATE_LOGGED_OUT: res = R.string.connectionStateLoggedOut; break; case Session.CONNECTION_STATE_LOGGED_IN: res = R.string.connectionStateLoggedIn; break; case Session.CONNECTION_STATE_DISCONNECTED: res = R.string.connectionStateDisconnected; break; case Session.CONNECTION_STATE_OFFLINE: res = R.string.connectionStateOffline; break; case Session.CONNECTION_STATE_UNDEFINED: default: res = R.string.connectionStateUndefined; break; } mConnectionState.setText(res); if (state != Session.CONNECTION_STATE_LOGGED_OUT && mPlaylistContainer == null) { mPlaylistContainer = getSpotifySession().getPlaylistContainer(); mPlaylistsList.setAdapter(new PlaylistContainerAdapter(this, mPlaylistContainer)); } } private void onPlaylistClicked(NativeItem item) { if (item instanceof Playlist) { final Playlist playlist = (Playlist) item; if (mPlaylist != null) { mPlaylist.destroy(); mPlaylist = null; } mPlaylist = playlist.clone(); mPlaylistList.setAdapter(new PlaylistAdapter(this, mPlaylist)); } } private void onTrackClicked(int position) { //TODO change queue if current queue is using the same playlist, instead of always creating a new queue getSpotifyService().setPlayIntent(PendingIntent.getActivity(this, 0, new Intent(this, MainActivity.class), 0)); getPlayer().play(new PlaylistQueue(mPlaylist, position, false)); } }