@@ -225,6 +225,46 @@ class MainActivity : Activity() {
225225 .apply ()
226226 }
227227
228+ private fun getSavedChargingFullModeProfile (): GameModeProfile {
229+ fun get (prefix : String , key : String ) = " ${prefix} _${key} "
230+ val prefix = " charging_full_mode"
231+
232+ return GameModeProfile (
233+ fanEnabled = prefs().getBoolean(get(prefix, " fan_enabled" ), false ),
234+ fanLevel = prefs().getInt(get(prefix, " fan_level" ), 0 ),
235+ pumpEnabled = false ,
236+ pumpProfile = " quick" ,
237+ fanLedEnabled = prefs().getBoolean(get(prefix, " fan_led_enabled" ), true ),
238+ fanLedEffect = prefs().getString(get(prefix, " fan_led_effect" ), " breathe" ) ? : " breathe" ,
239+ fanLedColor = prefs().getInt(get(prefix, " fan_led_color" ), 2 ),
240+ logoLedEnabled = prefs().getBoolean(get(prefix, " logo_led_enabled" ), true ),
241+ logoLedEffect = prefs().getString(get(prefix, " logo_led_effect" ), " breathe" ) ? : " breathe" ,
242+ logoLedColor = prefs().getInt(get(prefix, " logo_led_color" ), 2 ),
243+ shoulderLedEnabled = prefs().getBoolean(get(prefix, " shoulder_led_enabled" ), true ),
244+ shoulderLedEffect = prefs().getString(get(prefix, " shoulder_led_effect" ), " breathe" ) ? : " breathe" ,
245+ shoulderLedColor = prefs().getInt(get(prefix, " shoulder_led_color" ), 2 )
246+ )
247+ }
248+
249+ private fun saveChargingFullModeProfile (profile : GameModeProfile ) {
250+ val prefix = " charging_full_mode"
251+ fun key (name : String ) = " ${prefix} _${name} "
252+
253+ prefs().edit()
254+ .putBoolean(key(" fan_enabled" ), profile.fanEnabled)
255+ .putInt(key(" fan_level" ), profile.fanLevel)
256+ .putBoolean(key(" fan_led_enabled" ), profile.fanLedEnabled)
257+ .putString(key(" fan_led_effect" ), profile.fanLedEffect)
258+ .putInt(key(" fan_led_color" ), profile.fanLedColor)
259+ .putBoolean(key(" logo_led_enabled" ), profile.logoLedEnabled)
260+ .putString(key(" logo_led_effect" ), profile.logoLedEffect)
261+ .putInt(key(" logo_led_color" ), profile.logoLedColor)
262+ .putBoolean(key(" shoulder_led_enabled" ), profile.shoulderLedEnabled)
263+ .putString(key(" shoulder_led_effect" ), profile.shoulderLedEffect)
264+ .putInt(key(" shoulder_led_color" ), profile.shoulderLedColor)
265+ .apply ()
266+ }
267+
228268 private fun chargingModeProfileSummary (): String {
229269 val p = getSavedChargingModeProfile()
230270 val fanLabel = if (p.fanEnabled) {
@@ -2606,13 +2646,20 @@ addView(row(configureTriggersBtn, trigEnableBtn))
26062646 chargingModeSummaryText.text = chargingModeProfileSummary()
26072647 }
26082648
2649+ val editChargingFullProfileBtn = actionButton(" EDIT FULL CHARGE PROFILE" ) {
2650+ showChargingFullModeProfileDialog()
2651+ chargingModeSummaryText.text = chargingModeProfileSummary()
2652+ }
2653+
26092654 val chargingModeCard = sectionPanel().apply {
26102655 addView(sectionHeader(" ⚡" , " CHARGING MODE" ))
26112656 addView(bodyText(" Applies a dedicated LED and fan profile while charging. Call Mode is the only mode allowed to override it." ))
26122657 addView(chargingModeSummaryText)
26132658 addView(chargingModeRow)
26142659 addView(space(dp(10 )))
26152660 addView(singleRow(editChargingProfileBtn))
2661+ addView(space(dp(8 )))
2662+ addView(singleRow(editChargingFullProfileBtn))
26162663 }
26172664
26182665 container.addView(chargingModeCard)
@@ -2908,6 +2955,33 @@ addView(row(configureTriggersBtn, trigEnableBtn))
29082955 }
29092956 }
29102957
2958+ private fun showChargingFullModeProfileDialog () {
2959+ GameModeUi .showGameModeProfileDialog(
2960+ activity = this ,
2961+ current = getSavedChargingFullModeProfile(),
2962+ deps = GameModeUi .Deps (
2963+ textPrimary = textPrimary,
2964+ textSecondary = textSecondary,
2965+ panelColor = panelColor,
2966+ borderColor = borderColor,
2967+ panelPressed = panelPressed,
2968+ accent = accent,
2969+ typeface = typeface,
2970+ dp = { value -> dp(value) },
2971+ roundedBg = { fill, stroke, radius -> roundedBg(fill, stroke, radius) },
2972+ roundedFill = { color, radius -> roundedFill(color, radius) },
2973+ filterChip = { label, selected, onClick -> filterChip(label, selected, onClick) },
2974+ space = { value -> space(value) },
2975+ colorDotDrawable = { hex, selected -> colorDotDrawable(hex, selected) },
2976+ colorDotGeneric = { hex, selected, onClick -> colorDotGeneric(hex, selected, onClick) },
2977+ ),
2978+ onSaveProfile = { profile ->
2979+ saveChargingFullModeProfile(profile)
2980+ startService(Intent (this , ChargingModeService ::class .java))
2981+ }
2982+ )
2983+ }
2984+
29112985 private fun showChargingModeProfileDialog () {
29122986 GameModeUi .showGameModeProfileDialog(
29132987 activity = this ,
0 commit comments