Related to #1961: Add a Dialog to warn. (#2055)

Co-authored-by: Cyenoch <cyenoch@qq.com>
This commit is contained in:
Cyenoch 2023-02-02 21:19:07 +08:00 committed by GitHub
parent 59b5aabfe5
commit da5097ab78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 41 additions and 3 deletions

View File

@ -191,7 +191,7 @@ public final class ModListPage extends ListPageBase<ModListPageSkin.ModInfoObjec
if (exception != null) {
Controllers.dialog("Failed to check updates", "failed", MessageDialogPane.MessageType.ERROR);
} else {
Controllers.navigate(new ModUpdatesPage(modManager, result));
Controllers.navigate(new ModUpdatesPage(modManager, result, profile.getRepository().isModpack(versionId)));
}
})
.withStagesHint(Collections.singletonList("mods.check_updates")),

View File

@ -19,14 +19,18 @@ package org.jackhuang.hmcl.ui.versions;
import com.jfoenix.controls.*;
import com.jfoenix.controls.datamodels.treetable.RecursiveTreeObject;
import javafx.beans.binding.ObjectBinding;
import javafx.beans.property.*;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import org.apache.commons.lang3.mutable.MutableObject;
import org.jackhuang.hmcl.mod.LocalModFile;
import org.jackhuang.hmcl.mod.ModManager;
@ -37,6 +41,7 @@ import org.jackhuang.hmcl.task.FileDownloadTask;
import org.jackhuang.hmcl.task.Schedulers;
import org.jackhuang.hmcl.task.Task;
import org.jackhuang.hmcl.ui.Controllers;
import org.jackhuang.hmcl.ui.SVG;
import org.jackhuang.hmcl.ui.construct.*;
import org.jackhuang.hmcl.ui.decorator.DecoratorPage;
import org.jackhuang.hmcl.util.Pair;
@ -62,7 +67,7 @@ public class ModUpdatesPage extends BorderPane implements DecoratorPage {
private final ObservableList<ModUpdateObject> objects;
@SuppressWarnings("unchecked")
public ModUpdatesPage(ModManager modManager, List<LocalModFile.ModUpdate> updates) {
public ModUpdatesPage(ModManager modManager, List<LocalModFile.ModUpdate> updates, Boolean isModpack) {
this.modManager = modManager;
getStyleClass().add("gray-background");
@ -106,7 +111,9 @@ public class ModUpdatesPage extends BorderPane implements DecoratorPage {
JFXButton nextButton = new JFXButton(i18n("mods.check_updates.update"));
nextButton.getStyleClass().add("jfx-button-raised");
nextButton.setButtonType(JFXButton.ButtonType.RAISED);
nextButton.setOnAction(e -> updateMods());
nextButton.setOnAction(e -> {
if (isModpack) updateModpackModWarningDialog();
});
JFXButton cancelButton = new JFXButton(i18n("button.cancel"));
cancelButton.getStyleClass().add("jfx-button-raised");
@ -127,6 +134,31 @@ public class ModUpdatesPage extends BorderPane implements DecoratorPage {
});
}
private void updateModpackModWarningDialog() {
JFXDialogLayout warningPane = new JFXDialogLayout();
warningPane.setHeading(new Label(i18n("message.warning"), SVG.alert(new ObjectBinding<Paint>() {
@Override
protected Paint computeValue() {
return Color.ORANGERED;
}
}, -1, -1)));
warningPane.setBody(new Label(i18n("mods.update_modpack_mod.warning")));
JFXButton yesButton = new JFXButton(i18n("button.yes"));
yesButton.getStyleClass().add("dialog-accept");
yesButton.setOnAction(event -> {
warningPane.fireEvent(new DialogCloseEvent());
updateMods();
});
JFXButton noButton = new JFXButton(i18n("button.cancel"));
noButton.getStyleClass().add("dialog-cancel");
noButton.setOnAction(event -> {
// Do nothing.
warningPane.fireEvent(new DialogCloseEvent());
});
warningPane.setActions(yesButton, noButton);
Controllers.dialog(warningPane);
}
private void updateMods() {
ModUpdateTask task = new ModUpdateTask(
modManager,

View File

@ -856,6 +856,7 @@ mods.name=Name
mods.not_modded=You must install a mod loader (Fabric, Forge or LiteLoader) first to manage your mods\!
mods.restore=Rollback
mods.url=Official Page
mods.update_modpack_mod.warning=Updating mods in a modpack can lead to irreparable results, possibly corrupting the modpack so that it cannot start. Are you sure you want to update?
multiplayer=Multiplayer online
multiplayer.agreement.prompt=Before using the functionality of multiplayer, you must agree to the user agreement and disclaimer of the multiplayer service provider mcer.cn. \nEspecially, you agree that any problems and disputes you encounter while using the multiplayer functionality (including its paid services) have nothing to do with HMCL and should be resolved through consultation with mcer.cn

View File

@ -797,6 +797,7 @@ mods.name=Nombre
mods.not_modded=¡Debes instalar primero un cargador de mods (Fabric, Forge o LiteLoader) para gestionar tus mods\!
mods.restore=Restaurar
mods.url=Página oficial
mods.update_modpack_mod.warning=Actualizar mods en un modpack puede generar resultados irreparables, posiblemente corrompiendo el modpack para que no pueda iniciarse. ¿Seguro que quieres actualizar?
multiplayer=Multijugador
multiplayer.agreement.prompt=Antes de utilizar el servicio multijugador, debe aceptar las condiciones de servicio del proveedor del servicio, ioi, en primer lugar.

View File

@ -630,6 +630,7 @@ mods.name=Name
mods.not_modded=最初にmodloaderをインストールする必要がありますFabric、Forge、またはLiteLoader
mods.restore=Restore
mods.url=公式ページ
mods.update_modpack_mod.warning=modpack 内の mod を更新すると、修復不可能な結果につながる可能性があり、modpack が破損して起動できなくなる可能性があります。 更新してもよろしいですか?
multiplayer=マルチプレイ
multiplayer.agreement.prompt=マルチプレイヤーサービスの使用を開始する前に、まずEULAに同意する必要があります。

View File

@ -636,6 +636,7 @@ mods.name=Название
mods.not_modded=Сначала необходимо установить загрузчик модов (Fabric, Forge или LiteLoader)
mods.restore=Восстановить
mods.url=Официальная страница
mods.update_modpack_mod.warning=Обновление модов в пакете модов может привести к непоправимым результатам, возможно, повредить пакет модов так, что он не сможет запуститься. Вы уверены, что хотите обновить?
multiplayer=Сетевая игра
multiplayer.agreement.prompt=Перед началом использования сервиса сетевой игры, необходимо сначала согласиться с EULA.

View File

@ -701,6 +701,7 @@ mods.name=名稱
mods.not_modded=你需要先在自動安裝頁面安裝 Fabric、Forge 或 LiteLoader 才能進行模組管理。
mods.restore=回退
mods.url=官方頁面
mods.update_modpack_mod.warning=更新整合包中的Mod可能導致整合包損壞使整合包無法正常啟動。該操作不可逆確定要更新嗎
multiplayer=多人聯機
multiplayer.agreement.prompt=多人聯機功能由 速聚 提供。使用前,你需要先同意多人聯機服務提供方 速聚 的用戶協議與免責聲明。\n你需要了解HMCL 僅為 速聚 提供多人聯機服務入口,使用中遇到的任何問題由 速聚 負責處理。您在使用多人聯機服務過程中所遇到的任何問題與糾紛(包括其付費業務)均與 HMCL 無關,應與 速聚 協商解決。

View File

@ -703,6 +703,7 @@ mods.name=名称
mods.not_modded=你需要先在自动安装页面安装 Fabric、Forge 或 LiteLoader 才能进行模组管理!
mods.restore=回退
mods.url=官方页面
mods.update_modpack_mod.warning=更新整合包中的Mod可能导致整合包损坏使整合包无法正常启动。该操作不可逆确定要更新吗
multiplayer=多人联机
multiplayer.agreement.prompt=多人联机功能由 速聚 提供。使用前,你需要先同意多人联机服务提供方 速聚 的用户协议与免责声明。\n你需要了解HMCL 仅为 速聚 提供多人联机服务入口,使用中遇到的任何问题由 速聚 负责处理。\n您在使用多人联机服务过程中所遇到的任何问题与纠纷包括其付费业务均与 HMCL 无关,请与 速聚 协商解决。