优化游戏下载页 (#4264)
This commit is contained in:
@@ -139,7 +139,8 @@ public final class VersionsPage extends Control implements WizardPage, Refreshab
|
|||||||
SUCCESS,
|
SUCCESS,
|
||||||
}
|
}
|
||||||
|
|
||||||
private enum VersionType {
|
private enum VersionTypeFilter {
|
||||||
|
ALL,
|
||||||
RELEASE,
|
RELEASE,
|
||||||
SNAPSHOTS,
|
SNAPSHOTS,
|
||||||
APRIL_FOOLS,
|
APRIL_FOOLS,
|
||||||
@@ -315,7 +316,7 @@ public final class VersionsPage extends Control implements WizardPage, Refreshab
|
|||||||
private final JFXSpinner spinner;
|
private final JFXSpinner spinner;
|
||||||
|
|
||||||
private final JFXTextField nameField;
|
private final JFXTextField nameField;
|
||||||
private final JFXComboBox<VersionType> categoryField = new JFXComboBox<>();
|
private final JFXComboBox<VersionTypeFilter> categoryField = new JFXComboBox<>();
|
||||||
|
|
||||||
VersionsPageSkin(VersionsPage control) {
|
VersionsPageSkin(VersionsPage control) {
|
||||||
super(control);
|
super(control);
|
||||||
@@ -323,8 +324,7 @@ public final class VersionsPage extends Control implements WizardPage, Refreshab
|
|||||||
BorderPane root = new BorderPane();
|
BorderPane root = new BorderPane();
|
||||||
|
|
||||||
GridPane searchPane = new GridPane();
|
GridPane searchPane = new GridPane();
|
||||||
if (control.versionList.hasType())
|
root.setTop(searchPane);
|
||||||
root.setTop(searchPane);
|
|
||||||
searchPane.getStyleClass().addAll("card");
|
searchPane.getStyleClass().addAll("card");
|
||||||
BorderPane.setMargin(searchPane, new Insets(10, 10, 0, 10));
|
BorderPane.setMargin(searchPane, new Insets(10, 10, 0, 10));
|
||||||
|
|
||||||
@@ -335,7 +335,11 @@ public final class VersionsPage extends Control implements WizardPage, Refreshab
|
|||||||
ColumnConstraints column2 = new ColumnConstraints();
|
ColumnConstraints column2 = new ColumnConstraints();
|
||||||
column2.setMaxWidth(150);
|
column2.setMaxWidth(150);
|
||||||
ColumnConstraints column3 = new ColumnConstraints();
|
ColumnConstraints column3 = new ColumnConstraints();
|
||||||
searchPane.getColumnConstraints().setAll(nameColumn, column1, nameColumn, column2, column3);
|
|
||||||
|
if (control.versionList.hasType())
|
||||||
|
searchPane.getColumnConstraints().setAll(nameColumn, column1, nameColumn, column2, column3);
|
||||||
|
else
|
||||||
|
searchPane.getColumnConstraints().setAll(nameColumn, column1, column3);
|
||||||
|
|
||||||
searchPane.setHgap(16);
|
searchPane.setHgap(16);
|
||||||
searchPane.setVgap(10);
|
searchPane.setVgap(10);
|
||||||
@@ -348,21 +352,42 @@ public final class VersionsPage extends Control implements WizardPage, Refreshab
|
|||||||
nameField.setPromptText(i18n("version.search.prompt"));
|
nameField.setPromptText(i18n("version.search.prompt"));
|
||||||
nameField.textProperty().addListener(o -> updateList());
|
nameField.textProperty().addListener(o -> updateList());
|
||||||
|
|
||||||
categoryField.getItems().addAll(VersionType.values());
|
if ("game".equals(control.libraryId)) {
|
||||||
|
categoryField.getItems().setAll(
|
||||||
|
VersionTypeFilter.ALL,
|
||||||
|
VersionTypeFilter.RELEASE,
|
||||||
|
VersionTypeFilter.SNAPSHOTS,
|
||||||
|
VersionTypeFilter.APRIL_FOOLS,
|
||||||
|
VersionTypeFilter.OLD
|
||||||
|
);
|
||||||
|
categoryField.getSelectionModel().select(VersionTypeFilter.RELEASE);
|
||||||
|
} else {
|
||||||
|
categoryField.getItems().setAll(
|
||||||
|
VersionTypeFilter.ALL,
|
||||||
|
VersionTypeFilter.RELEASE,
|
||||||
|
VersionTypeFilter.SNAPSHOTS
|
||||||
|
);
|
||||||
|
categoryField.getSelectionModel().select(VersionTypeFilter.ALL);
|
||||||
|
}
|
||||||
categoryField.setConverter(stringConverter(type -> i18n("version.game." + type.name().toLowerCase(Locale.ROOT))));
|
categoryField.setConverter(stringConverter(type -> i18n("version.game." + type.name().toLowerCase(Locale.ROOT))));
|
||||||
categoryField.getSelectionModel().select(0);
|
|
||||||
categoryField.getSelectionModel().selectedItemProperty().addListener(o -> updateList());
|
categoryField.getSelectionModel().selectedItemProperty().addListener(o -> updateList());
|
||||||
|
|
||||||
JFXButton refreshButton = FXUtils.newRaisedButton(i18n("button.refresh"));
|
JFXButton refreshButton = FXUtils.newRaisedButton(i18n("button.refresh"));
|
||||||
refreshButton.setOnAction(event -> control.onRefresh());
|
refreshButton.setOnAction(event -> control.onRefresh());
|
||||||
|
|
||||||
searchPane.addRow(rowIndex++,
|
if (control.versionList.hasType()) {
|
||||||
new Label(i18n("version.search")), nameField,
|
searchPane.addRow(rowIndex++,
|
||||||
new Label(i18n("version.game.type")), categoryField,
|
new Label(i18n("version.search")), nameField,
|
||||||
refreshButton
|
new Label(i18n("version.game.type")), categoryField,
|
||||||
);
|
refreshButton
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
searchPane.addRow(rowIndex++,
|
||||||
|
new Label(i18n("version.search")), nameField,
|
||||||
|
refreshButton
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// {
|
// {
|
||||||
// HBox actionsBox = new HBox(8);
|
// HBox actionsBox = new HBox(8);
|
||||||
// GridPane.setColumnSpan(actionsBox, 4);
|
// GridPane.setColumnSpan(actionsBox, 4);
|
||||||
@@ -453,20 +478,22 @@ public final class VersionsPage extends Control implements WizardPage, Refreshab
|
|||||||
private void updateList() {
|
private void updateList() {
|
||||||
Stream<RemoteVersion> versions = getSkinnable().versions.stream();
|
Stream<RemoteVersion> versions = getSkinnable().versions.stream();
|
||||||
|
|
||||||
VersionType versionType = categoryField.getSelectionModel().getSelectedItem();
|
VersionTypeFilter filter = categoryField.getSelectionModel().getSelectedItem();
|
||||||
if (versionType != null)
|
if (filter != null)
|
||||||
versions = versions.filter(it -> {
|
versions = versions.filter(it -> {
|
||||||
switch (it.getVersionType()) {
|
RemoteVersion.Type versionType = it.getVersionType();
|
||||||
|
switch (filter) {
|
||||||
case RELEASE:
|
case RELEASE:
|
||||||
return versionType == VersionType.RELEASE;
|
return versionType == RemoteVersion.Type.RELEASE;
|
||||||
case PENDING:
|
case SNAPSHOTS:
|
||||||
return versionType == VersionType.SNAPSHOTS;
|
return versionType == RemoteVersion.Type.SNAPSHOT
|
||||||
case SNAPSHOT:
|
|| versionType == RemoteVersion.Type.PENDING;
|
||||||
return versionType == (GameVersionNumber.asGameVersion(it.getGameVersion()).isSpecial()
|
case APRIL_FOOLS:
|
||||||
? VersionType.APRIL_FOOLS
|
return versionType == RemoteVersion.Type.SNAPSHOT
|
||||||
: VersionType.SNAPSHOTS);
|
&& GameVersionNumber.asGameVersion(it.getGameVersion()).isSpecial();
|
||||||
case OLD:
|
case OLD:
|
||||||
return versionType == VersionType.OLD;
|
return versionType == RemoteVersion.Type.OLD;
|
||||||
|
case ALL:
|
||||||
default:
|
default:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -489,6 +516,7 @@ public final class VersionsPage extends Control implements WizardPage, Refreshab
|
|||||||
|
|
||||||
//noinspection DataFlowIssue
|
//noinspection DataFlowIssue
|
||||||
list.getItems().setAll(versions.collect(Collectors.toList()));
|
list.getItems().setAll(versions.collect(Collectors.toList()));
|
||||||
|
list.scrollTo(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1428,6 +1428,7 @@ version.empty=No Instances
|
|||||||
version.empty.add=Add new instance
|
version.empty.add=Add new instance
|
||||||
version.empty.launch=No available instances. Clicking "OK" will take you to the "Download" page.\n\nYou can also download the game or switch game directories via the "Download" or "All Instances" buttons on the HMCL homepage.
|
version.empty.launch=No available instances. Clicking "OK" will take you to the "Download" page.\n\nYou can also download the game or switch game directories via the "Download" or "All Instances" buttons on the HMCL homepage.
|
||||||
version.empty.hint=There are no Minecraft instances here.\nYou can try switching to another game directory or clicking here to download one.
|
version.empty.hint=There are no Minecraft instances here.\nYou can try switching to another game directory or clicking here to download one.
|
||||||
|
version.game.all=All
|
||||||
version.game.april_fools=April Fools
|
version.game.april_fools=April Fools
|
||||||
version.game.old=Historical
|
version.game.old=Historical
|
||||||
version.game.release=Release
|
version.game.release=Release
|
||||||
|
|||||||
@@ -1221,6 +1221,7 @@ version.empty=沒有遊戲實例
|
|||||||
version.empty.add=進入下載頁安裝遊戲
|
version.empty.add=進入下載頁安裝遊戲
|
||||||
version.empty.launch=沒有可啟動的遊戲。點擊「確定」將進入「下載」頁面。\n你也可以點擊 HMCL 主介面左側的「下載」按鈕安裝遊戲,或在「實例清單」切換遊戲目錄。
|
version.empty.launch=沒有可啟動的遊戲。點擊「確定」將進入「下載」頁面。\n你也可以點擊 HMCL 主介面左側的「下載」按鈕安裝遊戲,或在「實例清單」切換遊戲目錄。
|
||||||
version.empty.hint=沒有已安裝的遊戲。\n你可以切換其他遊戲目錄,或者點擊此處進入遊戲下載頁面。
|
version.empty.hint=沒有已安裝的遊戲。\n你可以切換其他遊戲目錄,或者點擊此處進入遊戲下載頁面。
|
||||||
|
version.game.all=全部
|
||||||
version.game.april_fools=愚人節
|
version.game.april_fools=愚人節
|
||||||
version.game.old=遠古版
|
version.game.old=遠古版
|
||||||
version.game.release=正式版
|
version.game.release=正式版
|
||||||
|
|||||||
@@ -1231,6 +1231,7 @@ version.empty=没有游戏版本
|
|||||||
version.empty.add=进入下载页安装游戏
|
version.empty.add=进入下载页安装游戏
|
||||||
version.empty.launch=没有可启动的游戏。点击“确定”将进入“下载”页面。\n你也可以点击 HMCL 主界面左侧的“下载”按钮安装游戏,或在“版本列表”切换游戏文件夹。
|
version.empty.launch=没有可启动的游戏。点击“确定”将进入“下载”页面。\n你也可以点击 HMCL 主界面左侧的“下载”按钮安装游戏,或在“版本列表”切换游戏文件夹。
|
||||||
version.empty.hint=没有已安装的游戏。\n你可以切换其他游戏文件夹,或者点击此处进入游戏下载页面。
|
version.empty.hint=没有已安装的游戏。\n你可以切换其他游戏文件夹,或者点击此处进入游戏下载页面。
|
||||||
|
version.game.all=全部
|
||||||
version.game.april_fools=愚人节
|
version.game.april_fools=愚人节
|
||||||
version.game.old=远古版
|
version.game.old=远古版
|
||||||
version.game.release=正式版
|
version.game.release=正式版
|
||||||
|
|||||||
Reference in New Issue
Block a user