Hide download box buttons while downloading

This commit is contained in:
crschnick 2025-03-19 17:54:18 +00:00
parent 086237f965
commit b4d1a9e68b
3 changed files with 18 additions and 4 deletions

View file

@ -81,14 +81,14 @@ public class BrowserTransferComp extends SimpleComp {
var dragNotice = new LabelComp(AppI18n.observable("dragLocalFiles"))
.apply(struc -> struc.get().setGraphic(new FontIcon("mdi2h-hand-left")))
.apply(struc -> struc.get().setWrapText(true))
.hide(model.getEmpty());
.hide(Bindings.or(model.getEmpty(), model.getTransferring()));
var clearButton = new IconButtonComp("mdi2c-close", () -> {
ThreadHelper.runAsync(() -> {
model.clear(true);
});
})
.hide(model.getEmpty())
.hide(Bindings.or(model.getEmpty(), model.getTransferring()))
.tooltipKey("clearTransferDescription");
var downloadButton = new IconButtonComp("mdi2f-folder-move-outline", () -> {
@ -96,7 +96,7 @@ public class BrowserTransferComp extends SimpleComp {
model.transferToDownloads();
});
})
.hide(model.getEmpty())
.hide(Bindings.or(model.getEmpty(), model.getTransferring()))
.tooltipKey("downloadStageDescription");
var bottom = new HorizontalComp(

View file

@ -8,7 +8,9 @@ import io.xpipe.app.util.ShellTemp;
import io.xpipe.app.util.ThreadHelper;
import javafx.beans.binding.Bindings;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.Property;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ObservableBooleanValue;
import javafx.collections.FXCollections;
@ -34,6 +36,7 @@ public class BrowserTransferModel {
BrowserFullSessionModel browserSessionModel;
ObservableList<Item> items = FXCollections.observableArrayList();
ObservableBooleanValue empty = Bindings.createBooleanBinding(() -> items.isEmpty(), items);
BooleanProperty transferring = new SimpleBooleanProperty();
public BrowserTransferModel(BrowserFullSessionModel browserSessionModel) {
this.browserSessionModel = browserSessionModel;
@ -126,6 +129,7 @@ public class BrowserTransferModel {
}
try {
transferring.setValue(true);
var op = new BrowserFileTransferOperation(
BrowserLocalFileSystem.getLocalFileEntry(TEMP),
List.of(item.getBrowserEntry().getRawFileEntry()),
@ -150,6 +154,8 @@ public class BrowserTransferModel {
synchronized (items) {
items.remove(item);
}
} finally {
transferring.setValue(false);
}
}

View file

@ -154,7 +154,15 @@ public abstract class Comp<S extends CompStructure<?>> {
}
public Comp<S> disable(ObservableValue<Boolean> o) {
return apply(struc -> struc.get().disableProperty().bind(o));
return apply(struc -> {
var region = struc.get();
BindingsHelper.preserve(region, o);
o.subscribe(n -> {
PlatformThread.runLaterIfNeeded(() -> {
region.setDisable(n);
});
});
});
}
public Comp<S> padding(Insets insets) {