forked from j62/ctbrec
1
0
Fork 0

Improve calculation of size property

This commit is contained in:
0xboobface 2018-11-27 13:36:00 +01:00
parent bf8a3c7240
commit 8826de38b2
2 changed files with 37 additions and 8 deletions

View File

@ -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;
}

View File

@ -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);