Cancel an active recording if the chat is switched
This commit is contained in:
parent
a90f58afe0
commit
e4e5e6376c
@ -57,6 +57,12 @@ public final class AudioRecorder {
|
||||
*/
|
||||
public boolean isSupported() { return AudioSystem.isLineSupported(info); }
|
||||
|
||||
/**
|
||||
* @return {@code true} if the recorder is active
|
||||
* @since Envoy Client v0.1-beta
|
||||
*/
|
||||
public boolean isRecording() { return line != null && line.isActive(); }
|
||||
|
||||
/**
|
||||
* Starts the audio recording.
|
||||
*
|
||||
@ -100,4 +106,14 @@ public final class AudioRecorder {
|
||||
throw new EnvoyException("Cannot save voice recording", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Cancels the active recording.
|
||||
*
|
||||
* @since Envoy Client v0.1-beta
|
||||
*/
|
||||
public void cancel() {
|
||||
line.stop();
|
||||
line.close();
|
||||
}
|
||||
}
|
||||
|
@ -17,7 +17,9 @@ import javafx.scene.input.KeyCode;
|
||||
import javafx.scene.input.KeyEvent;
|
||||
import javafx.scene.paint.Color;
|
||||
|
||||
import envoy.client.data.*;
|
||||
import envoy.client.data.Chat;
|
||||
import envoy.client.data.LocalDB;
|
||||
import envoy.client.data.Settings;
|
||||
import envoy.client.data.audio.AudioRecorder;
|
||||
import envoy.client.event.MessageCreationEvent;
|
||||
import envoy.client.net.Client;
|
||||
@ -179,7 +181,6 @@ public final class ChatScene {
|
||||
if (!client.isOnline()) updateInfoLabel("You are offline", "infoLabel-info");
|
||||
|
||||
recorder = new AudioRecorder();
|
||||
voiceButton.setDisable(!recorder.isSupported());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -211,7 +212,11 @@ public final class ChatScene {
|
||||
}
|
||||
|
||||
// Discard the pending attachment
|
||||
// TODO: stop running recording
|
||||
if (recorder.isRecording()) {
|
||||
recorder.cancel();
|
||||
recording = false;
|
||||
voiceButton.setText("Record Voice Message");
|
||||
}
|
||||
pendingAttachment = null;
|
||||
|
||||
remainingChars.setVisible(true);
|
||||
@ -219,6 +224,7 @@ public final class ChatScene {
|
||||
.setText(String.format("remaining chars: %d/%d", MAX_MESSAGE_LENGTH - messageTextArea.getText().length(), MAX_MESSAGE_LENGTH));
|
||||
}
|
||||
messageTextArea.setDisable(currentChat == null || postingPermanentlyDisabled);
|
||||
voiceButton.setDisable(!recorder.isSupported());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -290,8 +296,7 @@ public final class ChatScene {
|
||||
|
||||
private void checkPostConditions(boolean sendKeyPressed) {
|
||||
if (!postingPermanentlyDisabled) {
|
||||
if (!postButton.isDisabled() && sendKeyPressed)
|
||||
postMessage();
|
||||
if (!postButton.isDisabled() && sendKeyPressed) postMessage();
|
||||
postButton.setDisable((messageTextArea.getText().isBlank() && pendingAttachment == null) || currentChat == null);
|
||||
} else {
|
||||
final var noMoreMessaging = "Go online to send messages";
|
||||
|
@ -111,8 +111,8 @@
|
||||
<Insets right="10.0" top="5.0" />
|
||||
</GridPane.margin>
|
||||
<buttons>
|
||||
<Button fx:id="voiceButton" onAction="#voiceButtonClicked"
|
||||
text="_Record Voice Message" />
|
||||
<Button fx:id="voiceButton" disable="true"
|
||||
onAction="#voiceButtonClicked" text="_Record Voice Message" />
|
||||
<Button fx:id="postButton" defaultButton="true"
|
||||
disable="true" mnemonicParsing="true" onAction="#postMessage"
|
||||
prefHeight="10.0" prefWidth="75.0" text="_Post">
|
||||
|
Reference in New Issue
Block a user