65 lines
1.5 KiB
Java
Executable File
65 lines
1.5 KiB
Java
Executable File
package zero1hd.rhythmbullet.audio;
|
|
|
|
import java.util.concurrent.ExecutorService;
|
|
import java.util.concurrent.Executors;
|
|
|
|
import com.badlogic.gdx.Gdx;
|
|
import com.badlogic.gdx.Preferences;
|
|
import com.badlogic.gdx.utils.Array;
|
|
import com.badlogic.gdx.utils.Disposable;
|
|
|
|
public class MusicInfoController implements Disposable {
|
|
private MusicList musicList;
|
|
private ExecutorService exec;
|
|
private Array<MusicInfo> songInfoArray;
|
|
private Preferences musicAnnotation;
|
|
private boolean doneLoading;
|
|
|
|
public MusicInfoController(MusicList musicList) {
|
|
this.musicList = musicList;
|
|
songInfoArray = new Array<>();
|
|
exec = Executors.newSingleThreadExecutor();
|
|
musicAnnotation = Gdx.app.getPreferences("MusicAnnotation");
|
|
}
|
|
|
|
public MusicList getMusicList() {
|
|
return musicList;
|
|
}
|
|
|
|
/**
|
|
* Non-blocking, loads on separate thread.
|
|
*/
|
|
public void loadSongInfo() {
|
|
doneLoading = false;
|
|
for (int i = 0; i < songInfoArray.size; i++) {
|
|
songInfoArray.get(i).dispose();
|
|
}
|
|
songInfoArray.clear();
|
|
exec.submit(() -> {
|
|
for (int i = 0; i < musicList.getTotal(); i++) {
|
|
MusicInfo musicInfo = new MusicInfo(musicList.getMusicList().get(i), musicAnnotation);
|
|
musicInfo.loadInfo();
|
|
songInfoArray.add(musicInfo);
|
|
}
|
|
doneLoading = true;
|
|
});
|
|
}
|
|
|
|
@Override
|
|
public void dispose() {
|
|
exec.shutdown();
|
|
}
|
|
|
|
/**
|
|
* Verify if loading song info is done.
|
|
* @return
|
|
*/
|
|
public synchronized boolean isDoneLoading() {
|
|
return doneLoading;
|
|
}
|
|
|
|
public Array<MusicInfo> getSongInfoArray() {
|
|
return songInfoArray;
|
|
}
|
|
}
|