diff --git a/PlayWall/assets/de/tobias/playpad/assets/view/audio/tinySoundSettings.fxml b/PlayWall/assets/de/tobias/playpad/assets/view/audio/tinySoundSettings.fxml index dec8adcf9d311f4a8d8c9ab7b27f9fe00a685994..3bc628651c3be6d86bd71a62dc915fa7b1d6f0fd 100644 --- a/PlayWall/assets/de/tobias/playpad/assets/view/audio/tinySoundSettings.fxml +++ b/PlayWall/assets/de/tobias/playpad/assets/view/audio/tinySoundSettings.fxml @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> -<?import javafx.scene.control.*?> <?import java.lang.*?> +<?import javafx.scene.control.*?> <?import javafx.scene.layout.*?> - <HBox spacing="14.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> <children> - <Label alignment="CENTER_RIGHT" layoutX="14.0" layoutY="19.0" maxHeight="1.7976931348623157E308" prefWidth="150.0" text="%tinysound.label.soundcard" /> <ComboBox fx:id="soundCardComboBox" layoutX="118.0" layoutY="14.0" prefHeight="26.0" prefWidth="241.0" /> <Button fx:id="testButton" layoutX="372.0" layoutY="14.0" mnemonicParsing="false" onAction="#testButtonHandler" /> </children> diff --git a/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandlerConnect.java b/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandlerConnect.java index 55faa68979db2e06bc6785f179baf2e25b2cdc4d..24e5ee44d90437d47c5a133b015ace6cb4f23757 100644 --- a/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandlerConnect.java +++ b/PlayWall/src/de/tobias/playpad/audio/ClipAudioHandlerConnect.java @@ -34,4 +34,9 @@ public class ClipAudioHandlerConnect extends AudioHandlerConnect implements Auto } return false; } + + @Override + public AudioHandlerViewController getAudioFeatureSettings(AudioCapability audioCapablility) { + return null; + } } diff --git a/PlayWall/src/de/tobias/playpad/audio/JavaFXHandlerConnect.java b/PlayWall/src/de/tobias/playpad/audio/JavaFXHandlerConnect.java index 85cbfc728b19d6443165680d0be11caa0c08f28f..fb63c182d18ddb891dc3b55d9892f46954c49aa0 100644 --- a/PlayWall/src/de/tobias/playpad/audio/JavaFXHandlerConnect.java +++ b/PlayWall/src/de/tobias/playpad/audio/JavaFXHandlerConnect.java @@ -28,4 +28,9 @@ public class JavaFXHandlerConnect extends AudioHandlerConnect { } return false; } + + @Override + public AudioHandlerViewController getAudioFeatureSettings(AudioCapability audioCapablility) { + return null; + } } diff --git a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java index af2517a0048ecf80ced4686990eb09bd8edf477e..8e8e8d163388f59d0c83e044316b52fddb7eb3d6 100644 --- a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java +++ b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandler.java @@ -38,7 +38,7 @@ import javazoom.jl.decoder.JavaLayerException; import kuusisto.tinysound.Music; import kuusisto.tinysound.TinySound; -public class TinyAudioHandler extends AudioHandler { +public class TinyAudioHandler extends AudioHandler implements Soundcardable { public static final String SOUND_CARD = "SoundCard"; @@ -212,7 +212,8 @@ public class TinyAudioHandler extends AudioHandler { @Override public void loadMedia(Path[] paths) { - initTinySound(); + String audioCardName = (String) Profile.currentProfile().getProfileSettings().getAudioUserInfo().get(SOUND_CARD); + initTinySound(audioCardName); unloadMedia(); Platform.runLater(() -> @@ -296,9 +297,7 @@ public class TinyAudioHandler extends AudioHandler { private static String audioCardName; - private void initTinySound() { - String audioCardName = (String) Profile.currentProfile().getProfileSettings().getAudioUserInfo().get(SOUND_CARD); - + private void initTinySound(String audioCardName) { if (TinyAudioHandler.audioCardName != null) { if (!TinyAudioHandler.audioCardName.equals(audioCardName)) { TinySound.shutdown(); @@ -332,4 +331,9 @@ public class TinyAudioHandler extends AudioHandler { executorService.shutdown(); positionThread.interrupt(); } + + @Override + public void setOutputDevice(String name) { + initTinySound(name); + } } diff --git a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandlerConnect.java b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandlerConnect.java index 2a30f26096cc1903350e41949affaf715100c79c..af7bc01e9e2ffdd0281f2649c737d44fc323033f 100644 --- a/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandlerConnect.java +++ b/PlayWall/src/de/tobias/playpad/audio/TinyAudioHandlerConnect.java @@ -34,4 +34,12 @@ public class TinyAudioHandlerConnect extends AudioHandlerConnect implements Auto } return false; } + + @Override + public AudioHandlerViewController getAudioFeatureSettings(AudioCapability audioCapablility) { + if (audioCapablility == AudioCapability.SOUNDCARD) { + return new TinySoundSettingsViewController(); + } + return null; + } } diff --git a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java index b70770965d34c42106290a5b5a3c8196fc6e0b7e..d577a3a3313f4ecf2c82e5cddd2fb56fb7543e9b 100644 --- a/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java +++ b/PlayWall/src/de/tobias/playpad/viewcontroller/option/profile/AudioTabViewController.java @@ -1,5 +1,8 @@ package de.tobias.playpad.viewcontroller.option.profile; +import java.util.ArrayList; +import java.util.List; + import de.tobias.playpad.PlayPadMain; import de.tobias.playpad.PlayPadPlugin; import de.tobias.playpad.Strings; @@ -32,7 +35,7 @@ public class AudioTabViewController extends ProfileSettingsTabViewController imp @FXML private ComboBox<String> audioTypeComboBox; @FXML private VBox options; - private AudioHandlerViewController audioViewController; + private List<AudioHandlerViewController> audioViewController; private boolean changeAudioSettings; public AudioTabViewController(boolean playerActive) { @@ -46,6 +49,8 @@ public class AudioTabViewController extends ProfileSettingsTabViewController imp @Override public void init() { + audioViewController = new ArrayList<>(); + ProfileSettings profileSettings = Profile.currentProfile().getProfileSettings(); // Audio Classes @@ -53,8 +58,7 @@ public class AudioTabViewController extends ProfileSettingsTabViewController imp audioTypeComboBox.getItems().addAll(audioHandlerRegistry.getTypes()); // Listener for selection - audioTypeComboBox.getSelectionModel().selectedItemProperty().addListener((a, b, c) -> - { + audioTypeComboBox.getSelectionModel().selectedItemProperty().addListener((a, b, c) -> { if (b != null && c != null) changeAudioSettings = true; showAudioSettings(c); @@ -64,7 +68,8 @@ public class AudioTabViewController extends ProfileSettingsTabViewController imp private void showAudioSettings(String classID) { if (audioViewController != null) { - if (audioViewController.isChanged()) { + // Es gibt ein Settings View Controller der isChanged true ist + if (audioViewController.stream().filter(c -> c.isChanged()).count() > 0) { changeAudioSettings = true; } } @@ -84,20 +89,32 @@ public class AudioTabViewController extends ProfileSettingsTabViewController imp } private Parent createCapabilityView(AudioHandlerConnect audio, AudioCapability audioCapability) { - HBox hbox = new HBox(14); + HBox masterView = new HBox(14); + VBox detailView = new VBox(14); + Label nameLabel = new Label(Localization.getString(audioCapability.getName())); nameLabel.setAlignment(Pos.CENTER_RIGHT); nameLabel.setMinWidth(150); + AudioHandlerViewController settingsViewController = null; + Label availableLabel; if (audio.isFeatureAvaiable(audioCapability)) { availableLabel = new FontIcon(FontAwesomeType.CHECK); + + settingsViewController = audio.getAudioFeatureSettings(audioCapability); } else { availableLabel = new FontIcon(FontAwesomeType.TIMES); } - hbox.getChildren().addAll(nameLabel, availableLabel); - return hbox; + detailView.getChildren().add(availableLabel); + if (settingsViewController != null) { + detailView.getChildren().add(settingsViewController.getParent()); + audioViewController.add(settingsViewController); + } + + masterView.getChildren().addAll(nameLabel, detailView); + return masterView; } @Override @@ -118,10 +135,8 @@ public class AudioTabViewController extends ProfileSettingsTabViewController imp @Override public boolean needReload() { - if (audioViewController != null) { - if (audioViewController.isChanged()) { - changeAudioSettings = true; - } + if (audioViewController.stream().filter(c -> c.isChanged()).count() > 0) { + changeAudioSettings = true; } return changeAudioSettings; } @@ -129,6 +144,7 @@ public class AudioTabViewController extends ProfileSettingsTabViewController imp @Override public Task<Void> getTask(ProfileSettings settings, Project project, IMainViewController controller) { return new Task<Void>() { + @Override protected Void call() throws Exception { updateTitle(name()); diff --git a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandlerConnect.java b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandlerConnect.java index 15ee28d8a532a3cea64778328c4f595f316c82b3..122976a4f70e57b0802c04646ec55a9e6c9a3eb3 100644 --- a/PlayWallCore/src/de/tobias/playpad/audio/AudioHandlerConnect.java +++ b/PlayWallCore/src/de/tobias/playpad/audio/AudioHandlerConnect.java @@ -4,7 +4,8 @@ import de.tobias.playpad.pad.conntent.PadContent; import de.tobias.playpad.viewcontroller.AudioHandlerViewController; /** - * Audio Handler Interface zur Verwaltung einer AudioHandler Implementierung. Für Aktionen beim schließen des Programmes, muss der AudioHandler + * Audio Handler Interface zur Verwaltung einer AudioHandler Implementierung. + * Für Aktionen beim schließen des Programmes, muss der AudioHandler * AutoClosable implementieren. * * @author tobias @@ -44,4 +45,14 @@ public abstract class AudioHandlerConnect { * @return <code>true</code> Verfügbar */ public abstract boolean isFeatureAvaiable(AudioCapability audioCapability); + + /** + * Gibt wenn vorhanden einen ViewController für die entsprechenden + * Einstellungen zurück. + * + * @param audioCapablility + * Audio Feature + * @return ViewController + */ + public abstract AudioHandlerViewController getAudioFeatureSettings(AudioCapability audioCapablility); } diff --git a/PlayWallNativeWin/MANIFEST.MF b/PlayWallNativeWin/MANIFEST.MF new file mode 100644 index 0000000000000000000000000000000000000000..eeb2a06cb316a736ee9a6705b198d6a0156eed29 --- /dev/null +++ b/PlayWallNativeWin/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 +Class-Path: . nawin/jni4net.j-0.8.8.0.jar nawin/NativeAudio.j4n.jar diff --git a/PlayWallNativeWin/j4n/NativeAudio.dll b/PlayWallNativeWin/j4n/NativeAudio.dll index fff208682998191bb5fd58c8100cada3dd37e35d..66fd392f1b50cfdbf9d1e538c930a588e829ed79 100644 Binary files a/PlayWallNativeWin/j4n/NativeAudio.dll and b/PlayWallNativeWin/j4n/NativeAudio.dll differ diff --git a/PlayWallNativeWin/j4n/NativeAudio.j4n.dll b/PlayWallNativeWin/j4n/NativeAudio.j4n.dll index 7b2db090abeaaf57e7cd652f28caf10bfbfa1d56..027e55fe7f081795f015ee94eebc9343253ce83f 100644 Binary files a/PlayWallNativeWin/j4n/NativeAudio.j4n.dll and b/PlayWallNativeWin/j4n/NativeAudio.j4n.dll differ diff --git a/PlayWallNativeWin/j4n/NativeAudio.j4n.jar b/PlayWallNativeWin/j4n/NativeAudio.j4n.jar index c88e638822beb9a0d9f267ea0f963a89b43a4175..7c16f4dcfe164f54f971cea054c321b18743aafa 100644 Binary files a/PlayWallNativeWin/j4n/NativeAudio.j4n.jar and b/PlayWallNativeWin/j4n/NativeAudio.j4n.jar differ diff --git a/PlayWallNativeWin/j4n/build.cmd b/PlayWallNativeWin/j4n/build.cmd index 5f40ca806ce1871dbf5428e570ddfc5cce4cc3a7..93c3e641600b8a6f4a57703ad63cb7c157bcdc3d 100644 --- a/PlayWallNativeWin/j4n/build.cmd +++ b/PlayWallNativeWin/j4n/build.cmd @@ -14,7 +14,7 @@ IF %ERRORLEVEL% NEQ 0 goto end echo NativeAudio.j4n.dll -csc /nologo /warn:0 /t:library /out:NativeAudio.j4n.dll /recurse:clr\*.cs /reference:"D:\Programmieren\Git-Java\PlayWall\PlayWallNativeWin\j4n\NativeAudio.dll" /reference:"D:\Programmieren\Git-Java\PlayWall\PlayWallNativeWin\j4n\jni4net.n-0.8.8.0.dll" +csc /nologo /warn:0 /t:library /out:NativeAudio.j4n.dll /recurse:clr\*.cs /reference:"D:\Programmieren\Git-Java\PlayWall\PlayWallNativeWin\j4n\NativeAudio.dll" /reference:"D:\Programmieren\Git-Java\PlayWall\PlayWallNativeWin\j4n\NAudio.dll" /reference:"D:\Programmieren\Git-Java\PlayWall\PlayWallNativeWin\j4n\jni4net.n-0.8.8.0.dll" IF %ERRORLEVEL% NEQ 0 goto end diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinPlugin.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPlugin.java similarity index 71% rename from PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinPlugin.java rename to PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPlugin.java index 21d877b6fa47a505c92f23c78f155144da560257..15c41b1901399365f4dd11536445f9b73fd73355 100644 --- a/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinPlugin.java +++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPlugin.java @@ -1,4 +1,4 @@ -package de.tobias.playpad.nawin.audio; +package de.tobias.playpad.nawin; import de.tobias.playpad.plugin.AdvancedPlugin; diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPluginImpl.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPluginImpl.java index b20dd30b48f06fd0d05c2e580e41de3b859f2d94..afd3fdf74e0faf6e1cfecfd7c212b30f3363c107 100644 --- a/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPluginImpl.java +++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinPluginImpl.java @@ -7,7 +7,6 @@ import java.nio.file.Path; import de.tobias.playpad.PlayPadPlugin; import de.tobias.playpad.audio.AudioRegistry; import de.tobias.playpad.nawin.audio.NativeAudioWinHandlerConnect; -import de.tobias.playpad.nawin.audio.NativeAudioWinPlugin; import de.tobias.playpad.plugin.Module; import de.tobias.updater.client.Updatable; import de.tobias.utils.application.App; diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.dll b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.dll index e85f118b0af0c8c9a03777d25938e76a635adcb1..66fd392f1b50cfdbf9d1e538c930a588e829ed79 100644 Binary files a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.dll and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.dll differ diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.dll b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.dll index 7b2db090abeaaf57e7cd652f28caf10bfbfa1d56..027e55fe7f081795f015ee94eebc9343253ce83f 100644 Binary files a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.dll and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.dll differ diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.jar b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.jar index 8f888bc0ebad18acd661a0d0ea694791d69778a4..7c16f4dcfe164f54f971cea054c321b18743aafa 100644 Binary files a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.jar and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/NativeAudio.j4n.jar differ diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/Test-Sound.wav b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/Test-Sound.wav new file mode 100644 index 0000000000000000000000000000000000000000..1a627d7c84165c6131c47134b1ca1f4fcb0bf3be Binary files /dev/null and b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/Test-Sound.wav differ diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/nawinSettings.fxml b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/nawinSettings.fxml new file mode 100644 index 0000000000000000000000000000000000000000..3bc628651c3be6d86bd71a62dc915fa7b1d6f0fd --- /dev/null +++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/assets/nawinSettings.fxml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<?import java.lang.*?> +<?import javafx.scene.control.*?> +<?import javafx.scene.layout.*?> + +<HBox spacing="14.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"> + <children> + <ComboBox fx:id="soundCardComboBox" layoutX="118.0" layoutY="14.0" prefHeight="26.0" prefWidth="241.0" /> + <Button fx:id="testButton" layoutX="372.0" layoutY="14.0" mnemonicParsing="false" onAction="#testButtonHandler" /> + </children> +</HBox> diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioSettingsViewController.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioSettingsViewController.java new file mode 100644 index 0000000000000000000000000000000000000000..21665a0bf7d79d134bded2f8755dfb411c68a9cf --- /dev/null +++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioSettingsViewController.java @@ -0,0 +1,112 @@ +package de.tobias.playpad.nawin.audio; + +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Path; + +import de.tobias.playpad.settings.Profile; +import de.tobias.playpad.viewcontroller.AudioHandlerViewController; +import de.tobias.utils.application.ApplicationUtils; +import de.tobias.utils.application.container.PathType; +import de.tobias.utils.ui.icon.FontAwesomeType; +import de.tobias.utils.ui.icon.FontIcon; +import de.tobias.utils.util.IOUtils; +import de.tobias.utils.util.Worker; +import javafx.application.Platform; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.ComboBox; +import nativeaudio.NativeAudio; + +public class NativeAudioSettingsViewController extends AudioHandlerViewController { + + @FXML private ComboBox<String> soundCardComboBox; + @FXML private Button testButton; + + private boolean isChanged; + + private NativeAudio audioPlayer; + + public NativeAudioSettingsViewController() { + super("nawinSettings", "de/tobias/playpad/nawin/assets/", null); + + testButton.setGraphic(new FontIcon(FontAwesomeType.PLAY)); + + soundCardComboBox.getItems().setAll(NativeAudio.getDevices()); + + String name = (String) Profile.currentProfile().getProfileSettings().getAudioUserInfo() + .get(NativeAudioWinHandler.SOUND_CARD); + for (String info : NativeAudio.getDevices()) { + if (info.equals(name)) { + soundCardComboBox.getSelectionModel().select(info); + break; + } + } + + // ersten Auswählen wenn keiner ausgewählt ist, damit keine Probleme + // auftreten da keiene Soundkarte ausgewäht ist + if (soundCardComboBox.getSelectionModel().getSelectedItem() == null) { + soundCardComboBox.getSelectionModel().selectFirst(); + } + + soundCardComboBox.getSelectionModel().selectedItemProperty().addListener((a, b, c) -> { + if (audioPlayer != null) { + audioPlayer.stop(); + audioPlayer = null; + testButton.setGraphic(new FontIcon(FontAwesomeType.PLAY)); + } + + isChanged = true; + Profile.currentProfile().getProfileSettings().getAudioUserInfo().put(NativeAudioWinHandler.SOUND_CARD, c); + }); + } + + @FXML + private void testButtonHandler(ActionEvent event) { + Path file = ApplicationUtils.getApplication().getPath(PathType.RESOURCES, "Test-Sound.wav"); + if (Files.notExists(file)) { + InputStream iStr = getClass().getClassLoader() + .getResourceAsStream("de/tobias/playpad/nawin/assets/Test-Sound.wav"); + try { + Files.createDirectories(file.getParent()); + IOUtils.copy(iStr, file); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + if (audioPlayer == null) { + audioPlayer = new NativeAudio(); + audioPlayer.load(file.toString()); + audioPlayer.setDevice(soundCardComboBox.getValue()); + } + if (audioPlayer.isPlaying()) { + audioPlayer.stop(); + audioPlayer = null; + testButton.setGraphic(new FontIcon(FontAwesomeType.PLAY)); + } else { + audioPlayer.play(); + Worker.runLater(() -> { + while (audioPlayer != null && audioPlayer.isPlaying()) { + try { + Thread.sleep(50); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + if (audioPlayer != null) + audioPlayer.stop(); + Platform.runLater(() -> testButton.setGraphic(new FontIcon(FontAwesomeType.PLAY))); + }); + testButton.setGraphic(new FontIcon(FontAwesomeType.STOP)); + } + } + + @Override + public boolean isChanged() { + return isChanged; + } +} diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinHandler.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandler.java similarity index 79% rename from PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinHandler.java rename to PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandler.java index 0851ed0333c6f317dc2908ee04d865b4d717ab1c..48c0508bcda7f0318cb90b64976c4725881eb146 100644 --- a/PlayWallNativeWin/src/de/tobias/playpad/nawin/NativeAudioWinHandler.java +++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandler.java @@ -1,4 +1,4 @@ -package de.tobias.playpad.nawin; +package de.tobias.playpad.nawin.audio; import java.nio.file.Path; import java.util.ArrayList; @@ -7,9 +7,11 @@ import java.util.Iterator; import java.util.List; import de.tobias.playpad.audio.AudioHandler; +import de.tobias.playpad.audio.Soundcardable; import de.tobias.playpad.pad.Pad; import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.pad.conntent.PadContent; +import de.tobias.playpad.settings.Profile; import javafx.application.Platform; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty; @@ -17,7 +19,9 @@ import javafx.beans.property.SimpleObjectProperty; import javafx.util.Duration; import nativeaudio.NativeAudio; -public class NativeAudioWinHandler extends AudioHandler { +public class NativeAudioWinHandler extends AudioHandler implements Soundcardable { + + public static final String SOUND_CARD = "SoundCard"; private NativeAudio audioHandler; private ObjectProperty<Duration> durationProperty; @@ -79,6 +83,7 @@ public class NativeAudioWinHandler extends AudioHandler { @Override public void play() { audioHandler.setLoop(getContent().getPad().getPadSettings().isLoop()); + audioHandler.play(); boolean start = false; @@ -141,12 +146,25 @@ public class NativeAudioWinHandler extends AudioHandler { @Override public void loadMedia(Path[] paths) { + Platform.runLater(() -> { + if (getContent().getPad().isPadVisible()) { + getContent().getPad().getController().getView().showBusyView(true); + } + }); if (audioHandler == null) audioHandler = new NativeAudio(); audioHandler.load(paths[0].toString()); + + String name = (String) Profile.currentProfile().getProfileSettings().getAudioUserInfo() + .get(NativeAudioWinHandler.SOUND_CARD); + audioHandler.setDevice(name); + Platform.runLater(() -> { durationProperty.set(Duration.millis(audioHandler.getDuration())); getContent().getPad().setStatus(PadStatus.READY); + if (getContent().getPad().isPadVisible()) { + getContent().getPad().getController().getView().showBusyView(false); + } }); } @@ -156,4 +174,9 @@ public class NativeAudioWinHandler extends AudioHandler { audioHandler = null; } + @Override + public void setOutputDevice(String name) { + audioHandler.setDevice(name); + } + } diff --git a/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandlerConnect.java b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandlerConnect.java index c4f7f393ed6df87c33df3f4d2ef516734359e0c6..57239777045fb95a608f912e6719ea4fde6eb935 100644 --- a/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandlerConnect.java +++ b/PlayWallNativeWin/src/de/tobias/playpad/nawin/audio/NativeAudioWinHandlerConnect.java @@ -3,7 +3,6 @@ package de.tobias.playpad.nawin.audio; import de.tobias.playpad.audio.AudioCapability; import de.tobias.playpad.audio.AudioHandler; import de.tobias.playpad.audio.AudioHandlerConnect; -import de.tobias.playpad.nawin.NativeAudioWinHandler; import de.tobias.playpad.pad.conntent.PadContent; import de.tobias.playpad.viewcontroller.AudioHandlerViewController; @@ -33,4 +32,11 @@ public class NativeAudioWinHandlerConnect extends AudioHandlerConnect { return false; } + @Override + public AudioHandlerViewController getAudioFeatureSettings(AudioCapability audioCapablility) { + if (audioCapablility == AudioCapability.SOUNDCARD) { + return new NativeAudioSettingsViewController(); + } + return null; + } }