forked from j62/ctbrec
Improve calculation of size property
This commit is contained in:
parent
bf8a3c7240
commit
8826de38b2
|
@ -1,10 +1,11 @@
|
|||
package ctbrec.ui;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.Instant;
|
||||
|
||||
import ctbrec.Config;
|
||||
import ctbrec.Recording;
|
||||
import javafx.beans.property.LongProperty;
|
||||
import javafx.beans.property.SimpleLongProperty;
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
import javafx.beans.property.StringProperty;
|
||||
|
||||
|
@ -12,7 +13,7 @@ public class JavaFxRecording extends Recording {
|
|||
|
||||
private transient StringProperty statusProperty = new SimpleStringProperty();
|
||||
private transient StringProperty progressProperty = new SimpleStringProperty();
|
||||
private transient StringProperty sizeProperty = new SimpleStringProperty();
|
||||
private transient LongProperty sizeProperty = new SimpleLongProperty();
|
||||
|
||||
private Recording delegate;
|
||||
|
||||
|
@ -89,9 +90,7 @@ public class JavaFxRecording extends Recording {
|
|||
@Override
|
||||
public void setSizeInByte(long sizeInByte) {
|
||||
delegate.setSizeInByte(sizeInByte);
|
||||
double sizeInGiB = sizeInByte / 1024.0 / 1024 / 1024;
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
sizeProperty.setValue(df.format(sizeInGiB) + " GiB");
|
||||
sizeProperty.set(sizeInByte);
|
||||
}
|
||||
|
||||
public StringProperty getProgressProperty() {
|
||||
|
@ -151,7 +150,7 @@ public class JavaFxRecording extends Recording {
|
|||
return delegate.getSizeInByte();
|
||||
}
|
||||
|
||||
public StringProperty getSizeProperty() {
|
||||
public LongProperty getSizeProperty() {
|
||||
return sizeProperty;
|
||||
}
|
||||
|
||||
|
|
|
@ -147,9 +147,39 @@ public class RecordingsTab extends Tab implements TabSelectionListener {
|
|||
TableColumn<JavaFxRecording, String> progress = new TableColumn<>("Progress");
|
||||
progress.setCellValueFactory((cdf) -> cdf.getValue().getProgressProperty());
|
||||
progress.setPrefWidth(100);
|
||||
TableColumn<JavaFxRecording, String> size = new TableColumn<>("Size");
|
||||
size.setCellValueFactory((cdf) -> cdf.getValue().getSizeProperty());
|
||||
TableColumn<JavaFxRecording, Number> size = new TableColumn<>("Size");
|
||||
size.setStyle("-fx-alignment: CENTER-RIGHT;");
|
||||
size.setPrefWidth(100);
|
||||
size.setCellValueFactory(cdf -> cdf.getValue().getSizeProperty());
|
||||
size.setCellFactory(new Callback<TableColumn<JavaFxRecording, Number>, TableCell<JavaFxRecording, Number>>() {
|
||||
@Override
|
||||
public TableCell<JavaFxRecording, Number> call(TableColumn<JavaFxRecording, Number> param) {
|
||||
TableCell<JavaFxRecording, Number> cell = new TableCell<JavaFxRecording, Number>() {
|
||||
@Override
|
||||
protected void updateItem(Number sizeInByte, boolean empty) {
|
||||
if(empty || sizeInByte == null) {
|
||||
setText(null);
|
||||
} else {
|
||||
DecimalFormat df = new DecimalFormat("0.00");
|
||||
String unit = "Bytes";
|
||||
double size = sizeInByte.doubleValue();
|
||||
if(size > 1024.0 * 1024 * 1024) {
|
||||
size = size / 1024.0 / 1024 / 1024;
|
||||
unit = "GiB";
|
||||
} else if(size > 1024.0 * 1024) {
|
||||
size = size / 1024.0 / 1024;
|
||||
unit = "MiB";
|
||||
} else if(size > 1024.0) {
|
||||
size = size / 1024.0;
|
||||
unit = "KiB";
|
||||
}
|
||||
setText(df.format(size) + ' ' + unit);
|
||||
}
|
||||
}
|
||||
};
|
||||
return cell;
|
||||
}
|
||||
});
|
||||
|
||||
table.getColumns().addAll(name, date, status, progress, size);
|
||||
table.setItems(observableRecordings);
|
||||
|
|
Loading…
Reference in New Issue