mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-12 21:36:21 -04:00
Fix not selecting the version just downloaded
This commit is contained in:
parent
c3cd0dd8a0
commit
ada63f1452
@ -18,6 +18,7 @@
|
|||||||
package org.jackhuang.hmcl.ui.versions;
|
package org.jackhuang.hmcl.ui.versions;
|
||||||
|
|
||||||
import com.jfoenix.concurrency.JFXUtilities;
|
import com.jfoenix.concurrency.JFXUtilities;
|
||||||
|
import javafx.application.Platform;
|
||||||
import javafx.beans.property.*;
|
import javafx.beans.property.*;
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.scene.control.Control;
|
import javafx.scene.control.Control;
|
||||||
@ -30,6 +31,7 @@ import org.jackhuang.hmcl.game.HMCLGameRepository;
|
|||||||
import org.jackhuang.hmcl.setting.Profile;
|
import org.jackhuang.hmcl.setting.Profile;
|
||||||
import org.jackhuang.hmcl.setting.Profiles;
|
import org.jackhuang.hmcl.setting.Profiles;
|
||||||
import org.jackhuang.hmcl.ui.Controllers;
|
import org.jackhuang.hmcl.ui.Controllers;
|
||||||
|
import org.jackhuang.hmcl.ui.WeakListenerHelper;
|
||||||
import org.jackhuang.hmcl.ui.decorator.DecoratorPage;
|
import org.jackhuang.hmcl.ui.decorator.DecoratorPage;
|
||||||
import org.jackhuang.hmcl.ui.download.DownloadWizardProvider;
|
import org.jackhuang.hmcl.ui.download.DownloadWizardProvider;
|
||||||
import org.jackhuang.hmcl.util.VersionNumber;
|
import org.jackhuang.hmcl.util.VersionNumber;
|
||||||
@ -68,6 +70,8 @@ public class GameList extends Control implements DecoratorPage {
|
|||||||
|
|
||||||
private void loadVersions(HMCLGameRepository repository) {
|
private void loadVersions(HMCLGameRepository repository) {
|
||||||
toggleGroup = new ToggleGroup();
|
toggleGroup = new ToggleGroup();
|
||||||
|
WeakListenerHelper helper = new WeakListenerHelper();
|
||||||
|
toggleGroup.getProperties().put("ReferenceHolder", helper);
|
||||||
List<GameListItem> children = repository.getVersions().parallelStream()
|
List<GameListItem> children = repository.getVersions().parallelStream()
|
||||||
.filter(version -> !version.isHidden())
|
.filter(version -> !version.isHidden())
|
||||||
.sorted((a, b) -> VersionNumber.COMPARATOR.compare(VersionNumber.asVersion(a.getId()), VersionNumber.asVersion(b.getId())))
|
.sorted((a, b) -> VersionNumber.COMPARATOR.compare(VersionNumber.asVersion(a.getId()), VersionNumber.asVersion(b.getId())))
|
||||||
@ -79,14 +83,18 @@ public class GameList extends Control implements DecoratorPage {
|
|||||||
items.setAll(children);
|
items.setAll(children);
|
||||||
children.forEach(GameListItem::checkSelection);
|
children.forEach(GameListItem::checkSelection);
|
||||||
|
|
||||||
profile.selectedVersionProperty().addListener((a, b, newValue) -> {
|
profile.selectedVersionProperty().addListener(helper.weak((a, b, newValue) -> {
|
||||||
toggleGroup.getToggles().stream()
|
Platform.runLater(() -> {
|
||||||
.filter(it -> ((GameListItem) it.getUserData()).getVersion().equals(newValue))
|
children.forEach(it -> it.selectedProperty().set(false));
|
||||||
|
children.stream()
|
||||||
|
.filter(it -> it.getVersion().equals(newValue))
|
||||||
.findFirst()
|
.findFirst()
|
||||||
.ifPresent(it -> it.setSelected(true));
|
.ifPresent(it -> it.selectedProperty().set(true));
|
||||||
});
|
});
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
toggleGroup.selectedToggleProperty().addListener((o, a, toggle) -> {
|
toggleGroup.selectedToggleProperty().addListener((o, a, toggle) -> {
|
||||||
|
if (toggle == null) return;
|
||||||
GameListItem model = (GameListItem) toggle.getUserData();
|
GameListItem model = (GameListItem) toggle.getUserData();
|
||||||
model.getProfile().setSelectedVersion(model.getVersion());
|
model.getProfile().setSelectedVersion(model.getVersion());
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user