diff --git a/src/main/java/com/annimon/voicyanski/MainController.java b/src/main/java/com/annimon/voicyanski/MainController.java index 32c77d7..6649379 100644 --- a/src/main/java/com/annimon/voicyanski/MainController.java +++ b/src/main/java/com/annimon/voicyanski/MainController.java @@ -54,7 +54,10 @@ public class MainController implements Initializable { stage.titleProperty().bind(Bindings .when(clipView.metadataProperty().isNull()) .then(Main.getResources().getString("voicyanski")) - .otherwise(clipView.metadataProperty().asString()) + .otherwise(Bindings.format("%s [%s]", + clipView.metadataProperty().asString(), + clipView.durationProperty() + )) ); } diff --git a/src/main/java/com/annimon/voicyanski/controls/AudioClipView.java b/src/main/java/com/annimon/voicyanski/controls/AudioClipView.java index 76aae7c..c2a1c75 100644 --- a/src/main/java/com/annimon/voicyanski/controls/AudioClipView.java +++ b/src/main/java/com/annimon/voicyanski/controls/AudioClipView.java @@ -5,6 +5,7 @@ import com.annimon.voicyanski.audio.Waveform; import com.annimon.voicyanski.tasks.Metadata; import java.io.IOException; import javafx.beans.binding.Bindings; +import javafx.beans.binding.DoubleBinding; import javafx.beans.binding.ObjectBinding; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; @@ -33,6 +34,7 @@ public final class AudioClipView extends VBox { private WaveformView waveform; private final ObjectProperty metadataProperty = new SimpleObjectProperty<>(); + private final ObjectProperty durationProperty = new SimpleObjectProperty<>(); private MediaPlayer mediaPlayer; private FontIcon iconPlay; @@ -61,6 +63,10 @@ public final class AudioClipView extends VBox { return metadataProperty; } + public ObjectProperty durationProperty() { + return durationProperty; + } + public Waveform getWaveform() { return waveform.getWaveform(); } @@ -166,6 +172,13 @@ public final class AudioClipView extends VBox { ); waveform.visibleProperty().bind(waveformProperty().isNotNull()); + + durationProperty.bind(Bindings.createStringBinding(() -> { + double hi = rangeClip.highValueProperty().get(); + double lo = rangeClip.lowValueProperty().get(); + final int delta = (int) (hi - lo); + return String.format("%02d:%02d", (delta % 3600) / 60, delta % 60); + }, rangeClip.highValueProperty(), rangeClip.lowValueProperty())); } public void initMarkButtons(Button markStart, Button markEnd) {