From 10ec337a515d0bd835f092eb4e98ffd63609f854 Mon Sep 17 00:00:00 2001 From: Rik Veenboer Date: Sun, 24 Apr 2011 18:37:40 +0000 Subject: [PATCH] Like en dislike acties voor iTunes toegevoegd. --- .../com/dt/iTunesController/ITPlaylist.java | 4 +++ .../iTunesController/ITTrackCollection.java | 8 +++++ java/src/com/dt/iTunesController/iTunes.java | 30 ++++++++++++++++++- java/src/pm/Macro.java | 4 +-- java/src/pm/Main.java | 4 +-- .../application/itunes/iTunesApplication.java | 9 +++++- .../jintellitype/JIntellitypeDevice.java | 6 ++++ java/src/pm/device/wiimote/WiimoteDevice.java | 16 ++++++++++ java/src/pm/value/Action.java | 2 +- 9 files changed, 76 insertions(+), 7 deletions(-) diff --git a/java/src/com/dt/iTunesController/ITPlaylist.java b/java/src/com/dt/iTunesController/ITPlaylist.java index 4f38f3b..6c937cf 100644 --- a/java/src/com/dt/iTunesController/ITPlaylist.java +++ b/java/src/com/dt/iTunesController/ITPlaylist.java @@ -173,4 +173,8 @@ public class ITPlaylist extends ITObject { public void toggleShuffle() { setShuffle(!getShuffle()); } + + public boolean containsTrack(ITTrack track) { + return getTracks().containsTrack(track); + } } diff --git a/java/src/com/dt/iTunesController/ITTrackCollection.java b/java/src/com/dt/iTunesController/ITTrackCollection.java index b87208f..3e1f3bf 100644 --- a/java/src/com/dt/iTunesController/ITTrackCollection.java +++ b/java/src/com/dt/iTunesController/ITTrackCollection.java @@ -88,4 +88,12 @@ public class ITTrackCollection { return new ITTrack(item); } + public boolean containsTrack(ITTrack track) { + String name = track.getName(); + try { + return ItemByName(name).getName().equals(name); + } catch (IllegalStateException e) { + return false; + } + } } diff --git a/java/src/com/dt/iTunesController/iTunes.java b/java/src/com/dt/iTunesController/iTunes.java index 06e5502..f9b6f53 100644 --- a/java/src/com/dt/iTunesController/iTunes.java +++ b/java/src/com/dt/iTunesController/iTunes.java @@ -499,8 +499,36 @@ public class iTunes { Dispatch window = iTunes.getProperty("BrowserWindow").toDispatch(); return new ITBrowserWindow(window); } - + public void cycleSongRepeat() { getCurrentPlaylist().cycleSongRepeat(); } + + public ITPlaylist getPlaylist(String name) { + ITPlaylistCollection playlistCollection = getLibrarySource().getPlaylists(); + ITPlaylist playlist = playlistCollection.ItemByName(name); + try { + playlist.getName(); + } catch (IllegalStateException e) { + playlist = createPlaylist(name); + } + return playlist; + } + + public ITUserPlaylist getUserPlaylist(String name) { + ITPlaylist playlist = getPlaylist(name); + ITUserPlaylist userPlaylist = new ITUserPlaylist(playlist.fetchDispatch()); + return userPlaylist; + } + + public void playlistAddTrack(String name, ITTrack track) { + ITUserPlaylist userPlaylist = getUserPlaylist(name); + if (!userPlaylist.containsTrack(track)) { + userPlaylist.addTrack(track); + } + } + + public void playlistAddCurrentTrack(String name) { + playlistAddTrack(name, getCurrentTrack()); + } } diff --git a/java/src/pm/Macro.java b/java/src/pm/Macro.java index e04fbed..a901a2b 100644 --- a/java/src/pm/Macro.java +++ b/java/src/pm/Macro.java @@ -42,7 +42,7 @@ public class Macro extends Sequence { } if (!holdList.isEmpty()) { throw new StateOrderException("One or more buttons are not released."); - } - eventArray = (State[]) eventList.toArray(new State[0]); + } + this.eventArray = (State[]) eventList.toArray(new State[0]); } } \ No newline at end of file diff --git a/java/src/pm/Main.java b/java/src/pm/Main.java index 20b443c..7b4f11f 100644 --- a/java/src/pm/Main.java +++ b/java/src/pm/Main.java @@ -66,8 +66,8 @@ public class Main extends EventListener { //add(new ExampleApplication()); //add(new WMPApplication()); //add(new GomPlayerApplication()); - add(new WinampApplication()); - //add(new iTunesApplication()); + //add(new WinampApplication()); + add(new iTunesApplication()); //add(new VLCApplication()); //add(new MPCApplication()); startApplications(); diff --git a/java/src/pm/application/itunes/iTunesApplication.java b/java/src/pm/application/itunes/iTunesApplication.java index ba35895..f2f5d58 100644 --- a/java/src/pm/application/itunes/iTunesApplication.java +++ b/java/src/pm/application/itunes/iTunesApplication.java @@ -5,7 +5,6 @@ import pm.exception.application.ApplicationExitException; import pm.value.Action; import com.dt.iTunesController.ITCOMDisabledReason; -import com.dt.iTunesController.ITPlaylistRepeatMode; import com.dt.iTunesController.ITTrack; import com.dt.iTunesController.iTunes; import com.dt.iTunesController.iTunesEventsInterface; @@ -13,6 +12,8 @@ import com.dt.iTunesController.iTunesEventsInterface; public class iTunesApplication extends Application implements iTunesEventsInterface { protected static final int POSTION_CHANGE_RATE = 1; protected static final int VOLUME_CHANGE_RATE = 5; + protected static final String PLAYLIST_LIKE = "Like"; + protected static final String PLAYLIST_DISLIKE = "Dislike"; protected iTunes iTunes; @@ -71,6 +72,12 @@ public class iTunesApplication extends Application implements iTunesEventsInterf iTunes.cycleSongRepeat(); //iTunes.resume(); break; + case LIKE: + iTunes.playlistAddCurrentTrack(PLAYLIST_LIKE); + break; + case DISLIKE: + iTunes.playlistAddCurrentTrack(PLAYLIST_DISLIKE); + break; } } diff --git a/java/src/pm/device/jintellitype/JIntellitypeDevice.java b/java/src/pm/device/jintellitype/JIntellitypeDevice.java index 0c67c84..6a6db37 100644 --- a/java/src/pm/device/jintellitype/JIntellitypeDevice.java +++ b/java/src/pm/device/jintellitype/JIntellitypeDevice.java @@ -45,6 +45,12 @@ public class JIntellitypeDevice extends Device implements HotkeyListener, Intell add( new Hotkey(Modifier.CTRL | Modifier.WIN, 'x'), new Task(Action.EXIT, Target.MAIN)); + add( + new Hotkey(Modifier.CTRL | Modifier.SHIFT | Modifier.WIN, 'n'), + new Task(Action.NEXT, Target.APPLICATION)); + add( + new Hotkey(Modifier.CTRL | Modifier.SHIFT | Modifier.WIN, 'p'), + new Task(Action.PREVIOUS, Target.APPLICATION)); /*add( new Hotkey(Modifier.CTRL | Modifier.WIN, 't'), new Task(Action.TEST, Target.MAIN)); diff --git a/java/src/pm/device/wiimote/WiimoteDevice.java b/java/src/pm/device/wiimote/WiimoteDevice.java index 9ad648f..cdd419f 100644 --- a/java/src/pm/device/wiimote/WiimoteDevice.java +++ b/java/src/pm/device/wiimote/WiimoteDevice.java @@ -6,6 +6,7 @@ import org.wiigee.util.Log; import pm.Button; import pm.Device; +import pm.Macro; import pm.device.wiimote.gesture.GestureDevice; import pm.event.Task; import pm.event.task.Continuous; @@ -13,6 +14,7 @@ import pm.event.task.Dynamic; import pm.exception.button.UnknownButtonException; import pm.exception.device.DeviceExitException; import pm.exception.device.DeviceInitialiseException; +import pm.exception.macro.StateOrderException; import pm.macro.state.Hold; import pm.macro.state.Press; import pm.macro.state.Release; @@ -96,6 +98,20 @@ public class WiimoteDevice extends Device implements GestureListener { add( new Press(WiimoteButton.HOME), new Task(Action.NEXT, Target.MAIN)); + try { + add( + new Macro( + new Hold(WiimoteButton.TWO), + new Press(WiimoteButton.PLUS), + new Release(WiimoteButton.TWO)), + new Task(Action.LIKE, Target.APPLICATION)); + add( + new Macro( + new Hold(WiimoteButton.TWO), + new Press(WiimoteButton.MINUS), + new Release(WiimoteButton.TWO)), + new Task(Action.DISLIKE, Target.APPLICATION)); + } catch (StateOrderException e) {} } public void exit() throws DeviceExitException { diff --git a/java/src/pm/value/Action.java b/java/src/pm/value/Action.java index 1bd2fc1..b6f9338 100644 --- a/java/src/pm/value/Action.java +++ b/java/src/pm/value/Action.java @@ -16,5 +16,5 @@ public enum Action { VOLUME_DOWN, VOLUME_UP, FULLSCREEN, - TRAIN, STOP, SAVE, RECOGNIZE, LOAD, SHUFFLE, FADEOUT, QUIT, VISUALISER; + TRAIN, STOP, SAVE, RECOGNIZE, LOAD, SHUFFLE, FADEOUT, QUIT, VISUALISER, LIKE, DISLIKE; }