feat(alarmas): rewrite alarm editor with inline time widget

Replace the native showTimePicker dialog in the alarm editor sheet with
a giant inline HH:MM editor (drag/tap to adjust, wraps at 23:59-00:00).
Weekday circles now render unconditionally (disabled outside weekly
mode) instead of being gated behind an `if`.

The date field, fallback-station picker, and sound dropdown are not
dropped: per resolution 3 they move into a collapsed "Advanced" section
so the mockup's weekday-circles-only layout does not lose capability.
Volume/fade-in sliders get a cosmetic type-scale restyle only.

size:exception: 993 changed lines (891+/102-) against the 500-650
forecast - lib/ production code alone is 429 lines, within band; new
test files and 13 regenerated l10n/gen files account for the rest, the
same pattern every prior work unit in this branch has hit.
This commit is contained in:
2026-07-29 11:43:15 +02:00
parent 332c2192cd
commit a2121d84bd
22 changed files with 935 additions and 115 deletions
+24
View File
@@ -2564,6 +2564,30 @@ abstract class AppLocalizations {
/// **'Modo vacaciones'**
String get vacationIconLabel;
/// No description provided for @alarmAdvancedSectionTitle.
///
/// In es, this message translates to:
/// **'Avanzado'**
String get alarmAdvancedSectionTitle;
/// No description provided for @alarmInlineHourLabel.
///
/// In es, this message translates to:
/// **'Hora'**
String get alarmInlineHourLabel;
/// No description provided for @alarmInlineMinuteLabel.
///
/// In es, this message translates to:
/// **'Minuto'**
String get alarmInlineMinuteLabel;
/// No description provided for @alarmVolumeRisingStatus.
///
/// In es, this message translates to:
/// **'Subiendo volumen'**
String get alarmVolumeRisingStatus;
/// No description provided for @streamUrlHint.
///
/// In es, this message translates to:
+12
View File
@@ -1410,6 +1410,18 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get vacationIconLabel => 'وضع الإجازة';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1417,6 +1417,18 @@ class AppLocalizationsBn extends AppLocalizations {
@override
String get vacationIconLabel => 'ছুটির মোড';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1427,6 +1427,18 @@ class AppLocalizationsDe extends AppLocalizations {
@override
String get vacationIconLabel => 'Urlaubsmodus';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1411,6 +1411,18 @@ class AppLocalizationsEn extends AppLocalizations {
@override
String get vacationIconLabel => 'Vacation mode';
@override
String get alarmAdvancedSectionTitle => 'Advanced';
@override
String get alarmInlineHourLabel => 'Hour';
@override
String get alarmInlineMinuteLabel => 'Minute';
@override
String get alarmVolumeRisingStatus => 'Turning up the volume';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1422,6 +1422,18 @@ class AppLocalizationsEs extends AppLocalizations {
@override
String get vacationIconLabel => 'Modo vacaciones';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1432,6 +1432,18 @@ class AppLocalizationsFr extends AppLocalizations {
@override
String get vacationIconLabel => 'Mode vacances';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1416,6 +1416,18 @@ class AppLocalizationsHi extends AppLocalizations {
@override
String get vacationIconLabel => 'अवकाश मोड';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1421,6 +1421,18 @@ class AppLocalizationsId extends AppLocalizations {
@override
String get vacationIconLabel => 'Mode liburan';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1427,6 +1427,18 @@ class AppLocalizationsIt extends AppLocalizations {
@override
String get vacationIconLabel => 'Modalità vacanza';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1376,6 +1376,18 @@ class AppLocalizationsJa extends AppLocalizations {
@override
String get vacationIconLabel => '休暇モード';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1419,6 +1419,18 @@ class AppLocalizationsPt extends AppLocalizations {
@override
String get vacationIconLabel => 'Modo férias';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1423,6 +1423,18 @@ class AppLocalizationsRu extends AppLocalizations {
@override
String get vacationIconLabel => 'Режим отпуска';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';
+12
View File
@@ -1371,6 +1371,18 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get vacationIconLabel => '假期模式';
@override
String get alarmAdvancedSectionTitle => 'Avanzado';
@override
String get alarmInlineHourLabel => 'Hora';
@override
String get alarmInlineMinuteLabel => 'Minuto';
@override
String get alarmVolumeRisingStatus => 'Subiendo volumen';
@override
String get streamUrlHint => 'https://stream.example.com:8000/radio';