From 7daffd259472efb85aa85a915937a02dcd369502 Mon Sep 17 00:00:00 2001 From: 0xboobface <0xboobface@gmail.com> Date: Sun, 4 Nov 2018 20:10:34 +0100 Subject: [PATCH] Fix sorting by date in recordings table --- CHANGELOG.md | 1 + src/main/java/ctbrec/ui/RecordingsTab.java | 28 ++++++++++++++++++---- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2caaf928..bd634e53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ * Added CamSoda * Added detection of model name changes for MyFreeCams * Added setting to define a maximum resolution +* Fixed sorting by date in recordings table 1.6.1 ======================== diff --git a/src/main/java/ctbrec/ui/RecordingsTab.java b/src/main/java/ctbrec/ui/RecordingsTab.java index fc3acd64..e64184f0 100644 --- a/src/main/java/ctbrec/ui/RecordingsTab.java +++ b/src/main/java/ctbrec/ui/RecordingsTab.java @@ -34,7 +34,7 @@ import ctbrec.recorder.Recorder; import ctbrec.recorder.download.MergedHlsDownload; import ctbrec.sites.Site; import javafx.application.Platform; -import javafx.beans.property.SimpleStringProperty; +import javafx.beans.property.SimpleObjectProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.concurrent.ScheduledService; @@ -47,6 +47,7 @@ import javafx.scene.control.ContextMenu; import javafx.scene.control.MenuItem; import javafx.scene.control.ScrollPane; import javafx.scene.control.Tab; +import javafx.scene.control.TableCell; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.cell.PropertyValueFactory; @@ -57,6 +58,7 @@ import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.layout.FlowPane; import javafx.stage.FileChooser; +import javafx.util.Callback; import javafx.util.Duration; public class RecordingsTab extends Tab implements TabSelectionListener { @@ -99,12 +101,28 @@ public class RecordingsTab extends Tab implements TabSelectionListener { TableColumn name = new TableColumn<>("Model"); name.setPrefWidth(200); name.setCellValueFactory(new PropertyValueFactory("modelName")); - TableColumn date = new TableColumn<>("Date"); + TableColumn date = new TableColumn<>("Date"); date.setCellValueFactory((cdf) -> { Instant instant = cdf.getValue().getStartDate(); - ZonedDateTime time = instant.atZone(ZoneId.systemDefault()); - DateTimeFormatter dtf = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.MEDIUM); - return new SimpleStringProperty(dtf.format(time)); + return new SimpleObjectProperty(instant); + }); + date.setCellFactory(new Callback, TableCell>() { + @Override + public TableCell call(TableColumn param) { + TableCell cell = new TableCell() { + @Override + protected void updateItem(Instant instant, boolean empty) { + if(empty || instant == null) { + setText(null); + } else { + ZonedDateTime time = instant.atZone(ZoneId.systemDefault()); + DateTimeFormatter dtf = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM, FormatStyle.MEDIUM); + setText(dtf.format(time)); + } + } + }; + return cell; + } }); date.setPrefWidth(200); TableColumn status = new TableColumn<>("Status");