package com.lt2333.simplicitytools.activity import android.annotation.SuppressLint import android.content.ComponentName import android.content.Intent import android.content.pm.PackageManager import android.net.Uri import android.os.Bundle import android.view.View import android.widget.Switch import android.widget.Toast import cn.fkj233.ui.activity.MIUIActivity import cn.fkj233.ui.activity.OwnSP import cn.fkj233.ui.activity.data.DefValue import cn.fkj233.ui.activity.view.SpinnerV import cn.fkj233.ui.activity.view.SwitchV import cn.fkj233.ui.activity.view.TextSummaryV import cn.fkj233.ui.activity.view.TextV import cn.fkj233.ui.dialog.MIUIDialog import com.lt2333.simplicitytools.BuildConfig import com.lt2333.simplicitytools.R import com.lt2333.simplicitytools.util.ShellUtils import com.microsoft.appcenter.AppCenter import com.microsoft.appcenter.analytics.Analytics import com.microsoft.appcenter.crashes.Crashes import kotlin.system.exitProcess class SettingsActivity : MIUIActivity() { private val activity = this override fun onCreate(savedInstanceState: Bundle?) { if (BuildConfig.BUILD_TYPE != "debug") { AppCenter.start( application, "ae2037d3-9914-4e0c-b02b-f9b2bb2574e5", Analytics::class.java, Crashes::class.java ) } checkLSPosed() super.onCreate(savedInstanceState) } //检测LSPosed是否激活 @SuppressLint("WorldReadableFiles") private fun checkLSPosed() { try { setSP(getSharedPreferences("config", MODE_WORLD_READABLE)) } catch (exception: SecurityException) { isLoad = false MIUIDialog(this) { setTitle(R.string.Tips) setMessage(R.string.not_support) setCancelable(false) setRButton(R.string.Done) { exitProcess(0) } }.show() } } init { initView { registerMain(getString(R.string.app_name), false) { TextSummaryWithSwitch( TextSummaryV(textId = R.string.main_switch, colorId = R.color.purple_700), SwitchV("main_switch", true) ) TextSummaryWithSwitch( TextSummaryV(textId = R.string.HideLauncherIcon), SwitchV("hLauncherIcon", customOnCheckedChangeListener = { packageManager.setComponentEnabledSetting( ComponentName(activity, "${BuildConfig.APPLICATION_ID}.launcher"), if (it) { PackageManager.COMPONENT_ENABLED_STATE_DISABLED } else { PackageManager.COMPONENT_ENABLED_STATE_ENABLED }, PackageManager.DONT_KILL_APP ) }) ) TextSummaryArrow( TextSummaryV( textId = R.string.matters_needing_attention, colorId = R.color.red, onClickListener = { MIUIDialog(activity) { setTitle(R.string.matters_needing_attention) setMessage( R.string.matters_needing_attention_context ) setRButton(R.string.Done) { dismiss() } }.show() }) ) Line() TitleText(resId = R.string.scope) TextSummaryArrow( TextSummaryV( textId = R.string.scope_systemui, tipsId = R.string.scope_systemui_summary, onClickListener = { showFragment("scope_systemui") } ) ) TextSummaryArrow( TextSummaryV( textId = R.string.scope_android, tipsId = R.string.scope_android_summary, onClickListener = { showFragment("scope_android") } ) ) TextSummaryArrow( TextSummaryV( textId = R.string.scope_other, tipsId = R.string.scope_other_summary, onClickListener = { showFragment("scope_other") } ) ) Line() TitleText(resId = R.string.about) TextSummaryArrow( TextSummaryV( textId = R.string.about_module, tips = getString(R.string.about_module_summary), onClickListener = { showFragment("about_module") } ) ) } register("scope_systemui", getString(R.string.scope_systemui), false) { TitleText(resId = R.string.statusbar) TextSummaryWithSwitch( TextSummaryV( textId = R.string.double_tap_to_sleep ), SwitchV("status_bar_double_tap_to_sleep") ) Line() TitleText(resId = R.string.status_bar_layout) val statusBarLayoutMode: HashMap = hashMapOf().also { it[0] = getString(R.string.default1) it[1] = getString(R.string.clock_center) it[2] = getString(R.string.clock_right) it[3] = getString(R.string.clock_center_and_icon_left) } TextWithSpinner( TextV(resId = R.string.status_bar_layout_mode), SpinnerV( statusBarLayoutMode[OwnSP.ownSP.getInt( "status_bar_layout_mode", 0 )].toString() ) { add(statusBarLayoutMode[0].toString()) { OwnSP.ownSP.edit().run { putInt( "status_bar_layout_mode", 0 ) apply() } } add(statusBarLayoutMode[1].toString()) { OwnSP.ownSP.edit().run { putInt( "status_bar_layout_mode", 1 ) apply() } } add(statusBarLayoutMode[2].toString()) { OwnSP.ownSP.edit().run { putInt( "status_bar_layout_mode", 2 ) apply() } } add(statusBarLayoutMode[3].toString()) { OwnSP.ownSP.edit().run { putInt( "status_bar_layout_mode", 3 ) apply() } } } ) val layoutCompatibilityModeBinding = GetDataBinding( object : DefValue { override fun getValue(): Any { return getSP().getBoolean("layout_compatibility_mode", false) } } ) { view, flags, data -> when (flags) { 1 -> (view as Switch).isEnabled = data as Boolean 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE } } TextSummaryWithSwitch( TextSummaryV( textId = R.string.layout_compatibility_mode, tipsId = R.string.layout_compatibility_mode_summary ), SwitchV( "layout_compatibility_mode", dataBindingSend = layoutCompatibilityModeBinding.bindingSend ) ) Text( resId = R.string.left_margin, dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2) ) SeekBarWithText( "status_bar_left_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2) ) Text( resId = R.string.right_margin, dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2) ) SeekBarWithText( "status_bar_right_margin", 0, 300, 0, dataBindingRecv = layoutCompatibilityModeBinding.binding.getRecv(2) ) Line() TitleText(resId = R.string.status_bar_clock_format) val customClockBinding = GetDataBinding(object : DefValue { override fun getValue(): Any { return getSP().getBoolean("custom_clock_switch", false) } }) { view, flags, data -> when (flags) { 1 -> (view as Switch).isEnabled = data as Boolean 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE } } TextWithSwitch( TextV(resId = R.string.custom_clock_switch, colorId = R.color.purple_700), SwitchV( "custom_clock_switch", dataBindingSend = customClockBinding.bindingSend ) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_year), SwitchV("status_bar_time_year"), dataBindingRecv = customClockBinding.binding.getRecv(2) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_month), SwitchV("status_bar_time_month"), dataBindingRecv = customClockBinding.binding.getRecv(2) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_day), SwitchV("status_bar_time_day"), dataBindingRecv = customClockBinding.binding.getRecv(2) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_week), SwitchV("status_bar_time_week"), dataBindingRecv = customClockBinding.binding.getRecv(2) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_double_hour), SwitchV("status_bar_time_double_hour"), dataBindingRecv = customClockBinding.binding.getRecv(2) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_period), SwitchV("status_bar_time_period", true), dataBindingRecv = customClockBinding.binding.getRecv(2) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_seconds), SwitchV("status_bar_time_seconds"), dataBindingRecv = customClockBinding.binding.getRecv(2) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_hide_space), SwitchV("status_bar_time_hide_space"), dataBindingRecv = customClockBinding.binding.getRecv(2) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_double_line), SwitchV("status_bar_time_double_line"), dataBindingRecv = customClockBinding.binding.getRecv(2) ) TextWithSwitch( TextV(resId = R.string.status_bar_time_double_line_center_align), SwitchV("status_bar_time_double_line_center_align"), dataBindingRecv = customClockBinding.binding.getRecv(2) ) Text( resId = R.string.status_bar_clock_size, dataBindingRecv = customClockBinding.binding.getRecv(2) ) SeekBarWithText( "status_bar_clock_size", 0, 18, 0, dataBindingRecv = customClockBinding.binding.getRecv(2) ) Text( resId = R.string.status_bar_clock_double_line_size, dataBindingRecv = customClockBinding.binding.getRecv(2) ) SeekBarWithText( "status_bar_clock_double_line_size", 0, 9, 0, dataBindingRecv = customClockBinding.binding.getRecv(2) ) Line() TitleText(resId = R.string.status_bar_icon) TextSummaryArrow( TextSummaryV( textId = R.string.hide_icon, onClickListener = { showFragment("hide_icon") } ) ) val customMobileTypeTextBinding = GetDataBinding(object : DefValue { override fun getValue(): Any { return getSP().getBoolean("custom_mobile_type_text_switch", false) } }) { view, flags, data -> when (flags) { 1 -> (view as Switch).isEnabled = data as Boolean 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE } } TextSummaryWithSwitch( TextSummaryV( textId = R.string.custom_mobile_type_text_switch ), SwitchV( "custom_mobile_type_text_switch", dataBindingSend = customMobileTypeTextBinding.bindingSend ) ) TextSummaryArrow( TextSummaryV( textId = R.string.custom_mobile_type_text ) { MIUIDialog(activity) { setTitle(R.string.custom_mobile_type_text) setEditText( "${ OwnSP.ownSP.getString( "custom_mobile_type_text", "5G" ) }", "" ) setLButton(textId = R.string.cancel) { dismiss() } setRButton(textId = R.string.Done) { if (getEditText().isNotEmpty()) { try { OwnSP.ownSP.edit().run { putString( "custom_mobile_type_text", getEditText() ) apply() } dismiss() return@setRButton } catch (_: Throwable) { } } Toast.makeText( activity, R.string.input_error, Toast.LENGTH_SHORT ).show() } }.show() }, dataBindingRecv = customMobileTypeTextBinding.binding.getRecv(2) ) val bigMobileTypeIconBinding = GetDataBinding(object : DefValue { override fun getValue(): Any { return getSP().getBoolean("big_mobile_type_icon", false) } }) { view, flags, data -> when (flags) { 1 -> (view as Switch).isEnabled = data as Boolean 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE } } TextSummaryWithSwitch( TextSummaryV( textId = R.string.big_mobile_type_icon ), SwitchV( "big_mobile_type_icon", dataBindingSend = bigMobileTypeIconBinding.bindingSend ) ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.big_mobile_type_icon_bold ), SwitchV("big_mobile_type_icon_bold", true), dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2) ) TextSummaryArrow( TextSummaryV( textId = R.string.big_mobile_type_icon_size, onClickListener = { MIUIDialog(activity) { setTitle(R.string.big_mobile_type_icon_size) setEditText( "", "${activity.getString(R.string.def)}12.5, ${activity.getString(R.string.current)}${ OwnSP.ownSP.getFloat( "big_mobile_type_icon_size", 12.5f ) }" ) setLButton(textId = R.string.cancel) { dismiss() } setRButton(textId = R.string.Done) { if (getEditText() != "") { OwnSP.ownSP.edit().run { putFloat( "big_mobile_type_icon_size", getEditText().toFloat() ) apply() } } dismiss() } }.show() }), dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2) ) TextSummaryArrow( TextSummaryV( textId = R.string.big_mobile_type_icon_up_and_down_position ) { MIUIDialog(activity) { setTitle(R.string.big_mobile_type_icon_up_and_down_position) setMessage("${activity.getString(R.string.range)} -15~15") setEditText( "", "${activity.getString(R.string.def)}0, ${activity.getString(R.string.current)}${ OwnSP.ownSP.getInt( "big_mobile_type_icon_up_and_down_position", 0 ) }" ) setLButton(textId = R.string.cancel) { dismiss() } setRButton(textId = R.string.Done) { if (getEditText().isNotEmpty()) { try { val value = getEditText().toInt() if (value in (-15..15)) { OwnSP.ownSP.edit().run { putInt( "big_mobile_type_icon_up_and_down_position", value ) apply() } dismiss() return@setRButton } } catch (_: Throwable) { } } Toast.makeText( activity, R.string.input_error, Toast.LENGTH_SHORT ).show() } }.show() }, dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2) ) TextSummaryArrow( TextSummaryV( textId = R.string.big_mobile_type_icon_left_and_right_margins ) { MIUIDialog(activity) { setTitle(R.string.big_mobile_type_icon_left_and_right_margins) setMessage("${activity.getString(R.string.range)} 0~30") setEditText( "", "${activity.getString(R.string.def)}0, ${activity.getString(R.string.current)}${ OwnSP.ownSP.getInt( "big_mobile_type_icon_left_and_right_margins", 0 ) }" ) setLButton(textId = R.string.cancel) { dismiss() } setRButton(textId = R.string.Done) { if (getEditText().isNotEmpty()) { try { val value = getEditText().toInt() if (value in (0..30)) { OwnSP.ownSP.edit().run { putInt( "big_mobile_type_icon_left_and_right_margins", value ) apply() } dismiss() return@setRButton } } catch (_: Throwable) { } } Toast.makeText( activity, R.string.input_error, Toast.LENGTH_SHORT ).show() } }.show() }, dataBindingRecv = bigMobileTypeIconBinding.binding.getRecv(2) ) Text( resId = R.string.maximum_number_of_notification_icons ) SeekBarWithText( "maximum_number_of_notification_icons", 1, 30, 3 ) Text( resId = R.string.maximum_number_of_notification_dots ) SeekBarWithText( "maximum_number_of_notification_dots", 0, 4, 3 ) TextSummaryArrow( TextSummaryV( textId = R.string.battery_percentage_font_size, onClickListener = { MIUIDialog(activity) { setTitle(R.string.battery_percentage_font_size) setMessage(R.string.zero_do_no_change) setEditText( "", "${activity.getString(R.string.current)}${ OwnSP.ownSP.getFloat( "battery_percentage_font_size", 0f ) }" ) setLButton(textId = R.string.cancel) { dismiss() } setRButton(textId = R.string.Done) { if (getEditText() != "") { OwnSP.ownSP.edit().run { putFloat( "battery_percentage_font_size", getEditText().toFloat() ) apply() } } dismiss() } }.show() }) ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.hide_battery_percentage_icon, tipsId = R.string.hide_battery_percentage_icon_summary ), SwitchV("hide_battery_percentage_icon") ) Line() TitleText(resId = R.string.status_bar_network_speed) TextSummaryWithSwitch( TextSummaryV( textId = R.string.status_bar_network_speed_refresh_speed, tipsId = R.string.status_bar_network_speed_refresh_speed_summary ), SwitchV("status_bar_network_speed_refresh_speed") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.hide_status_bar_network_speed_second, tipsId = R.string.hide_status_bar_network_speed_second_summary ), SwitchV("hide_status_bar_network_speed_second") ) TextWithSwitch( TextV(resId = R.string.hide_network_speed_splitter), SwitchV("hide_network_speed_splitter") ) val statusBarDualRowNetworkSpeedBinding = GetDataBinding(object : DefValue { override fun getValue(): Any { return getSP().getBoolean("status_bar_dual_row_network_speed", false) } }) { view, flags, data -> when (flags) { 1 -> (view as Switch).isEnabled = data as Boolean 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE } } TextSummaryWithSwitch( TextSummaryV( textId = R.string.status_bar_dual_row_network_speed, tipsId = R.string.status_bar_dual_row_network_speed_summary ), SwitchV( "status_bar_dual_row_network_speed", dataBindingSend = statusBarDualRowNetworkSpeedBinding.bindingSend ) ) val align: HashMap = hashMapOf() align[0] = getString(R.string.left) align[1] = getString(R.string.right) TextWithSpinner( TextV(resId = R.string.status_bar_network_speed_dual_row_gravity), SpinnerV( align[OwnSP.ownSP.getInt( "status_bar_network_speed_dual_row_gravity", 0 )].toString() ) { add(align[0].toString()) { OwnSP.ownSP.edit().run { putInt( "status_bar_network_speed_dual_row_gravity", 0 ) apply() } } add(align[1].toString()) { OwnSP.ownSP.edit().run { putInt( "status_bar_network_speed_dual_row_gravity", 1 ) apply() } } }, dataBindingRecv = statusBarDualRowNetworkSpeedBinding.binding.getRecv(2) ) TextWithSpinner( TextV(resId = R.string.status_bar_network_speed_dual_row_icon), SpinnerV( "${ OwnSP.ownSP.getString( "status_bar_network_speed_dual_row_icon", getString(R.string.none) ) }" ) { add(getString(R.string.none)) { OwnSP.ownSP.edit().run { putString( "status_bar_network_speed_dual_row_icon", getString(R.string.none) ) apply() } } add("▲▼") { OwnSP.ownSP.edit().run { putString("status_bar_network_speed_dual_row_icon", "▲▼") apply() } } add("△▽") { OwnSP.ownSP.edit().run { putString("status_bar_network_speed_dual_row_icon", "△▽") apply() } } add("↑↓") { OwnSP.ownSP.edit().run { putString("status_bar_network_speed_dual_row_icon", "↑↓") apply() } } } ) Text( resId = R.string.status_bar_network_speed_dual_row_size, dataBindingRecv = statusBarDualRowNetworkSpeedBinding.binding.getRecv(2) ) SeekBarWithText( "status_bar_network_speed_dual_row_size", 0, 9, 0, dataBindingRecv = statusBarDualRowNetworkSpeedBinding.binding.getRecv(2) ) Line() TitleText(resId = R.string.notification_center) val showWeatherMainSwitchBinding = GetDataBinding(object : DefValue { override fun getValue(): Any { return getSP().getBoolean("notification_weather", false) } }) { view, flags, data -> when (flags) { 1 -> (view as Switch).isEnabled = data as Boolean 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE } } TextSummaryWithSwitch( TextSummaryV( textId = R.string.show_weather_main_switch, colorId = R.color.purple_700 ), SwitchV( "notification_weather", dataBindingSend = showWeatherMainSwitchBinding.bindingSend ) ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.show_city, ), SwitchV("notification_weather_city"), dataBindingRecv = showWeatherMainSwitchBinding.binding.getRecv(2) ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.can_notification_slide, tipsId = R.string.can_notification_slide_summary, ), SwitchV("can_notification_slide"), ) Line() TitleText(resId = R.string.control_center) val controlCenterWeatherBinding = GetDataBinding(object : DefValue { override fun getValue(): Any { return getSP().getBoolean("control_center_weather", false) } }) { view, flags, data -> when (flags) { 1 -> (view as Switch).isEnabled = data as Boolean 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE } } TextSummaryWithSwitch( TextSummaryV( textId = R.string.show_weather_main_switch, colorId = R.color.purple_700, tipsId = R.string.control_center_weather_summary ), SwitchV( "control_center_weather", dataBindingSend = controlCenterWeatherBinding.bindingSend ) ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.show_city, ), SwitchV("control_center_weather_city"), dataBindingRecv = controlCenterWeatherBinding.binding.getRecv(2) ) Line() TitleText(resId = R.string.lock_screen) TextSummaryWithSwitch( TextSummaryV( textId = R.string.lock_screen_clock_display_seconds, tipsId = R.string.only_official_default_themes_are_supported ), SwitchV("lock_screen_clock_display_seconds") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.remove_the_left_side_of_the_lock_screen, tipsId = R.string.only_official_default_themes_are_supported ), SwitchV("remove_the_left_side_of_the_lock_screen") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.remove_lock_screen_camera, tipsId = R.string.only_official_default_themes_are_supported ), SwitchV("remove_lock_screen_camera") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.enable_wave_charge_animation ), SwitchV("enable_wave_charge_animation") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.lock_screen_charging_current, tipsId = R.string.only_official_default_themes_are_supported ), SwitchV("lock_screen_charging_current") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.double_tap_to_sleep, tipsId = R.string.home_double_tap_to_sleep_summary ), SwitchV("lock_screen_double_tap_to_sleep") ) Line() TitleText(resId = R.string.old_quick_settings_panel) val oldQSCustomSwitchBinding = GetDataBinding(object : DefValue { override fun getValue(): Any { return getSP().getBoolean("old_qs_custom_switch", false) } }) { view, flags, data -> when (flags) { 1 -> (view as Switch).isEnabled = data as Boolean 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE } } TextSummaryWithSwitch( TextSummaryV( textId = R.string.old_qs_custom_switch, colorId = R.color.purple_700 ), SwitchV( "old_qs_custom_switch", dataBindingSend = oldQSCustomSwitchBinding.bindingSend ) ) Text( resId = R.string.qs_custom_rows, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2) ) SeekBarWithText( "qs_custom_rows", 1, 6, 3, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2) ) Text( resId = R.string.qs_custom_rows_horizontal, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2) ) SeekBarWithText( "qs_custom_rows_horizontal", 1, 3, 2, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2) ) Text( resId = R.string.qs_custom_columns, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2) ) SeekBarWithText( "qs_custom_columns", 1, 7, 4, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2) ) Text( resId = R.string.qs_custom_columns_unexpanded, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2) ) SeekBarWithText( "qs_custom_columns_unexpanded", 1, 7, 5, dataBindingRecv = oldQSCustomSwitchBinding.binding.getRecv(2) ) } register("scope_android", getString(R.string.scope_android), false) { TitleText(resId = R.string.corepacth) TextSummaryWithSwitch( TextSummaryV( textId = R.string.downgr, tipsId = R.string.downgr_summary ), SwitchV("downgrade") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.authcreak, tipsId = R.string.authcreak_summary ), SwitchV("authcreak") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.digestCreak, tipsId = R.string.digestCreak_summary ), SwitchV("digestCreak") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.UsePreSig, tipsId = R.string.UsePreSig_summary ), SwitchV("UsePreSig") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.enhancedMode, tipsId = R.string.enhancedMode_summary ), SwitchV("enhancedMode") ) Line() TextSummaryWithSwitch( TextSummaryV( textId = R.string.disable_flag_secure, tipsId = R.string.disable_flag_secure_summary ), SwitchV("disable_flag_secure") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.delete_on_post_notification, tipsId = R.string.delete_on_post_notification_summary ), SwitchV("delete_on_post_notification") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.remove_small_window_restrictions, tipsId = R.string.remove_small_window_restrictions_summary ), SwitchV("remove_small_window_restrictions") ) TextSummaryArrow( TextSummaryV( textId = R.string.max_wallpaper_scale, onClickListener = { MIUIDialog(activity) { setTitle(R.string.max_wallpaper_scale) setEditText( "", "${activity.getString(R.string.def)}1.1, ${activity.getString(R.string.current)}${ OwnSP.ownSP.getFloat( "max_wallpaper_scale", 1.1f ) }" ) setLButton(textId = R.string.cancel) { dismiss() } setRButton(textId = R.string.Done) { if (getEditText() != "") { OwnSP.ownSP.edit().run { putFloat("max_wallpaper_scale", getEditText().toFloat()) apply() } } dismiss() } }.show() }) ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.allow_untrusted_touches, tipsId = R.string.take_effect_after_reboot ), SwitchV("allow_untrusted_touches") ) Line() TitleText(resId = R.string.sound) val mediaVolumeStepsSwitchBinding = GetDataBinding( object : DefValue { override fun getValue(): Any { return getSP().getBoolean("media_volume_steps_switch", false) } } ) { view, flags, data -> when (flags) { 1 -> (view as Switch).isEnabled = data as Boolean 2 -> view.visibility = if (data as Boolean) View.VISIBLE else View.GONE } } TextSummaryWithSwitch( TextSummaryV( textId = R.string.media_volume_steps_switch, tips = "${getString(R.string.take_effect_after_reboot)}\n${getString(R.string.media_volume_steps_summary)}" ), SwitchV( "media_volume_steps_switch", dataBindingSend = mediaVolumeStepsSwitchBinding.bindingSend ) ) SeekBarWithText( "media_volume_steps", 15, 29, 15, dataBindingRecv = mediaVolumeStepsSwitchBinding.binding.getRecv(2) ) } register("scope_other", getString(R.string.scope_other), false) { TitleText(resId = R.string.scope_miuihome) TextSummaryWithSwitch( TextSummaryV( textId = R.string.home_time, tipsId = R.string.home_time_summary ), SwitchV("home_time") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.double_tap_to_sleep, tipsId = R.string.home_double_tap_to_sleep_summary ), SwitchV("double_tap_to_sleep") ) Line() TitleText(resId = R.string.scope_powerkeeper) TextSummaryWithSwitch( TextSummaryV( textId = R.string.lock_max_fps, tipsId = R.string.lock_max_fps_summary ), SwitchV("lock_max_fps") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.prevent_recovery_of_battery_optimization_white_list, tipsId = R.string.failed_after_restart ), SwitchV("prevent_recovery_of_battery_optimization_white_list") ) TextSummaryArrow( TextSummaryV( textId = R.string.battery_optimization, tipsId = R.string.battery_optimization_summary, onClickListener = { try { val intent = Intent() val comp = ComponentName( "com.android.settings", "com.android.settings.Settings\$HighPowerApplicationsActivity" ) intent.component = comp startActivity(intent) } catch (e: Exception) { Toast.makeText(activity, "启动失败,可能是不支持", Toast.LENGTH_LONG) .show() } }) ) Line() TitleText(resId = R.string.scope_securitycenter) TextSummaryWithSwitch( TextSummaryV( textId = R.string.skip_waiting_time, tipsId = R.string.skip_waiting_time_summary ), SwitchV("skip_waiting_time") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.remove_open_app_confirmation_popup, tipsId = R.string.remove_open_app_confirmation_popup_summary ), SwitchV("remove_open_app_confirmation_popup") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.lock_one_hundred, tipsId = R.string.lock_one_hundred_summary ), SwitchV("lock_one_hundred") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.remove_macro_blacklist ), SwitchV("remove_macro_blacklist") ) TextSummaryWithSwitch( TextSummaryV( textId = R.string.battery_life_function ), SwitchV("battery_life_function") ) Line() TitleText(resId = R.string.scope_mediaeditor) TextSummaryWithSwitch( TextSummaryV( textId = R.string.unlock_unlimited_cropping, tipsId = R.string.unlock_unlimited_cropping_summary ), SwitchV("unlock_unlimited_cropping") ) Line() TitleText(resId = R.string.updater) TextSummaryWithSwitch( TextSummaryV( textId = R.string.remove_ota_validate, tipsId = R.string.remove_ota_validate_summary ), SwitchV("remove_ota_validate") ) Line() TitleText(resId = R.string.settings) TextSummaryWithSwitch( TextSummaryV( textId = R.string.show_notification_importance, tipsId = R.string.show_notification_importance_summary ), SwitchV("show_notification_importance") ) Line() TitleText(resId = R.string.cast) TextSummaryWithSwitch( TextSummaryV( textId = R.string.force_support_send_app, ), SwitchV("force_support_send_app") ) Line() TitleText(resId = R.string.rear_display) TextSummaryWithSwitch( TextSummaryV( textId = R.string.show_weather_main_switch, ), SwitchV("rear_show_weather") ) Line() TitleText(resId = R.string.remove_ad) TextSummaryWithSwitch( TextSummaryV( textId = R.string.remove_thememanager_ads ), SwitchV("remove_thememanager_ads") ) } register("hide_icon", getString(R.string.hide_icon), false) { TitleText(resId = R.string.status_bar_icon) TextWithSwitch( TextV(resId = R.string.hide_battery_icon), SwitchV("hide_battery_icon") ) TextWithSwitch( TextV(resId = R.string.hide_battery_charging_icon), SwitchV("hide_battery_charging_icon") ) TextWithSwitch( TextV(resId = R.string.hide_gps_icon), SwitchV("hide_gps_icon") ) TextWithSwitch( TextV(resId = R.string.hide_bluetooth_icon), SwitchV("hide_bluetooth_icon") ) TextWithSwitch( TextV(resId = R.string.hide_bluetooth_battery_icon), SwitchV("hide_bluetooth_battery_icon") ) TextWithSwitch( TextV(resId = R.string.hide_small_hd_icon), SwitchV("hide_small_hd_icon") ) TextWithSwitch( TextV(resId = R.string.hide_big_hd_icon), SwitchV("hide_big_hd_icon") ) TextWithSwitch( TextV(resId = R.string.hide_hd_no_service_icon), SwitchV("hide_hd_no_service_icon") ) TextWithSwitch( TextV(resId = R.string.hide_no_sim_icon), SwitchV("hide_no_sim_icon") ) TextWithSwitch( TextV(resId = R.string.hide_sim_one_icon), SwitchV("hide_sim_one_icon") ) TextWithSwitch( TextV(resId = R.string.hide_sim_two_icon), SwitchV("hide_sim_two_icon") ) TextWithSwitch( TextV(resId = R.string.hide_mobile_activity_icon), SwitchV("hide_mobile_activity_icon") ) TextWithSwitch( TextV(resId = R.string.hide_mobile_type_icon), SwitchV("hide_mobile_type_icon") ) TextWithSwitch( TextV(resId = R.string.hide_wifi_icon), SwitchV("hide_wifi_icon") ) TextWithSwitch( TextV(resId = R.string.hide_wifi_activity_icon), SwitchV("hide_wifi_activity_icon") ) TextWithSwitch( TextV(resId = R.string.hide_wifi_standard_icon), SwitchV("hide_wifi_standard_icon") ) TextWithSwitch( TextV(resId = R.string.hide_slave_wifi_icon), SwitchV("hide_slave_wifi_icon") ) TextWithSwitch( TextV(resId = R.string.hide_hotspot_icon), SwitchV("hide_hotspot_icon") ) TextWithSwitch( TextV(resId = R.string.hide_vpn_icon), SwitchV("hide_vpn_icon") ) TextWithSwitch( TextV(resId = R.string.hide_airplane_icon), SwitchV("hide_airplane_icon") ) TextWithSwitch( TextV(resId = R.string.hide_alarm_icon), SwitchV("hide_alarm_icon") ) TextWithSwitch( TextV(resId = R.string.hide_headset_icon), SwitchV("hide_headset_icon") ) TextWithSwitch( TextV(resId = R.string.hide_volume_icon), SwitchV("hide_volume_icon") ) TextWithSwitch( TextV(resId = R.string.hide_zen_icon), SwitchV("hide_zen_icon") ) } register("about_module", getString(R.string.about_module), true) { Author( authorHead = getDrawable(R.drawable.app_icon)!!, authorName = getString(R.string.app_name), authorTips = BuildConfig.VERSION_NAME + "(" + BuildConfig.BUILD_TYPE + ")", onClick = { try { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse("coolmarket://apk/com.lt2333.simplicitytools") ) ) Toast.makeText(activity, "恳求一个五星好评,Thanks♪(・ω・)ノ", Toast.LENGTH_LONG) .show() } catch (e: Exception) { val uri = Uri.parse("https://github.com/Xposed-Modules-Repo/com.lt2333.simplicitytools/releases") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent) } }) Line() TitleText(text = getString(R.string.developer)) Author( authorHead = getDrawable(R.drawable.lt)!!, authorName = "乌堆小透明", authorTips = "LittleTurtle2333", onClick = { try { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse("coolmarket://u/883441") ) ) Toast.makeText(activity, "乌堆小透明:靓仔,点个关注吧!", Toast.LENGTH_SHORT) .show() } catch (e: Exception) { Toast.makeText(activity, "本机未安装酷安应用", Toast.LENGTH_SHORT).show() val uri = Uri.parse("http://www.coolapk.com/u/883441") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent) } }) Line() TitleText(text = getString(R.string.thank_list)) TextSummaryArrow( TextSummaryV( textId = R.string.contributor_list, onClickListener = { try { val uri = Uri.parse("https://github.com/LittleTurtle2333/SimplicityTools/graphs/contributors") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent) } catch (e: Exception) { Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show() } }) ) TextSummaryArrow( TextSummaryV( textId = R.string.third_party_open_source_statement, onClickListener = { try { val uri = Uri.parse("https://github.com/LittleTurtle2333/SimplicityTools#%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BC%80%E6%BA%90%E5%BC%95%E7%94%A8") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent) } catch (e: Exception) { Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show() } }) ) Line() TitleText(text = getString(R.string.discussions)) TextSummaryArrow(TextSummaryV(textId = R.string.qq_channel, onClickListener = { try { val uri = Uri.parse("https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&inviteCode=29Mu64&from=246610&biz=ka") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent) } catch (e: Exception) { Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show() } })) TextSummaryArrow( TextSummaryV( textId = R.string.tg_channel, tipsId = R.string.tg_channel_summary, onClickListener = { try { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse("tg://resolve?domain=simplicityrom") ) ) } catch (e: Exception) { Toast.makeText(activity, "本机未安装Telegram应用", Toast.LENGTH_SHORT) .show() val uri = Uri.parse("https://t.me/simplicityrom") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent) } }) ) TextSummaryArrow( TextSummaryV( textId = R.string.issues, tipsId = R.string.issues_url, onClickListener = { try { val uri = Uri.parse("https://github.com/LittleTurtle2333/SimplicityTools/issues") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent) } catch (e: Exception) { Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show() } }) ) Line() TitleText(getString(R.string.other)) TextSummaryArrow( TextSummaryV( textId = R.string.app_coolapk_url, tipsId = R.string.app_coolapk_url_summary, onClickListener = { try { startActivity( Intent( Intent.ACTION_VIEW, Uri.parse("coolmarket://apk/com.lt2333.simplicitytools") ) ) Toast.makeText( activity, "恳求一个五星好评,Thanks♪(・ω・)ノ", Toast.LENGTH_LONG ).show() } catch (e: Exception) { Toast.makeText(activity, "本机未安装酷安应用", Toast.LENGTH_SHORT) .show() } }) ) TextSummaryArrow( TextSummaryV( textId = R.string.opensource, tipsId = R.string.github_url, onClickListener = { try { val uri = Uri.parse("https://github.com/LittleTurtle2333/SimplicityTools") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent) } catch (e: Exception) { Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show() } }) ) TextSummaryArrow( TextSummaryV( textId = R.string.participate_in_translation, tipsId = R.string.participate_in_translation_summary, onClickListener = { try { val uri = Uri.parse("https://crowdin.com/project/simplicitytools") val intent = Intent(Intent.ACTION_VIEW, uri) startActivity(intent) } catch (e: Exception) { Toast.makeText(activity, "访问失败", Toast.LENGTH_SHORT).show() } }) ) } registerMenu(getString(R.string.menu)) { TextSummaryArrow( TextSummaryV(textId = R.string.reboot, onClickListener = { MIUIDialog(activity) { setTitle(R.string.Tips) setMessage(R.string.are_you_sure_reboot) setLButton(R.string.cancel) { dismiss() } setRButton(R.string.Done) { val command = arrayOf("reboot") ShellUtils.execCommand(command, true) dismiss() } }.show() }) ) TextSummaryArrow( TextSummaryV(textId = R.string.reboot_host, onClickListener = { MIUIDialog(activity) { setTitle(R.string.Tips) setMessage(R.string.are_you_sure_reboot_scope) setLButton(R.string.cancel) { dismiss() } setRButton(R.string.Done) { val command = arrayOf( "killall com.android.systemui", "killall com.miui.home", "killall com.miui.securitycenter ", "killall com.android.settings", "killall com.miui.powerkeeper", "killall com.android.updater", "killall com.miui.mediaeditor", "killall com.miui.screenshot", "killall com.milink.service", "killall com.xiaomi.misubscreenui", ) ShellUtils.execCommand(command, true) dismiss() } }.show() }) ) } } } }