package com.teleca.jamendo.activity.playview; import java.io.Serializable; import java.util.ArrayList; import com.teleca.jamendo.model.Album; import com.teleca.jamendo.model.Playlist; import com.teleca.jamendo.model.Track; /** * 播放方法 * * @author lilin * @date 2012-1-9 下午06:45:02 * @ClassName: PlayMethod */ public class PlayMethod implements Serializable { private static final long serialVersionUID = 1L; private ArrayList<Playlist> playlist; /** * Keeps record of currently selected track */ private int selected = -1; public PlayMethod() { playlist = new ArrayList<Playlist>(); } public void addTrack(Track track, Album album) { Playlist playlistEntry = new Playlist(); playlistEntry.setAlbum(album); playlistEntry.setTrack(track); playlist.add(playlistEntry); } public void addTracks(Track[] tracks, Album album) { for (int i = 0; i < tracks.length; i++) { addTrack(tracks[i], album); } } // 检查列表是否为空 public boolean isEmpty() { return playlist.size() == 0; } // 选中下一首 public void selectNext() { if (!isEmpty()) { selected++; selected %= playlist.size(); } } // 上一首 public void selectPrev() { if (!isEmpty()) { selected--; if (selected < 0) selected = playlist.size() - 1; } } // 根据index选择歌曲 public void select(int index) { if (!isEmpty()) { if (index >= 0 && index < playlist.size()) selected = index; } } public void selectOrAdd(Track track, Album album) { // first search thru available tracks for (int i = 0; i < playlist.size(); i++) { if (playlist.get(i).getTrack().getId() == track.getId()) { select(i); return; } } // add track if necessary addTrack(track, album); select(playlist.size() - 1); } public int getSelectedIndex() { if (isEmpty()) { selected = -1; } if (selected == -1 && !isEmpty()) { selected = 0; } return selected; } public Playlist getSelectedTrack() { Playlist playlistEntry = null; if (!isEmpty()) { playlistEntry = playlist.get(getSelectedIndex()); } return playlistEntry; } public void addPlaylistEntry(Playlist playlistEntry) { playlist.add(playlistEntry); } // 数量 public int size() { return playlist == null ? 0 : playlist.size(); } public Playlist getTrack(int index) { return playlist.get(index); } // 删除 public void remove(int position) { if (playlist != null && position < playlist.size() && position >= 0) { if (selected >= position) { selected--; } playlist.remove(position); } } }