Added maximum size for displaying sent images
additionally: - made selecting of bmp or gif images possible - defined a DEFAULT_ICON_SIZE in which most icons are loaded - displayed attachment button with attachment icon
This commit is contained in:
parent
e67665f0bd
commit
ee4f6e01f4
@ -93,12 +93,13 @@ public final class ChatScene implements Restorable {
|
|||||||
private AudioRecorder recorder;
|
private AudioRecorder recorder;
|
||||||
private boolean recording;
|
private boolean recording;
|
||||||
private Attachment pendingAttachment;
|
private Attachment pendingAttachment;
|
||||||
private boolean postingPermanentlyDisabled = false;
|
private boolean postingPermanentlyDisabled;
|
||||||
|
|
||||||
private static final Settings settings = Settings.getInstance();
|
private static final Settings settings = Settings.getInstance();
|
||||||
private static final EventBus eventBus = EventBus.getInstance();
|
private static final EventBus eventBus = EventBus.getInstance();
|
||||||
private static final Logger logger = EnvoyLog.getLogger(ChatScene.class);
|
private static final Logger logger = EnvoyLog.getLogger(ChatScene.class);
|
||||||
private static final int MAX_MESSAGE_LENGTH = 255;
|
private static final int MAX_MESSAGE_LENGTH = 255;
|
||||||
|
private static final int DEFAULT_ICON_SIZE = 16;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the appearance of certain visual components.
|
* Initializes the appearance of certain visual components.
|
||||||
@ -112,8 +113,10 @@ public final class ChatScene implements Restorable {
|
|||||||
messageList.setCellFactory(MessageListCellFactory::new);
|
messageList.setCellFactory(MessageListCellFactory::new);
|
||||||
userList.setCellFactory(ContactListCellFactory::new);
|
userList.setCellFactory(ContactListCellFactory::new);
|
||||||
|
|
||||||
settingsButton.setGraphic(new ImageView(IconUtil.loadIconThemeSensitive("settings", 16)));
|
settingsButton.setGraphic(new ImageView(IconUtil.loadIconThemeSensitive("settings", DEFAULT_ICON_SIZE)));
|
||||||
voiceButton.setGraphic(new ImageView(IconUtil.loadIconThemeSensitive("microphone", 20)));
|
voiceButton.setGraphic(new ImageView(IconUtil.loadIconThemeSensitive("microphone", DEFAULT_ICON_SIZE)));
|
||||||
|
attachmentButton.setGraphic(new ImageView(IconUtil.loadIconThemeSensitive("attachment", DEFAULT_ICON_SIZE)));
|
||||||
|
attachmentView.setImage(IconUtil.loadIconThemeSensitive("attachment_present", 20));
|
||||||
|
|
||||||
// Listen to received messages
|
// Listen to received messages
|
||||||
eventBus.register(MessageCreationEvent.class, e -> {
|
eventBus.register(MessageCreationEvent.class, e -> {
|
||||||
@ -273,17 +276,16 @@ public final class ChatScene implements Restorable {
|
|||||||
recording = true;
|
recording = true;
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
voiceButton.setText("Recording");
|
voiceButton.setText("Recording");
|
||||||
voiceButton.setGraphic(new ImageView(IconUtil.loadIcon("microphone_recording", 24)));
|
voiceButton.setGraphic(new ImageView(IconUtil.loadIcon("microphone_recording", DEFAULT_ICON_SIZE)));
|
||||||
});
|
});
|
||||||
recorder.start();
|
recorder.start();
|
||||||
} else {
|
} else {
|
||||||
pendingAttachment = new Attachment(recorder.finish(), AttachmentType.VOICE);
|
pendingAttachment = new Attachment(recorder.finish(), AttachmentType.VOICE);
|
||||||
recording = false;
|
recording = false;
|
||||||
Platform.runLater(() -> {
|
Platform.runLater(() -> {
|
||||||
voiceButton.setGraphic(new ImageView(IconUtil.loadIconThemeSensitive("microphone", 20)));
|
voiceButton.setGraphic(new ImageView(IconUtil.loadIconThemeSensitive("microphone", DEFAULT_ICON_SIZE)));
|
||||||
voiceButton.setText(null);
|
voiceButton.setText(null);
|
||||||
checkPostConditions(false);
|
checkPostConditions(false);
|
||||||
attachmentView.setImage(IconUtil.loadIconThemeSensitive("attachment_present", 20));
|
|
||||||
attachmentView.setVisible(true);
|
attachmentView.setVisible(true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -302,12 +304,12 @@ public final class ChatScene implements Restorable {
|
|||||||
fileChooser.setTitle("Add Attachment");
|
fileChooser.setTitle("Add Attachment");
|
||||||
fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
|
fileChooser.setInitialDirectory(new File(System.getProperty("user.home")));
|
||||||
fileChooser.getExtensionFilters()
|
fileChooser.getExtensionFilters()
|
||||||
.addAll(new FileChooser.ExtensionFilter("Pictures", "*.png", "*.jpg"),
|
.addAll(new FileChooser.ExtensionFilter("Pictures", "*.png", "*.jpg", "*.bmp", "*.gif"),
|
||||||
new FileChooser.ExtensionFilter("Videos", "*.mp4"),
|
new FileChooser.ExtensionFilter("Videos", "*.mp4"),
|
||||||
new FileChooser.ExtensionFilter("All Files", "*.*"));
|
new FileChooser.ExtensionFilter("All Files", "*.*"));
|
||||||
final var file = fileChooser.showOpenDialog(sceneContext.getStage());
|
final var file = fileChooser.showOpenDialog(sceneContext.getStage());
|
||||||
|
|
||||||
if(file != null) {
|
if (file != null) {
|
||||||
|
|
||||||
// Check max file size
|
// Check max file size
|
||||||
if (file.length() > 16E6) {
|
if (file.length() > 16E6) {
|
||||||
@ -330,7 +332,7 @@ public final class ChatScene implements Restorable {
|
|||||||
try {
|
try {
|
||||||
pendingAttachment = new Attachment(Files.readAllBytes(file.toPath()), type);
|
pendingAttachment = new Attachment(Files.readAllBytes(file.toPath()), type);
|
||||||
attachmentView.setVisible(true);
|
attachmentView.setVisible(true);
|
||||||
} catch (IOException e) {
|
} catch (final IOException e) {
|
||||||
new Alert(AlertType.ERROR, "The selected file could not be loaded!").showAndWait();
|
new Alert(AlertType.ERROR, "The selected file could not be loaded!").showAndWait();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -422,8 +424,7 @@ public final class ChatScene implements Restorable {
|
|||||||
final var text = messageTextArea.getText().strip();
|
final var text = messageTextArea.getText().strip();
|
||||||
try {
|
try {
|
||||||
// Creating the message and its metadata
|
// Creating the message and its metadata
|
||||||
final var builder = new MessageBuilder(localDB.getUser().getID(), currentChat.getRecipient().getID(), localDB
|
final var builder = new MessageBuilder(localDB.getUser().getID(), currentChat.getRecipient().getID(), localDB.getIDGenerator())
|
||||||
.getIDGenerator())
|
|
||||||
.setText(text);
|
.setText(text);
|
||||||
// Setting an attachment, if present
|
// Setting an attachment, if present
|
||||||
if (pendingAttachment != null) {
|
if (pendingAttachment != null) {
|
||||||
@ -432,8 +433,7 @@ public final class ChatScene implements Restorable {
|
|||||||
attachmentView.setVisible(false);
|
attachmentView.setVisible(false);
|
||||||
}
|
}
|
||||||
// Building the final message
|
// Building the final message
|
||||||
final var message = currentChat.getRecipient() instanceof Group ? builder.buildGroupMessage((Group) currentChat
|
final var message = currentChat.getRecipient() instanceof Group ? builder.buildGroupMessage((Group) currentChat.getRecipient())
|
||||||
.getRecipient())
|
|
||||||
: builder.build();
|
: builder.build();
|
||||||
|
|
||||||
// Send message
|
// Send message
|
||||||
|
@ -68,7 +68,7 @@ public class MessageControl extends Label {
|
|||||||
if (message.hasAttachment()) {
|
if (message.hasAttachment()) {
|
||||||
switch (message.getAttachment().getType()) {
|
switch (message.getAttachment().getType()) {
|
||||||
case PICTURE:
|
case PICTURE:
|
||||||
vbox.getChildren().add(new ImageView(new Image(new ByteArrayInputStream(message.getAttachment().getData()))));
|
vbox.getChildren().add(new ImageView(new Image(new ByteArrayInputStream(message.getAttachment().getData()), 256, 256, true, true)));
|
||||||
break;
|
break;
|
||||||
case VIDEO:
|
case VIDEO:
|
||||||
break;
|
break;
|
||||||
@ -92,9 +92,7 @@ public class MessageControl extends Label {
|
|||||||
statusIcon.setPreserveRatio(true);
|
statusIcon.setPreserveRatio(true);
|
||||||
vbox.getChildren().add(statusIcon);
|
vbox.getChildren().add(statusIcon);
|
||||||
getStyleClass().add("own-message");
|
getStyleClass().add("own-message");
|
||||||
} else {
|
} else getStyleClass().add("received-message");
|
||||||
getStyleClass().add("received-message");
|
|
||||||
}
|
|
||||||
// Adjusting height and weight of the cell to the corresponding ListView
|
// Adjusting height and weight of the cell to the corresponding ListView
|
||||||
paddingProperty().setValue(new Insets(5, 20, 5, 20));
|
paddingProperty().setValue(new Insets(5, 20, 5, 20));
|
||||||
setContextMenu(contextMenu);
|
setContextMenu(contextMenu);
|
||||||
|
@ -101,8 +101,7 @@
|
|||||||
</GridPane.margin>
|
</GridPane.margin>
|
||||||
<buttons>
|
<buttons>
|
||||||
<Button fx:id="attachmentButton" disable="true"
|
<Button fx:id="attachmentButton" disable="true"
|
||||||
mnemonicParsing="false" onAction="#attachmentButtonClicked"
|
mnemonicParsing="false" onAction="#attachmentButtonClicked" />
|
||||||
text="Add Attachment" />
|
|
||||||
<Button fx:id="voiceButton" disable="true"
|
<Button fx:id="voiceButton" disable="true"
|
||||||
onAction="#voiceButtonClicked">
|
onAction="#voiceButtonClicked">
|
||||||
<padding>
|
<padding>
|
||||||
|
Reference in New Issue
Block a user