feat: WIP: new account look

This commit is contained in:
huanghongxun 2021-08-21 18:47:37 +08:00
parent 494d40c8b5
commit d2d0875c36
2 changed files with 64 additions and 16 deletions

View File

@ -51,12 +51,12 @@ public class AccountAdvancedListItem extends AdvancedListItem {
setTitle(i18n("account.missing")); setTitle(i18n("account.missing"));
setSubtitle(i18n("account.missing.add")); setSubtitle(i18n("account.missing.add"));
imageView.imageProperty().unbind(); imageView.imageProperty().unbind();
imageView.setImage(newImage("/assets/img/craft_table.png")); imageView.setImage(newImage("/assets/img/steve.png"));
tooltip.setText(""); tooltip.setText("");
} else { } else {
titleProperty().bind(Bindings.createStringBinding(account::getCharacter, account)); titleProperty().bind(Bindings.createStringBinding(account::getCharacter, account));
setSubtitle(accountSubtitle(account)); setSubtitle(accountSubtitle(account));
imageView.imageProperty().bind(TexturesLoader.fxAvatarBinding(account, 32)); imageView.imageProperty().bind(TexturesLoader.fxAvatarBinding(account, 42));
tooltip.setText(account.getCharacter() + " " + accountTooltip(account)); tooltip.setText(account.getCharacter() + " " + accountTooltip(account));
} }
} }
@ -66,7 +66,7 @@ public class AccountAdvancedListItem extends AdvancedListItem {
tooltip = new Tooltip(); tooltip = new Tooltip();
FXUtils.installFastTooltip(this, tooltip); FXUtils.installFastTooltip(this, tooltip);
Pair<Node, ImageView> view = createImageView(null); Pair<Node, ImageView> view = createImageView(null, 42, 42);
setLeftGraphic(view.getKey()); setLeftGraphic(view.getKey());
imageView = view.getValue(); imageView = view.getValue();
@ -107,4 +107,61 @@ public class AccountAdvancedListItem extends AdvancedListItem {
return ""; return "";
} }
} }
// private static class AccountAdvancedListItemSkin extends SkinBase<AccountAdvancedListItemSkin> {
// private final PseudoClass SELECTED = PseudoClass.getPseudoClass("selected");
//
// public AccountAdvancedListItemSkin(AccountAdvancedListItemSkin skinnable) {
// super(skinnable);
//
// FXUtils.onChangeAndOperate(skinnable.activeProperty(), active -> {
// skinnable.pseudoClassStateChanged(SELECTED, active);
// });
//
// BorderPane root = new BorderPane();
// root.getStyleClass().add("container");
// root.setPickOnBounds(false);
//
// RipplerContainer container = new RipplerContainer(root);
//
// HBox left = new HBox();
// left.setAlignment(Pos.CENTER_LEFT);
// left.setMouseTransparent(true);
//
// TwoLineListItem item = new TwoLineListItem();
// root.setCenter(item);
// item.setMouseTransparent(true);
// item.titleProperty().bind(skinnable.titleProperty());
// item.subtitleProperty().bind(skinnable.subtitleProperty());
//
// FXUtils.onChangeAndOperate(skinnable.leftGraphicProperty(),
// newGraphic -> {
// if (newGraphic == null) {
// left.getChildren().clear();
// } else {
// left.getChildren().setAll(newGraphic);
// }
// });
// root.setLeft(left);
//
// HBox right = new HBox();
// right.setAlignment(Pos.CENTER);
// right.setMouseTransparent(true);
// right.getStyleClass().add("toggle-icon4");
// FXUtils.setLimitWidth(right, 40);
// FXUtils.onChangeAndOperate(skinnable.rightGraphicProperty(),
// newGraphic -> {
// if (newGraphic == null) {
// right.getChildren().clear();
// } else {
// right.getChildren().setAll(newGraphic);
// }
// });
//
// FXUtils.onChangeAndOperate(skinnable.actionButtonVisibleProperty(),
// visible -> root.setRight(visible ? right : null));
//
// getChildren().setAll(container);
// }
// }
} }

View File

@ -17,41 +17,32 @@
*/ */
package org.jackhuang.hmcl.ui.versions; package org.jackhuang.hmcl.ui.versions;
import javafx.scene.Node;
import javafx.scene.control.Tooltip; import javafx.scene.control.Tooltip;
import javafx.scene.image.ImageView;
import org.jackhuang.hmcl.setting.Profiles; import org.jackhuang.hmcl.setting.Profiles;
import org.jackhuang.hmcl.ui.FXUtils; import org.jackhuang.hmcl.ui.FXUtils;
import org.jackhuang.hmcl.ui.SVG;
import org.jackhuang.hmcl.ui.construct.AdvancedListItem; import org.jackhuang.hmcl.ui.construct.AdvancedListItem;
import org.jackhuang.hmcl.util.Pair;
import static org.jackhuang.hmcl.ui.FXUtils.newImage; import static org.jackhuang.hmcl.ui.versions.VersionPage.wrap;
import static org.jackhuang.hmcl.util.i18n.I18n.i18n; import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
public class GameAdvancedListItem extends AdvancedListItem { public class GameAdvancedListItem extends AdvancedListItem {
private final Tooltip tooltip; private final Tooltip tooltip;
private final ImageView imageView;
public GameAdvancedListItem() { public GameAdvancedListItem() {
tooltip = new Tooltip(); tooltip = new Tooltip();
Pair<Node, ImageView> view = createImageView(null); setLeftGraphic(wrap(SVG.wrenchOutline(null, 20, 20)));
setLeftGraphic(view.getKey());
imageView = view.getValue();
FXUtils.onChangeAndOperate(Profiles.selectedVersionProperty(), version -> { FXUtils.onChangeAndOperate(Profiles.selectedVersionProperty(), version -> {
if (version != null && Profiles.getSelectedProfile() != null && if (version != null && Profiles.getSelectedProfile() != null &&
Profiles.getSelectedProfile().getRepository().hasVersion(version)) { Profiles.getSelectedProfile().getRepository().hasVersion(version)) {
FXUtils.installFastTooltip(this, tooltip); FXUtils.installFastTooltip(this, tooltip);
setTitle(version); setTitle(i18n("version.manage.manage"));
setSubtitle(null);
imageView.setImage(Profiles.getSelectedProfile().getRepository().getVersionIconImage(version));
tooltip.setText(version); tooltip.setText(version);
} else { } else {
Tooltip.uninstall(this,tooltip); Tooltip.uninstall(this,tooltip);
setTitle(i18n("version.empty")); setTitle(i18n("version.empty"));
setSubtitle(i18n("version.empty.add"));
imageView.setImage(newImage("/assets/img/grass.png"));
tooltip.setText(""); tooltip.setText("");
} }
}); });