feat(alarmas): replace one-line reliability button with full diagnostics screen

Surface all six DiagnosticoAlarmasAndroid fields instead of three: the
battery-optimization exemption and native pending-alarm count were
already collected but silently dropped by the old widget. Each failing
signal now offers a "Fix this" action that opens the right system
settings screen (exact alarms, notifications, full-screen intent,
battery optimization), guarded by SDK level and never crashing when a
ROM lacks that screen. Manufacturers known for aggressive background
killing (Xiaomi/Redmi/POCO, Huawei, Oppo, Vivo, OnePlus, Samsung) get
an honest explanation that Autostart must be enabled manually, since
there is no API to detect or grant it.

Notifications now deep-links straight to
ACTION_APP_NOTIFICATION_SETTINGS via a new openNotificationSettings
native method, instead of reusing the runtime permission popup meant
for first-time alarm creation.

New copy is added to all 13 ARB locales with real per-language
translations (not Spanish copies), verified by the ARB parity and
anti-copy tests plus the corruption scanner.
This commit is contained in:
2026-07-31 19:10:52 +02:00
parent ef9705a30e
commit 049ab78acb
35 changed files with 2262 additions and 79 deletions
+72
View File
@@ -1714,4 +1714,76 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get alarmCardVacationPausedBadge => 'In pausa per le vacanze';
@override
String get alarmDiagnosticsExactAlarmsTitle =>
'Programmazione sveglia esatta';
@override
String get alarmDiagnosticsExactAlarmsHint =>
'Permette alla sveglia di suonare esattamente al minuto impostato, anche a telefono in stand-by.';
@override
String get alarmDiagnosticsNotificationsTitle => 'Notifiche';
@override
String get alarmDiagnosticsNotificationsHint =>
'Necessarie per mostrare la sveglia e l\'avviso anticipato.';
@override
String get alarmDiagnosticsFullScreenTitle =>
'Visualizzazione a schermo intero della sveglia';
@override
String get alarmDiagnosticsFullScreenHint =>
'Permette alla schermata della sveglia di apparire automaticamente, anche a telefono bloccato.';
@override
String get alarmDiagnosticsBatteryTitle => 'Ottimizzazione della batteria';
@override
String get alarmDiagnosticsBatteryHint =>
'Impedisce al sistema di chiudere PluriWave in background, così la sveglia può comunque suonare.';
@override
String get alarmDiagnosticsNativeCountTitle =>
'Sveglie registrate su Android';
@override
String alarmDiagnosticsNativeCountValue(int count) {
return 'Attualmente registrate: $count';
}
@override
String get alarmDiagnosticsNativeCountAttentionHint =>
'Hai una sveglia attiva, ma nessuna è ancora registrata nel sistema. Riapri PluriWave, oppure risolvi prima i punti sopra.';
@override
String get alarmDiagnosticsManufacturerLabel => 'Produttore';
@override
String get alarmDiagnosticsSdkLabel => 'Versione di Android (SDK)';
@override
String get alarmDiagnosticsNeedsAttentionStatus => 'Richiede attenzione';
@override
String get alarmDiagnosticsAutostartTitle =>
'Un altro passaggio manuale su questo telefono';
@override
String alarmDiagnosticsAutostartBody(String manufacturer) {
return 'I telefoni $manufacturer spesso chiudono le app in background per risparmiare batteria. Non esiste un\'impostazione che PluriWave possa attivare da solo: devi attivare tu stesso l\'Avvio automatico (a volte chiamato \"Autostart\" o \"Attività in background\") per PluriWave. Cercalo nelle Impostazioni, sotto App o Batteria, oppure nell\'app Sicurezza del telefono.';
}
@override
String get alarmDiagnosticsFixAction => 'Risolvi';
@override
String get alarmDiagnosticsIntentUnavailable =>
'Non è stato possibile aprire questa schermata delle impostazioni su questo telefono. Prova a cercarla manualmente nelle Impostazioni.';
@override
String get alarmDiagnosticsUnavailableHint =>
'Non abbiamo ancora potuto controllare le impostazioni della sveglia.';
}