mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-06-29 03:20:50 +12:00
Small update check fixes
This commit is contained in:
parent
d8ce8ecf8c
commit
e916c44f06
48
app/src/main/java/io/xpipe/app/comp/base/FontIconComp.java
Normal file
48
app/src/main/java/io/xpipe/app/comp/base/FontIconComp.java
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
package io.xpipe.app.comp.base;
|
||||||
|
|
||||||
|
import io.xpipe.app.fxcomps.Comp;
|
||||||
|
import io.xpipe.app.fxcomps.CompStructure;
|
||||||
|
import io.xpipe.app.fxcomps.SimpleCompStructure;
|
||||||
|
import io.xpipe.app.fxcomps.util.BindingsHelper;
|
||||||
|
import io.xpipe.app.fxcomps.util.PlatformThread;
|
||||||
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
|
import javafx.beans.value.ObservableValue;
|
||||||
|
import javafx.scene.layout.StackPane;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Value;
|
||||||
|
import org.kordamp.ikonli.javafx.FontIcon;
|
||||||
|
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class FontIconComp extends Comp <FontIconComp.Structure>{
|
||||||
|
|
||||||
|
@Value
|
||||||
|
public static class Structure implements CompStructure<StackPane> {
|
||||||
|
|
||||||
|
FontIcon icon;
|
||||||
|
StackPane pane;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StackPane get() {
|
||||||
|
return pane;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private final ObservableValue<String> icon;
|
||||||
|
|
||||||
|
public FontIconComp(String icon) {
|
||||||
|
this.icon = new SimpleStringProperty(icon);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public FontIconComp.Structure createBase() {
|
||||||
|
var fi = new FontIcon();
|
||||||
|
var obs = PlatformThread.sync(icon);
|
||||||
|
BindingsHelper.linkPersistently(fi, obs);
|
||||||
|
obs.subscribe(val -> {
|
||||||
|
fi.setIconLiteral(val);
|
||||||
|
});
|
||||||
|
|
||||||
|
var pane = new StackPane(fi);
|
||||||
|
return new FontIconComp.Structure(fi, pane);
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ import io.xpipe.app.core.AppFont;
|
||||||
import io.xpipe.app.core.AppI18n;
|
import io.xpipe.app.core.AppI18n;
|
||||||
import io.xpipe.app.fxcomps.Comp;
|
import io.xpipe.app.fxcomps.Comp;
|
||||||
import io.xpipe.app.fxcomps.CompStructure;
|
import io.xpipe.app.fxcomps.CompStructure;
|
||||||
|
import io.xpipe.app.fxcomps.util.BindingsHelper;
|
||||||
import io.xpipe.app.fxcomps.util.PlatformThread;
|
import io.xpipe.app.fxcomps.util.PlatformThread;
|
||||||
import javafx.beans.binding.Bindings;
|
import javafx.beans.binding.Bindings;
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
|
@ -12,7 +13,6 @@ import javafx.event.ActionEvent;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.layout.HBox;
|
import javafx.scene.layout.HBox;
|
||||||
import javafx.scene.layout.StackPane;
|
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Builder;
|
import lombok.Builder;
|
||||||
|
@ -47,20 +47,16 @@ public class TileButtonComp extends Comp<TileButtonComp.Structure> {
|
||||||
});
|
});
|
||||||
|
|
||||||
var header = new Label();
|
var header = new Label();
|
||||||
header.textProperty().bind(PlatformThread.sync(name));
|
BindingsHelper.bindStrong(header.textProperty(), PlatformThread.sync(name));
|
||||||
var desc = new Label();
|
var desc = new Label();
|
||||||
desc.textProperty().bind(PlatformThread.sync(description));
|
BindingsHelper.bindStrong(desc.textProperty(), PlatformThread.sync(description));
|
||||||
AppFont.small(desc);
|
AppFont.small(desc);
|
||||||
desc.setOpacity(0.65);
|
desc.setOpacity(0.65);
|
||||||
var text = new VBox(header, desc);
|
var text = new VBox(header, desc);
|
||||||
text.setSpacing(2);
|
text.setSpacing(2);
|
||||||
|
|
||||||
var fi = new FontIcon();
|
var fi = new FontIconComp(icon).createStructure();
|
||||||
PlatformThread.sync(icon).subscribe(val -> {
|
var pane = fi.getPane();
|
||||||
fi.setIconLiteral(val);
|
|
||||||
});
|
|
||||||
|
|
||||||
var pane = new StackPane(fi);
|
|
||||||
var hbox = new HBox(pane, text);
|
var hbox = new HBox(pane, text);
|
||||||
hbox.setSpacing(8);
|
hbox.setSpacing(8);
|
||||||
pane.prefWidthProperty()
|
pane.prefWidthProperty()
|
||||||
|
@ -75,11 +71,11 @@ public class TileButtonComp extends Comp<TileButtonComp.Structure> {
|
||||||
desc.heightProperty()));
|
desc.heightProperty()));
|
||||||
pane.prefHeightProperty().addListener((c, o, n) -> {
|
pane.prefHeightProperty().addListener((c, o, n) -> {
|
||||||
var size = Math.min(n.intValue(), 100);
|
var size = Math.min(n.intValue(), 100);
|
||||||
fi.setIconSize((int) (size * 0.55));
|
fi.getIcon().setIconSize((int) (size * 0.55));
|
||||||
});
|
});
|
||||||
bt.setGraphic(hbox);
|
bt.setGraphic(hbox);
|
||||||
return Structure.builder()
|
return Structure.builder()
|
||||||
.graphic(fi)
|
.graphic(fi.getIcon())
|
||||||
.button(bt)
|
.button(bt)
|
||||||
.content(hbox)
|
.content(hbox)
|
||||||
.name(header)
|
.name(header)
|
||||||
|
|
|
@ -27,7 +27,7 @@ public class UpdateCheckComp extends SimpleComp {
|
||||||
XPipeDistributionType.get().getUpdateHandler().getPreparedUpdate()));
|
XPipeDistributionType.get().getUpdateHandler().getPreparedUpdate()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restart() {
|
private void performUpdateAndRestart() {
|
||||||
XPipeDistributionType.get().getUpdateHandler().refreshUpdateCheckSilent();
|
XPipeDistributionType.get().getUpdateHandler().refreshUpdateCheckSilent();
|
||||||
UpdateAvailableAlert.showIfNeeded();
|
UpdateAvailableAlert.showIfNeeded();
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ public class UpdateCheckComp extends SimpleComp {
|
||||||
return new TileButtonComp(name, description, graphic, actionEvent -> {
|
return new TileButtonComp(name, description, graphic, actionEvent -> {
|
||||||
actionEvent.consume();
|
actionEvent.consume();
|
||||||
if (updateReady.getValue()) {
|
if (updateReady.getValue()) {
|
||||||
restart();
|
performUpdateAndRestart();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,12 @@ public class UpdateAvailableAlert {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check whether we still have the latest version prepared
|
||||||
|
uh.refreshUpdateCheckSilent();
|
||||||
|
if (uh.getPreparedUpdate().getValue() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var u = uh.getPreparedUpdate().getValue();
|
var u = uh.getPreparedUpdate().getValue();
|
||||||
var update = AppWindowHelper.showBlockingAlert(alert -> {
|
var update = AppWindowHelper.showBlockingAlert(alert -> {
|
||||||
alert.setTitle(AppI18n.get("updateReadyAlertTitle"));
|
alert.setTitle(AppI18n.get("updateReadyAlertTitle"));
|
||||||
|
|
Loading…
Reference in a new issue