added playlist controls to mpdcontroller
This commit is contained in:
parent
2bbd040f4d
commit
535a66a216
|
@ -7,4 +7,6 @@ package de.ctdo.crashtest.mpd;
|
||||||
public interface IMPDController {
|
public interface IMPDController {
|
||||||
void playSong(final String artist, final String title);
|
void playSong(final String artist, final String title);
|
||||||
void setVolume(final int volume);
|
void setVolume(final int volume);
|
||||||
|
void clearPlaylist();
|
||||||
|
void addToPlayList(final String artist, final String title);
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,6 +20,7 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
public class MPDController implements IMPDController {
|
public class MPDController implements IMPDController {
|
||||||
private MPD mpd;
|
private MPD mpd;
|
||||||
|
private final Object lockObject = new Object();
|
||||||
|
|
||||||
public MPDController(String host) {
|
public MPDController(String host) {
|
||||||
try {
|
try {
|
||||||
|
@ -46,7 +47,6 @@ public class MPDController implements IMPDController {
|
||||||
addToPlayListIfNeeded(artist, title);
|
addToPlayListIfNeeded(artist, title);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
MPDPlaylist playlist = mpd.getMPDPlaylist();
|
MPDPlaylist playlist = mpd.getMPDPlaylist();
|
||||||
|
|
||||||
for(MPDSong song: playlist.getSongList()) {
|
for(MPDSong song: playlist.getSongList()) {
|
||||||
|
@ -71,13 +71,23 @@ public class MPDController implements IMPDController {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
synchronized (mpd) {
|
synchronized (lockObject) {
|
||||||
new Thread(r).start();
|
new Thread(r).start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addToPlayListIfNeeded(final String artist, final String title) {
|
/**
|
||||||
|
* Add a song to current mpd playlist
|
||||||
|
* @param artist Artist of the track to play
|
||||||
|
* @param title Title of the track to play
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void addToPlayList(final String artist, final String title) {
|
||||||
|
if(mpd != null) {
|
||||||
|
Runnable r = new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
MPDDatabase db = mpd.getMPDDatabase();
|
MPDDatabase db = mpd.getMPDDatabase();
|
||||||
MPDPlaylist playlist = mpd.getMPDPlaylist();
|
MPDPlaylist playlist = mpd.getMPDPlaylist();
|
||||||
|
|
||||||
|
@ -85,16 +95,11 @@ public class MPDController implements IMPDController {
|
||||||
List<MPDSong> tracks = new ArrayList<MPDSong>(db.findArtist(artist));
|
List<MPDSong> tracks = new ArrayList<MPDSong>(db.findArtist(artist));
|
||||||
|
|
||||||
for(MPDSong song: tracks) {
|
for(MPDSong song: tracks) {
|
||||||
if(song.getName() != null &&
|
if(song.getName() != null && song.getName().toLowerCase().contains(title.toLowerCase())) {
|
||||||
song.getName().toLowerCase().contains(title.toLowerCase())) {
|
|
||||||
|
|
||||||
if(!playlist.getSongList().contains(song)) {
|
|
||||||
playlist.addSong(song);
|
playlist.addSong(song);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (MPDConnectionException e) {
|
} catch (MPDConnectionException e) {
|
||||||
Logger.sLog("MPD error: " + e.getMessage());
|
Logger.sLog("MPD error: " + e.getMessage());
|
||||||
} catch (MPDDatabaseException e) {
|
} catch (MPDDatabaseException e) {
|
||||||
|
@ -103,6 +108,13 @@ public class MPDController implements IMPDController {
|
||||||
Logger.sLog("MPD error: " + e.getMessage());
|
Logger.sLog("MPD error: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
synchronized (lockObject) {
|
||||||
|
new Thread(r).start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the current mpd volume
|
* Sets the current mpd volume
|
||||||
|
@ -111,7 +123,6 @@ public class MPDController implements IMPDController {
|
||||||
@Override
|
@Override
|
||||||
public void setVolume(final int volume) {
|
public void setVolume(final int volume) {
|
||||||
if(mpd != null) {
|
if(mpd != null) {
|
||||||
|
|
||||||
Runnable r = new Runnable() {
|
Runnable r = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
@ -125,9 +136,60 @@ public class MPDController implements IMPDController {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
synchronized (mpd) {
|
synchronized (lockObject) {
|
||||||
new Thread(r).start();
|
new Thread(r).start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clears the current mpd playlist
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public void clearPlaylist() {
|
||||||
|
if(mpd != null) {
|
||||||
|
Runnable r = new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
MPDPlaylist playlist = mpd.getMPDPlaylist();
|
||||||
|
playlist.clearPlaylist();
|
||||||
|
} catch (MPDConnectionException e) {
|
||||||
|
Logger.sLog("MPD error: " + e.getMessage());
|
||||||
|
} catch (MPDPlaylistException e) {
|
||||||
|
Logger.sLog("MPD error: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
synchronized (lockObject) {
|
||||||
|
new Thread(r).start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addToPlayListIfNeeded(final String artist, final String title) {
|
||||||
|
MPDDatabase db = mpd.getMPDDatabase();
|
||||||
|
MPDPlaylist playlist = mpd.getMPDPlaylist();
|
||||||
|
|
||||||
|
try {
|
||||||
|
List<MPDSong> tracks = new ArrayList<MPDSong>(db.findArtist(artist));
|
||||||
|
|
||||||
|
for(MPDSong song: tracks) {
|
||||||
|
if(song.getName() != null && song.getName().toLowerCase().contains(title.toLowerCase())) {
|
||||||
|
if(!playlist.getSongList().contains(song)) {
|
||||||
|
playlist.addSong(song);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (MPDConnectionException e) {
|
||||||
|
Logger.sLog("MPD error: " + e.getMessage());
|
||||||
|
} catch (MPDDatabaseException e) {
|
||||||
|
Logger.sLog("MPD error: " + e.getMessage());
|
||||||
|
} catch (MPDPlaylistException e) {
|
||||||
|
Logger.sLog("MPD error: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue