mirror of
https://github.com/StarCitizenToolBox/app.git
synced 2026-02-06 15:10:20 +00:00
feat: Migrate more PowerShell calls to Rust implementation
This commit is contained in:
@@ -9,6 +9,7 @@ import 'package:hive_ce/hive.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:starcitizen_doctor/common/conf/conf.dart';
|
||||
import 'package:starcitizen_doctor/common/helper/system_helper.dart';
|
||||
import 'package:starcitizen_doctor/common/rust/api/win32_api.dart' as win32;
|
||||
import 'package:starcitizen_doctor/common/utils/log.dart';
|
||||
import 'package:starcitizen_doctor/common/utils/provider.dart';
|
||||
import 'package:starcitizen_doctor/widgets/widgets.dart';
|
||||
@@ -50,14 +51,15 @@ class SettingsUIModel extends _$SettingsUIModel {
|
||||
|
||||
Future<void> setGameLaunchECore(BuildContext context) async {
|
||||
final userBox = await Hive.openBox("app_conf");
|
||||
final defaultInput =
|
||||
userBox.get("gameLaunch_eCore_count", defaultValue: "0");
|
||||
final defaultInput = userBox.get("gameLaunch_eCore_count", defaultValue: "0");
|
||||
if (!context.mounted) return;
|
||||
final input = await showInputDialogs(context,
|
||||
title: S.current.setting_action_info_enter_cpu_core_to_ignore,
|
||||
content: S.current.setting_action_info_cpu_core_tip,
|
||||
initialValue: defaultInput,
|
||||
inputFormatters: [FilteringTextInputFormatter.digitsOnly]);
|
||||
final input = await showInputDialogs(
|
||||
context,
|
||||
title: S.current.setting_action_info_enter_cpu_core_to_ignore,
|
||||
content: S.current.setting_action_info_cpu_core_tip,
|
||||
initialValue: defaultInput,
|
||||
inputFormatters: [FilteringTextInputFormatter.digitsOnly],
|
||||
);
|
||||
if (input == null) return;
|
||||
userBox.put("gameLaunch_eCore_count", input);
|
||||
_initState();
|
||||
@@ -65,8 +67,7 @@ class SettingsUIModel extends _$SettingsUIModel {
|
||||
|
||||
Future _updateGameLaunchECore() async {
|
||||
final userBox = await Hive.openBox("app_conf");
|
||||
final inputGameLaunchECore =
|
||||
userBox.get("gameLaunch_eCore_count", defaultValue: "0");
|
||||
final inputGameLaunchECore = userBox.get("gameLaunch_eCore_count", defaultValue: "0");
|
||||
state = state.copyWith(inputGameLaunchECore: inputGameLaunchECore);
|
||||
}
|
||||
|
||||
@@ -102,9 +103,7 @@ class SettingsUIModel extends _$SettingsUIModel {
|
||||
if (r == null || r.files.firstOrNull?.path == null) return;
|
||||
final fileName = r.files.first.path!;
|
||||
dPrint(fileName);
|
||||
final fileNameRegExp = RegExp(
|
||||
r"^(.*\\StarCitizen\\.*\\)Bin64\\StarCitizen\.exe$",
|
||||
caseSensitive: false);
|
||||
final fileNameRegExp = RegExp(r"^(.*\\StarCitizen\\.*\\)Bin64\\StarCitizen\.exe$", caseSensitive: false);
|
||||
if (fileNameRegExp.hasMatch(fileName)) {
|
||||
RegExp pathRegex = RegExp(r"\\[^\\]+\\Bin64\\StarCitizen\.exe$");
|
||||
String extractedPath = fileName.replaceFirst(pathRegex, '');
|
||||
@@ -127,8 +126,7 @@ class SettingsUIModel extends _$SettingsUIModel {
|
||||
final confBox = await Hive.openBox("app_conf");
|
||||
final customLauncherPath = confBox.get("custom_launcher_path");
|
||||
final customGamePath = confBox.get("custom_game_path");
|
||||
state = state.copyWith(
|
||||
customLauncherPath: customLauncherPath, customGamePath: customGamePath);
|
||||
state = state.copyWith(customLauncherPath: customLauncherPath, customGamePath: customGamePath);
|
||||
}
|
||||
|
||||
Future<void> delName(String key) async {
|
||||
@@ -138,24 +136,21 @@ class SettingsUIModel extends _$SettingsUIModel {
|
||||
}
|
||||
|
||||
Future _loadLocationCacheSize() async {
|
||||
final len1 = await SystemHelper.getDirLen(
|
||||
"${appGlobalState.applicationSupportDir}/Localizations");
|
||||
final len2 = await SystemHelper.getDirLen(
|
||||
"${appGlobalState.applicationSupportDir}/launcher_enhance_data");
|
||||
final len1 = await SystemHelper.getDirLen("${appGlobalState.applicationSupportDir}/Localizations");
|
||||
final len2 = await SystemHelper.getDirLen("${appGlobalState.applicationSupportDir}/launcher_enhance_data");
|
||||
final locationCacheSize = len1 + len2;
|
||||
state = state.copyWith(locationCacheSize: locationCacheSize);
|
||||
}
|
||||
|
||||
Future<void> cleanLocationCache(BuildContext context) async {
|
||||
final ok = await showConfirmDialogs(
|
||||
context,
|
||||
S.current.setting_action_info_confirm_clear_cache,
|
||||
Text(S.current.setting_action_info_clear_cache_warning));
|
||||
context,
|
||||
S.current.setting_action_info_confirm_clear_cache,
|
||||
Text(S.current.setting_action_info_clear_cache_warning),
|
||||
);
|
||||
if (ok == true) {
|
||||
final dir1 =
|
||||
Directory("${appGlobalState.applicationSupportDir}/Localizations");
|
||||
final dir2 = Directory(
|
||||
"${appGlobalState.applicationSupportDir}/launcher_enhance_data");
|
||||
final dir1 = Directory("${appGlobalState.applicationSupportDir}/Localizations");
|
||||
final dir2 = Directory("${appGlobalState.applicationSupportDir}/launcher_enhance_data");
|
||||
if (!context.mounted) return;
|
||||
if (await dir1.exists()) {
|
||||
if (!context.mounted) return;
|
||||
@@ -172,36 +167,27 @@ class SettingsUIModel extends _$SettingsUIModel {
|
||||
|
||||
Future<void> addShortCut(BuildContext context) async {
|
||||
if (ConstConf.isMSE) {
|
||||
showToast(
|
||||
context, S.current.setting_action_info_microsoft_version_limitation);
|
||||
showToast(context, S.current.setting_action_info_microsoft_version_limitation);
|
||||
await Future.delayed(const Duration(seconds: 1));
|
||||
Process.run("explorer.exe", ["shell:AppsFolder"]);
|
||||
return;
|
||||
}
|
||||
dPrint(Platform.resolvedExecutable);
|
||||
final shortCuntName = S.current.app_shortcut_name;
|
||||
final script = """
|
||||
\$targetPath = "${Platform.resolvedExecutable}";
|
||||
\$shortcutPath = [System.IO.Path]::Combine([System.Environment]::GetFolderPath([System.Environment+SpecialFolder]::DesktopDirectory), "$shortCuntName");
|
||||
\$shell = New-Object -ComObject WScript.Shell
|
||||
\$shortcut = \$shell.CreateShortcut(\$shortcutPath)
|
||||
if (\$shortcut -eq \$null) {
|
||||
Write-Host "Failed to create shortcut."
|
||||
} else {
|
||||
\$shortcut.TargetPath = \$targetPath
|
||||
\$shortcut.Save()
|
||||
Write-Host "Shortcut created successfully."
|
||||
final shortcutName = S.current.app_shortcut_name;
|
||||
try {
|
||||
await win32.createDesktopShortcut(targetPath: Platform.resolvedExecutable, shortcutName: shortcutName);
|
||||
if (!context.mounted) return;
|
||||
showToast(context, S.current.setting_action_info_shortcut_created);
|
||||
} catch (e) {
|
||||
dPrint("createDesktopShortcut error: $e");
|
||||
if (!context.mounted) return;
|
||||
showToast(context, "Failed to create shortcut: $e");
|
||||
}
|
||||
""";
|
||||
await Process.run(SystemHelper.powershellPath, [script]);
|
||||
if (!context.mounted) return;
|
||||
showToast(context, S.current.setting_action_info_shortcut_created);
|
||||
}
|
||||
|
||||
Future _loadToolSiteMirrorState() async {
|
||||
final userBox = await Hive.openBox("app_conf");
|
||||
final isEnableToolSiteMirrors =
|
||||
userBox.get("isEnableToolSiteMirrors", defaultValue: false);
|
||||
final isEnableToolSiteMirrors = userBox.get("isEnableToolSiteMirrors", defaultValue: false);
|
||||
state = state.copyWith(isEnableToolSiteMirrors: isEnableToolSiteMirrors);
|
||||
}
|
||||
|
||||
@@ -213,8 +199,7 @@ class SettingsUIModel extends _$SettingsUIModel {
|
||||
}
|
||||
|
||||
Future<void> showLogs() async {
|
||||
SystemHelper.openDir(getDPrintFile()?.absolute.path.replaceAll("/", "\\"),
|
||||
isFile: true);
|
||||
SystemHelper.openDir(getDPrintFile()?.absolute.path.replaceAll("/", "\\"), isFile: true);
|
||||
}
|
||||
|
||||
void onChangeUseInternalDNS(bool? b) {
|
||||
@@ -225,8 +210,7 @@ class SettingsUIModel extends _$SettingsUIModel {
|
||||
|
||||
Future _loadUseInternalDNS() async {
|
||||
final userBox = await Hive.openBox("app_conf");
|
||||
final isUseInternalDNS =
|
||||
userBox.get("isUseInternalDNS", defaultValue: false);
|
||||
final isUseInternalDNS = userBox.get("isUseInternalDNS", defaultValue: false);
|
||||
state = state.copyWith(isUseInternalDNS: isUseInternalDNS);
|
||||
}
|
||||
|
||||
@@ -238,8 +222,7 @@ class SettingsUIModel extends _$SettingsUIModel {
|
||||
|
||||
Future _loadOnnxXnnPackState() async {
|
||||
final userBox = await Hive.openBox("app_conf");
|
||||
final isEnableOnnxXnnPack =
|
||||
userBox.get("isEnableOnnxXnnPack", defaultValue: true);
|
||||
final isEnableOnnxXnnPack = userBox.get("isEnableOnnxXnnPack", defaultValue: true);
|
||||
state = state.copyWith(isEnableOnnxXnnPack: isEnableOnnxXnnPack);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user