|
| 1 | +package com.mg4.control.profile |
| 2 | + |
| 3 | +import android.content.Context |
| 4 | +import com.mg4.control.debug.AppLogger |
| 5 | + |
| 6 | +/** |
| 7 | + * Passage en READY : ce que devient un profil choisi à la main. |
| 8 | + * |
| 9 | + * Par défaut il est RÉAPPLIQUÉ à chaque passage en READY, jusqu'à l'extinction de la voiture — |
| 10 | + * c'est le respect du choix explicite de l'utilisateur (voir [ProfileApplier.lastManualProfileId]). |
| 11 | + * |
| 12 | + * L'option « Revenir au profil par défaut à chaque passage en READY » (Réglages avancés) le fait |
| 13 | + * OUBLIER. La chaîne habituelle reprend alors la main, sans rien changer à son ordre : profil lié |
| 14 | + * à la température, puis au téléphone Bluetooth, puis profil par défaut. Demande d'un utilisateur |
| 15 | + * qui voulait retrouver son profil par défaut après chaque arrêt, même court. |
| 16 | + */ |
| 17 | +object ReadyProfilePolicy { |
| 18 | + |
| 19 | + private const val TAG = "MG4_PROFILE" |
| 20 | + |
| 21 | + /** Même fichier que les autres réglages avancés. */ |
| 22 | + private const val PREFS = "mg4_settings" |
| 23 | + |
| 24 | + /** Défaut false : le comportement d'origine ne change pour personne. */ |
| 25 | + const val KEY = "ready_back_to_default" |
| 26 | + |
| 27 | + fun isEnabled(ctx: Context?): Boolean = |
| 28 | + ctx?.getSharedPreferences(PREFS, Context.MODE_PRIVATE)?.getBoolean(KEY, false) ?: false |
| 29 | + |
| 30 | + fun setEnabled(ctx: Context, actif: Boolean) { |
| 31 | + ctx.getSharedPreferences(PREFS, Context.MODE_PRIVATE).edit().putBoolean(KEY, actif).apply() |
| 32 | + AppLogger.i(TAG, "Retour au profil par défaut à chaque READY : ${if (actif) "activé" else "désactivé"}") |
| 33 | + } |
| 34 | + |
| 35 | + // ── La règle, sans Android ─────────────────────────────────────────────── |
| 36 | + |
| 37 | + /** |
| 38 | + * Profil choisi à la main à réappliquer au passage en READY, ou `null` quand c'est la chaîne |
| 39 | + * automatique qui décide (température, Bluetooth, profil par défaut). |
| 40 | + */ |
| 41 | + fun manualToReapply(manualId: String?, backToDefault: Boolean): String? = |
| 42 | + if (backToDefault) null else manualId |
| 43 | + |
| 44 | + /** |
| 45 | + * Vrai s'il faut OUBLIER le choix manuel, pas seulement l'écarter : resté en mémoire, il |
| 46 | + * reviendrait au READY suivant si l'option était décochée entre-temps. |
| 47 | + */ |
| 48 | + fun forgetsManual(manualId: String?, backToDefault: Boolean): Boolean = |
| 49 | + backToDefault && manualId != null |
| 50 | +} |
0 commit comments