Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,15 @@ class SettingsTranslationKeys {
static const String backupImportFailedError = 'settings.backup.import_failed';
static const String backupInvalidFormatError = 'settings.backup.invalid_format';
static const String backupCorruptedError = 'settings.backup.corrupted';

// Sound Settings
static const String soundTitle = 'settings.sound.title';
static const String soundSubtitle = 'settings.sound.subtitle';
static const String soundEnabled = 'settings.sound.enabled';
static const String taskCompletionSound = 'settings.sound.task_completion';
static const String habitCompletionSound = 'settings.sound.habit_completion';
static const String timerControlSound = 'settings.sound.timer_control';
static const String timerAlarmSound = 'settings.sound.timer_alarm';
static const String enableSoundError = 'settings.sound.enable_error';
static const String disableSoundError = 'settings.sound.disable_error';
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import 'package:flutter/widgets.dart' hide Container;
import 'package:home_widget/home_widget.dart';
import 'package:mediatr/mediatr.dart';
import 'package:acore/acore.dart';
import 'package:whph/presentation/ui/shared/services/abstraction/i_sound_manager_service.dart';
import 'package:whph/core/shared/utils/logger.dart';
import '../models/widget_data.dart';
import 'package:whph/core/application/features/tasks/queries/get_list_tasks_query.dart';
Expand All @@ -20,7 +21,6 @@ import 'package:whph/presentation/ui/shared/services/filter_settings_manager.dar
import 'package:whph/presentation/ui/shared/constants/setting_keys.dart';
import 'package:whph/presentation/ui/features/calendar/models/today_page_list_option_settings.dart';
import 'package:whph/presentation/ui/shared/services/app_bootstrap_service.dart';
import 'package:whph/presentation/ui/shared/constants/shared_sounds.dart';

/// Background callback function for HomeWidget interactive widgets
/// This function is called when a widget is clicked and performs the actual completion logic
Expand Down Expand Up @@ -142,8 +142,8 @@ Future<void> _backgroundToggleTask(Mediator mediator, IContainer container, Stri
// Play completion sound if task was completed
if (newCompletedAt != null) {
try {
final soundPlayer = container.resolve<ISoundPlayer>();
soundPlayer.play(SharedSounds.done, volume: 1.0);
final soundManagerService = container.resolve<ISoundManagerService>();
soundManagerService.playTaskCompletion();
} catch (e) {
Logger.warning('Error playing completion sound: $e');
// Don't rethrow - sound failure shouldn't break the task completion
Expand Down Expand Up @@ -194,8 +194,8 @@ Future<void> _backgroundToggleHabit(Mediator mediator, IContainer container, Str

// Play completion sound
try {
final soundPlayer = container.resolve<ISoundPlayer>();
soundPlayer.play(SharedSounds.done, volume: 1.0);
final soundManagerService = container.resolve<ISoundManagerService>();
soundManagerService.playHabitCompletion();
} catch (e) {
Logger.warning('Error playing completion sound: $e');
}
Expand Down Expand Up @@ -224,8 +224,8 @@ Future<void> _backgroundToggleHabit(Mediator mediator, IContainer container, Str

// Play completion sound
try {
final soundPlayer = container.resolve<ISoundPlayer>();
soundPlayer.play(SharedSounds.done, volume: 1.0);
final soundManagerService = container.resolve<ISoundManagerService>();
soundManagerService.playHabitCompletion();
} catch (e) {
Logger.warning('Error playing completion sound: $e');
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:whph/core/application/features/habits/queries/get_list_habit_records_query.dart';
import 'package:acore/acore.dart' hide Container;
import 'package:whph/presentation/ui/shared/services/abstraction/i_sound_manager_service.dart';
import 'package:whph/main.dart';
import 'package:whph/presentation/ui/features/habits/services/habits_service.dart';
import 'package:whph/presentation/ui/shared/constants/app_theme.dart';
import 'package:whph/presentation/ui/shared/constants/shared_sounds.dart';
import 'package:whph/presentation/ui/features/habits/constants/habit_ui_constants.dart';
import 'package:whph/presentation/ui/shared/constants/shared_translation_keys.dart';
import 'package:whph/presentation/ui/shared/services/abstraction/i_translation_service.dart';
Expand Down Expand Up @@ -47,7 +47,7 @@ class HabitCalendarView extends StatefulWidget {
}

class _HabitCalendarViewState extends State<HabitCalendarView> {
final _soundPlayer = container.resolve<ISoundPlayer>();
final _soundManagerService = container.resolve<ISoundManagerService>();
final _translationService = container.resolve<ITranslationService>();
final _habitsService = container.resolve<HabitsService>();

Expand Down Expand Up @@ -250,11 +250,11 @@ class _HabitCalendarViewState extends State<HabitCalendarView> {
if (dailyCompletionCount > 0 && dailyCompletionCount >= widget.dailyTarget) {
// If daily goal is met, remove ALL records for this day (reset to 0)
await widget.onDeleteAllRecordsForDay(date);
_soundPlayer.play(SharedSounds.done, volume: 1.0);
_soundManagerService.playHabitCompletion();
} else {
// Add a new record
await widget.onCreateRecord(widget.habitId, date);
_soundPlayer.play(SharedSounds.done, volume: 1.0);
_soundManagerService.playHabitCompletion();
}
} else {
// Simple habit behavior - remove ALL records for this day
Expand All @@ -265,7 +265,7 @@ class _HabitCalendarViewState extends State<HabitCalendarView> {
} else {
// Add a new record
await widget.onCreateRecord(widget.habitId, date);
_soundPlayer.play(SharedSounds.done, volume: 1.0);
_soundManagerService.playHabitCompletion();
}
}
widget.onRecordChanged?.call();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,12 @@ import 'package:whph/core/application/features/habits/commands/toggle_habit_comp
import 'package:whph/core/application/features/habits/queries/get_list_habit_records_query.dart';
import 'package:whph/core/application/features/habits/queries/get_list_habits_query.dart';
import 'package:acore/acore.dart' as acore;
import 'package:whph/presentation/ui/shared/services/abstraction/i_sound_manager_service.dart';
import 'package:whph/main.dart';
import 'package:whph/presentation/ui/features/habits/services/habits_service.dart';
import 'package:whph/presentation/ui/features/tags/services/time_data_service.dart';
import 'package:whph/presentation/ui/shared/constants/app_theme.dart';
import 'package:whph/presentation/ui/shared/components/tag_list_widget.dart';
import 'package:whph/presentation/ui/shared/constants/shared_sounds.dart';
import 'package:whph/presentation/ui/shared/constants/shared_ui_constants.dart';
import 'package:whph/presentation/ui/shared/utils/app_theme_helper.dart';
import 'package:whph/presentation/ui/shared/utils/async_error_handler.dart';
Expand Down Expand Up @@ -47,7 +47,7 @@ class HabitCard extends StatefulWidget {

class _HabitCardState extends State<HabitCard> {
final _mediator = container.resolve<Mediator>();
final _soundPlayer = container.resolve<acore.ISoundPlayer>();
final _soundManagerService = container.resolve<ISoundManagerService>();
final _habitsService = container.resolve<HabitsService>();
final _timeDataService = container.resolve<TimeDataService>();
final _translationService = container.resolve<ITranslationService>();
Expand Down Expand Up @@ -187,7 +187,7 @@ class _HabitCardState extends State<HabitCard> {
await _refreshHabitRecords();
_habitsService.notifyHabitRecordAdded(widget.habit.id);
_timeDataService.notifyTimeDataChanged();
_soundPlayer.play(SharedSounds.done, volume: 1.0);
_soundManagerService.playHabitCompletion();
},
);
}
Expand All @@ -209,7 +209,7 @@ class _HabitCardState extends State<HabitCard> {
await _refreshHabitRecords();
_habitsService.notifyHabitRecordAdded(widget.habit.id);
_timeDataService.notifyTimeDataChanged();
_soundPlayer.play(SharedSounds.done, volume: 1.0);
_soundManagerService.playHabitCompletion();
},
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import 'dart:async';

import 'package:flutter/material.dart';
import 'package:mediatr/mediatr.dart';
import 'package:acore/acore.dart' show NumericInput, DateTimeHelper, ISoundPlayer;
import 'package:acore/acore.dart' show NumericInput, DateTimeHelper;
import 'package:whph/presentation/ui/shared/services/abstraction/i_sound_manager_service.dart';
import 'package:whph/presentation/ui/shared/components/markdown_editor.dart';
import 'package:whph/core/application/features/habits/commands/toggle_habit_completion_command.dart';
import 'package:whph/core/application/features/habits/commands/save_habit_command.dart';
Expand All @@ -26,7 +27,6 @@ import 'package:whph/presentation/ui/shared/components/detail_table.dart';
import 'package:whph/presentation/ui/shared/components/time_display.dart';
import 'package:whph/presentation/ui/shared/constants/app_theme.dart';
import 'package:whph/presentation/ui/shared/constants/shared_translation_keys.dart';
import 'package:whph/presentation/ui/shared/constants/shared_sounds.dart';
import 'package:whph/presentation/ui/shared/models/dropdown_option.dart';
import 'package:whph/presentation/ui/shared/utils/app_theme_helper.dart';
import 'package:whph/presentation/ui/shared/utils/async_error_handler.dart';
Expand Down Expand Up @@ -58,7 +58,7 @@ class _HabitDetailsContentState extends State<HabitDetailsContent> {
final _habitsService = container.resolve<HabitsService>();
final _translationService = container.resolve<ITranslationService>();
final _themeService = container.resolve<IThemeService>();
final _soundPlayer = container.resolve<ISoundPlayer>();
final _soundManagerService = container.resolve<ISoundManagerService>();

GetHabitQueryResponse? _habit;
final TextEditingController _nameController = TextEditingController();
Expand Down Expand Up @@ -373,7 +373,7 @@ class _HabitDetailsContentState extends State<HabitDetailsContent> {
_getHabitStatisticsOnly();

// Play sound feedback for record creation
_soundPlayer.play(SharedSounds.done, volume: 1.0);
_soundManagerService.playHabitCompletion();

// Notify service that a record was added to trigger statistics refresh
_habitsService.notifyHabitRecordAdded(habitId);
Expand Down
13 changes: 13 additions & 0 deletions src/lib/presentation/ui/features/settings/assets/locales/cs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,19 @@ settings:
disable_error: Selhání vypnutí notifikací
enable_error: Selhání zapnutí notifikací
title: Notifikace
sound:
title: Zvuky
subtitle: Nakonfigurujte zvuky a oznámení aplikace
enabled: Povolit zvuky
task_completion: Zvuk dokončení úkolu
habit_completion: Zvuk dokončení návyku
timer_control: Zvuk ovládání časovače
timer_alarm: Zvuk alarmu časovače
enable_error: Nepodařilo se povolit nastavení zvuku
disable_error: Nepodařilo se zakázat nastavení zvuku
sounds_disabled: Zvuky zakázány
all_sounds_enabled: Všechny zvuky povoleny
some_sounds_enabled: Některé zvuky povoleny
permissions:
app_usage:
description: Tato aplikace potřebuje oprávnění k přístupu k statistikám používání aplikací pro přesné sledování vzorců používání aplikací.
Expand Down
13 changes: 13 additions & 0 deletions src/lib/presentation/ui/features/settings/assets/locales/da.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,19 @@ settings:
disable_error: Kunne ikke deaktivere notifikationer
enable_error: Kunne ikke aktivere notifikationer
title: Notifikationer
sound:
title: Lyd
subtitle: Konfigurer app-lyde og notifikationer
enabled: Aktiver Lyde
task_completion: Opgavefuldførelse Lyd
habit_completion: Vanefuldførelse Lyd
timer_control: Timerkontrol Lyd
timer_alarm: Timeralarm Lyd
enable_error: Kunne ikke aktivere lydindstillinger
disable_error: Kunne ikke deaktivere lydindstillinger
sounds_disabled: Lyde deaktiveret
all_sounds_enabled: Alle lyde aktiveret
some_sounds_enabled: Nogle lyde aktiveret
permissions:
app_usage:
description: Denne app har brug for tilladelse til at få adgang til app-brugsstatistik for at spore dine app-brugsmønstre præcist.
Expand Down
13 changes: 13 additions & 0 deletions src/lib/presentation/ui/features/settings/assets/locales/de.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ settings:
disable_error: Benachrichtigungen konnten nicht deaktiviert werden
enable_error: Benachrichtigungen konnten nicht aktiviert werden
title: Benachrichtigungen
sound:
title: Ton
subtitle: App-Töne und Benachrichtigungen konfigurieren
enabled: Töne aktivieren
task_completion: Aufgaben-Abschluss-Ton
habit_completion: Gewohnheiten-Abschluss-Ton
timer_control: Timer-Steuerungs-Ton
timer_alarm: Timer-Alarm-Ton
enable_error: Toneinstellungen konnten nicht aktiviert werden
disable_error: Toneinstellungen konnten nicht deaktiviert werden
sounds_disabled: Töne deaktiviert
all_sounds_enabled: Alle Töne aktiviert
some_sounds_enabled: Einige Töne aktiviert
permissions:
app_usage:
description: Diese App benötigt die Berechtigung zum Zugriff auf App-Nutzungsstatistiken, um Ihre App-Nutzungsmuster genau zu verfolgen.
Expand Down
13 changes: 13 additions & 0 deletions src/lib/presentation/ui/features/settings/assets/locales/el.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,19 @@ settings:
disable_error: Αποτυχία απενεργοποίησης ειδοποιήσεων
enable_error: Αποτυχία ενεργοποίησης ειδοποιήσεων
title: Ειδοποιήσεις
sound:
title: Ήχοι
subtitle: Ρυθμίστε τους ήχους και τις ειδοποιήσεις της εφαρμογής
enabled: Ενεργοποίηση ήχων
task_completion: Ήχος ολοκλήρωσης εργασίας
habit_completion: Ήχος ολοκλήρωσης συνήθειας
timer_control: Ήχος ελέγχου χρονομέτρου
timer_alarm: Ήχος ειδοποίησης χρονομέτρου
enable_error: Αποτυχία ενεργοποίησης ρυθμίσεων ήχου
disable_error: Αποτυχία απενεργοποίησης ρυθμίσεων ήχου
sounds_disabled: Απενεργοποιημένοι ήχοι
all_sounds_enabled: Όλοι οι ήχοι ενεργοί
some_sounds_enabled: Μερικοί ήχοι ενεργοί
permissions:
app_usage:
description: Αυτή η εφαρμογή χρειάζεται άδεια για πρόσβαση σε στατιστικά χρήσης εφαρμογών για ακριβή παρακολούθηση των προτύπων χρήσης της εφαρμογής σας.
Expand Down
13 changes: 13 additions & 0 deletions src/lib/presentation/ui/features/settings/assets/locales/en.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,19 @@ settings:
disable_error: Failed to disable notifications
enable_error: Failed to enable notifications
title: Notifications
sound:
title: Sound
subtitle: Configure app sounds and notifications
enabled: Enable Sounds
task_completion: Task Completion Sound
habit_completion: Habit Completion Sound
timer_control: Timer Control Sound
timer_alarm: Timer Alarm Sound
enable_error: Failed to enable sound settings
disable_error: Failed to disable sound settings
sounds_disabled: Sounds disabled
all_sounds_enabled: All sounds enabled
some_sounds_enabled: Some sounds enabled
permissions:
app_usage:
description: This app needs permission to access app usage statistics to track your app usage patterns accurately.
Expand Down
13 changes: 13 additions & 0 deletions src/lib/presentation/ui/features/settings/assets/locales/es.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ settings:
disable_error: No se pudieron desactivar las notificaciones
enable_error: No se pudieron activar las notificaciones
title: Notificaciones
sound:
title: Sonido
subtitle: Configurar sonidos y notificaciones de la aplicación
enabled: Activar Sonidos
task_completion: Sonido de Finalización de Tarea
habit_completion: Sonido de Finalización de Hábito
timer_control: Sonido de Control de Temporizador
timer_alarm: Sonido de Alarma de Temporizador
enable_error: No se pudieron activar las configuraciones de sonido
disable_error: No se pudieron desactivar las configuraciones de sonido
sounds_disabled: Sonidos desactivados
all_sounds_enabled: Todos los sonidos activados
some_sounds_enabled: Algunos sonidos activados
permissions:
app_usage:
description: Esta aplicación necesita permiso para acceder a las estadísticas de uso de aplicaciones para rastrear tus patrones de uso de aplicaciones con precisión.
Expand Down
13 changes: 13 additions & 0 deletions src/lib/presentation/ui/features/settings/assets/locales/fi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,19 @@ settings:
disable_error: Ilmoitusten poistaminen käytöstä epäonnistui
enable_error: Ilmoitusten käyttöönotto epäonnistui
title: Ilmoitukset
sound:
title: Äänet
subtitle: Määritä sovelluksen äänet ja ilmoitukset
enabled: Ota äänet käyttöön
task_completion: Tehtävän suoritusääni
habit_completion: Tottumuksen suoritusääni
timer_control: Ajastimen ohjausääni
timer_alarm: Ajastimen hälytysääni
enable_error: Ääniasetusten käyttöönotto epäonnistui
disable_error: Ääniasetusten poistaminen käytöstä epäonnistui
sounds_disabled: Äänet pois käytöstä
all_sounds_enabled: Kaikki äänet käytössä
some_sounds_enabled: Osa äänistä käytössä
permissions:
app_usage:
description: Tämä sovellus tarvitsee luvan sovelluksen käyttötilastoihin pääsyyn sovelluksen käyttökuvioiden tarkka seuraamiseksi.
Expand Down
13 changes: 13 additions & 0 deletions src/lib/presentation/ui/features/settings/assets/locales/fr.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,19 @@ settings:
disable_error: Impossible de désactiver les notifications
enable_error: Impossible d'activer les notifications
title: Notifications
sound:
title: Son
subtitle: Configurer les sons et notifications de l'application
enabled: Activer les Sons
task_completion: Son de Fin de Tâche
habit_completion: Son de Fin d'Habitude
timer_control: Son de Contrôle de Minuterie
timer_alarm: Son d'Alarme de Minuterie
enable_error: Impossible d'activer les paramètres sonores
disable_error: Impossible de désactiver les paramètres sonores
sounds_disabled: Sons désactivés
all_sounds_enabled: Tous les sons activés
some_sounds_enabled: Certains sons activés
permissions:
app_usage:
description: Cette application a besoin de la permission d'accéder aux statistiques d'utilisation des applications pour suivre précisément vos modèles d'utilisation d'applications.
Expand Down
13 changes: 13 additions & 0 deletions src/lib/presentation/ui/features/settings/assets/locales/it.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,19 @@ settings:
disable_error: Impossibile disabilitare le notifiche
enable_error: Impossibile abilitare le notifiche
title: Notifiche
sound:
title: Suono
subtitle: Configura suoni e notifiche dell'applicazione
enabled: Abilita Suoni
task_completion: Suono Completamento Attività
habit_completion: Suono Completamento Abitudine
timer_control: Suono Controllo Timer
timer_alarm: Suono Allarme Timer
enable_error: Impossibile abilitare le impostazioni audio
disable_error: Impossibile disabilitare le impostazioni audio
sounds_disabled: Suoni disattivati
all_sounds_enabled: Tutti i suoni attivati
some_sounds_enabled: Alcuni suoni attivati
permissions:
app_usage:
description: Questa app ha bisogno del permesso per accedere alle statistiche di utilizzo app per tracciare accuratamente i tuoi pattern di utilizzo app.
Expand Down
Loading