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