package com.teleca.jamendo.ui.dialog;
import java.util.ArrayList;
import com.teleca.jamendo.activity.playview.PlayMethod;
import com.teleca.jamendo.api.IDatabase;
import com.teleca.jamendo.api_impl.DatabaseImpl;
import com.teleca.jamendo.model.Album;
import com.teleca.jamendo.model.Playlist;
import com.teleca.jamendo.model.Track;
import com.teleca.jamendo.R;
import android.app.Activity;
import android.app.Dialog;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
/**
* Allows adding track/album to a new playlist or a selected one from the list
*
* @author Lukasz Wisniewski
*/
public class AddToPlaylistDialog extends Dialog {
private Activity mActivity;
private ListView mListView;
private EditText mEditText;
private Button mButton;
private Playlist mPlaylistEntry;
private Album mAlbum;
private Track[] mTracks;
private IDatabase mDatabase;
public AddToPlaylistDialog(Activity context) {
super(context);
init(context);
}
public AddToPlaylistDialog(Activity context, int theme) {
super(context, theme);
init(context);
}
public AddToPlaylistDialog(Activity context, boolean cancelable,
OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
init(context);
}
/**
* Sharable code between constructors
*/
private void init(Activity context){
mActivity = context;
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.add_to_playlist);
mDatabase = new DatabaseImpl(mActivity);
ArrayList<String> availablePlaylistsAL = mDatabase.getAvailablePlaylists();
String[] availablePlaylists = new String[availablePlaylistsAL.size()];
availablePlaylistsAL.toArray(availablePlaylists);
mListView = (ListView)findViewById(R.id.PlaylistListView);
mListView.setAdapter(new ArrayAdapter<String>(this.getContext(),
android.R.layout.simple_list_item_1, availablePlaylists));
mListView.setOnItemClickListener(mPlaylistItemClick);
mButton = (Button)findViewById(R.id.PlaylistNewButton);
mButton.setOnClickListener(mButtonClick);
mEditText = (EditText)findViewById(R.id.PlaylistEditText);
}
public void setPlaylistEntry(Playlist mPlaylistEntry) {
this.mPlaylistEntry = mPlaylistEntry;
}
public void setPlaylistAlbum(Track[] tracks, Album album) {
this.mAlbum = album;
this.mTracks = tracks;
}
public Playlist getPlaylistEntry() {
return mPlaylistEntry;
}
private android.view.View.OnClickListener mButtonClick = new android.view.View.OnClickListener(){
@Override
public void onClick(View v) {
String playlistName = mEditText.getText().toString();
addToPlaylist(playlistName);
}
};
private OnItemClickListener mPlaylistItemClick = new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position,
long time) {
String playlistName = (String)adapterView.getAdapter().getItem(position);
addToPlaylist(playlistName);
}
};
private void addToPlaylist(String playlistName){
PlayMethod playlist = mDatabase.loadPlaylist(playlistName);
if(playlist == null){
playlist = new PlayMethod();
}
if(getPlaylistEntry() != null)
playlist.addPlaylistEntry(getPlaylistEntry());
if(mAlbum != null && mTracks != null)
playlist.addTracks(mTracks, mAlbum);
if(playlistName.length() == 0 || playlistName.startsWith(" "))
return;
mDatabase.savePlaylist(playlist, playlistName);
Toast.makeText(AddToPlaylistDialog.this.getContext(), R.string.added_to_playlist, Toast.LENGTH_SHORT).show();
AddToPlaylistDialog.this.cancel();
}
}