From 6df8f6f5d495ee0659204bd5dfc51a07e0763d98 Mon Sep 17 00:00:00 2001 From: ShirkNeko <109797057+ShirkNeko@users.noreply.github.com> Date: Mon, 2 Jun 2025 22:47:30 +0800 Subject: [PATCH] refactor: simplify handling and add app restart utility --- .../ultra/ui/component/ImageEditorDialog.kt | 5 +-- .../sukisu/ultra/ui/screen/MoreSettings.kt | 37 ++-------------- .../ultra/ui/util/RestartActivityUtils.kt | 44 +++++++++++++++++++ 3 files changed, 49 insertions(+), 37 deletions(-) create mode 100644 manager/app/src/main/java/com/sukisu/ultra/ui/util/RestartActivityUtils.kt diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/component/ImageEditorDialog.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/component/ImageEditorDialog.kt index c209e706..46152d7f 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/component/ImageEditorDialog.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/component/ImageEditorDialog.kt @@ -20,7 +20,6 @@ import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog @@ -138,7 +137,7 @@ fun ImageEditorDialog( 0f } updateTransformation(newScale, newOffsetX, newOffsetY) - } catch (e: Exception) { + } catch (_: Exception) { updateTransformation(lastScale, lastOffsetX, lastOffsetY) } } @@ -186,7 +185,7 @@ fun ImageEditorDialog( val transformation = BackgroundTransformation(scale, offsetX, offsetY) val savedUri = context.saveTransformedBackground(imageUri, transformation) savedUri?.let { onConfirm(it) } - } catch (e: Exception) { + } catch (_: Exception) { "" } } diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/MoreSettings.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/MoreSettings.kt index 0807337a..4047874b 100644 --- a/manager/app/src/main/java/com/sukisu/ultra/ui/screen/MoreSettings.kt +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/screen/MoreSettings.kt @@ -4,8 +4,6 @@ import android.annotation.SuppressLint import android.app.Activity import android.content.Context import android.content.Intent -import android.content.ComponentName -import android.content.pm.PackageManager import android.content.res.Configuration import android.net.Uri import android.os.Build @@ -92,6 +90,7 @@ import androidx.compose.material3.TextButton import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.unit.sp import com.ramcosta.composedestinations.navigation.DestinationsNavigator +import com.sukisu.ultra.ui.util.restartApp /** * @author ShirkNeko @@ -107,22 +106,6 @@ fun saveCardConfig(context: Context) { CardConfig.save(context) } -/** - * 切换启动器图标 - */ -fun toggleLauncherIcon(context: Context, useAlt: Boolean) { - val pm = context.packageManager - val main = ComponentName(context, MainActivity::class.java.name) - val alt = ComponentName(context, "${MainActivity::class.java.name}Alias") - if (useAlt) { - pm.setComponentEnabledSetting(main, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP) - pm.setComponentEnabledSetting(alt, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP) - } else { - pm.setComponentEnabledSetting(alt, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP) - pm.setComponentEnabledSetting(main, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP) - } -} - /** * 更多设置屏幕 */ @@ -313,28 +296,14 @@ fun MoreSettingsScreen( val onHideOtherInfoChange = { newValue: Boolean -> prefs.edit { putBoolean("is_hide_other_info", newValue) } isHideOtherInfo = newValue - - val intent = Intent(context, MainActivity::class.java) - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) - context.startActivity(intent) - - if (context is Activity) { - context.finish() - } + context.restartApp(MainActivity::class.java) } // 更新显示KPM开关状态 val onShowKpmInfoChange = { newValue: Boolean -> prefs.edit { putBoolean("show_kpm_info", newValue) } isShowKpmInfo = newValue - - val intent = Intent(context, MainActivity::class.java) - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) - context.startActivity(intent) - - if (context is Activity) { - context.finish() - } + context.restartApp(MainActivity::class.java) } // 隐藏SuSFS状态开关状态 diff --git a/manager/app/src/main/java/com/sukisu/ultra/ui/util/RestartActivityUtils.kt b/manager/app/src/main/java/com/sukisu/ultra/ui/util/RestartActivityUtils.kt new file mode 100644 index 00000000..ff8d881a --- /dev/null +++ b/manager/app/src/main/java/com/sukisu/ultra/ui/util/RestartActivityUtils.kt @@ -0,0 +1,44 @@ +package com.sukisu.ultra.ui.util + +import android.app.Activity +import android.content.ComponentName +import android.content.Context +import android.content.Intent +import android.content.pm.PackageManager +import com.sukisu.ultra.ui.MainActivity + +/** + * 重启应用程序 + **/ + +fun Context.restartApp( + activityClass: Class, + finishCurrent: Boolean = true, + clearTask: Boolean = true, + newTask: Boolean = true +) { + val intent = Intent(this, activityClass) + if (clearTask) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK) + if (newTask) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + startActivity(intent) + + if (finishCurrent && this is Activity) { + finish() + } +} + +/** + * 刷新启动器图标 + */ +fun toggleLauncherIcon(context: Context, useAlt: Boolean) { + val pm = context.packageManager + val main = ComponentName(context, MainActivity::class.java.name) + val alt = ComponentName(context, "${MainActivity::class.java.name}Alias") + if (useAlt) { + pm.setComponentEnabledSetting(main, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP) + pm.setComponentEnabledSetting(alt, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP) + } else { + pm.setComponentEnabledSetting(alt, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP) + pm.setComponentEnabledSetting(main, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP) + } +} \ No newline at end of file