M image/system_a/data/lang/Deutsch.json => image/system_a/data/lang/Deutsch.json +3 -1
@@ 90,7 90,9 @@
"app_bell_settings_alarm_settings_snooze_chime_volume": "Lautst\u00e4rke",
"app_bell_settings_alarm_settings_snooze_length": "Schlummerl\u00e4nge",
"app_bell_settings_alarm_settings_title": "Alarmeinstellungen",
- "app_bell_settings_alarm_settings_tone": "Alarmton",
+ "app_bell_settings_alarm_settings_chime": "Hauptalarmton",
+ "app_bell_settings_alarm_settings_sounds": "T\u00f6ne",
+ "app_bell_settings_alarm_settings_custom_sounds": "Benutzerdefinierte T\u00f6ne",
"app_bell_settings_alarm_settings_volume": "Alarmlautst\u00e4rke",
"app_bell_settings_bedtime_settings_tone": "Klang",
"app_bell_settings_bedtime_settings_volume": "<text>Lautst\u00e4rke</text>",
M image/system_a/data/lang/English.json => image/system_a/data/lang/English.json +3 -1
@@ 124,7 124,9 @@
"app_bell_settings_alarm_settings_snooze_chime_volume": "Snooze chime volume",
"app_bell_settings_alarm_settings_snooze_length": "Snooze length",
"app_bell_settings_alarm_settings_title": "Alarm settings",
- "app_bell_settings_alarm_settings_tone": "Main alarm tone",
+ "app_bell_settings_alarm_settings_chime": "Main alarm chime",
+ "app_bell_settings_alarm_settings_sounds": "Sounds",
+ "app_bell_settings_alarm_settings_custom_sounds": "Custom sounds",
"app_bell_settings_alarm_settings_volume": "Main alarm volume",
"app_bell_settings_bedtime_settings_tone": "Bedtime chime",
"app_bell_settings_bedtime_settings_volume": "Bedtime volume",
M image/system_a/data/lang/Espanol.json => image/system_a/data/lang/Espanol.json +3 -1
@@ 89,7 89,9 @@
"app_bell_settings_alarm_settings_snooze_chime_volume": "Volumen",
"app_bell_settings_alarm_settings_snooze_length": "Duraci\u00f3n de Repetici\u00f3n",
"app_bell_settings_alarm_settings_title": "Ajustes de alarma",
- "app_bell_settings_alarm_settings_tone": "Tono de alarma",
+ "app_bell_settings_alarm_settings_chime": "Timbre de alarma principal",
+ "app_bell_settings_alarm_settings_sounds": "Sonidos",
+ "app_bell_settings_alarm_settings_custom_sounds": "Sonidos personalizados",
"app_bell_settings_alarm_settings_volume": "Volumen de alarma",
"app_bell_settings_bedtime_settings_tone": "Hora de dormir",
"app_bell_settings_bedtime_settings_volume": "Volumen",
M image/system_a/data/lang/Francais.json => image/system_a/data/lang/Francais.json +3 -1
@@ 91,7 91,9 @@
"app_bell_settings_alarm_settings_snooze_chime_volume": "Volume",
"app_bell_settings_alarm_settings_snooze_length": "Dur\u00e9e du snooze",
"app_bell_settings_alarm_settings_title": "Alarme",
- "app_bell_settings_alarm_settings_tone": "M\u00e9lodie de r\u00e9veil",
+ "app_bell_settings_alarm_settings_chime": "Sonnerie de l'alarme principale",
+ "app_bell_settings_alarm_settings_sounds": "Sons",
+ "app_bell_settings_alarm_settings_custom_sounds": "Sons personnalis\u00e9s",
"app_bell_settings_alarm_settings_volume": "Volume",
"app_bell_settings_bedtime_settings_tone": "M\u00e9lodie de l'heure du coucher",
"app_bell_settings_bedtime_settings_volume": "Volume",
M image/system_a/data/lang/Polski.json => image/system_a/data/lang/Polski.json +3 -1
@@ 90,7 90,9 @@
"app_bell_settings_alarm_settings_snooze_chime_volume": "G\u0142o\u015bno\u015b\u0107",
"app_bell_settings_alarm_settings_snooze_length": "D\u0142ugo\u015b\u0107 drzemki",
"app_bell_settings_alarm_settings_title": "Ustawienia alarmu",
- "app_bell_settings_alarm_settings_tone": "D\u017awi\u0119k alarmu",
+ "app_bell_settings_alarm_settings_chime": "D\u017awi\u0119k g\u0142\u00f3wnego alarmu",
+ "app_bell_settings_alarm_settings_sounds": "D\u017awi\u0119ki",
+ "app_bell_settings_alarm_settings_custom_sounds": "Przes\u0142ane D\u017awi\u0119ki",
"app_bell_settings_alarm_settings_volume": "G\u0142o\u015bno\u015b\u0107 alarmu",
"app_bell_settings_bedtime_settings_tone": "D\u017awi\u0119k",
"app_bell_settings_bedtime_settings_volume": "G\u0142o\u015bno\u015b\u0107",
M module-db/Tables/MultimediaFilesTable.cpp => module-db/Tables/MultimediaFilesTable.cpp +2 -2
@@ 13,8 13,8 @@ namespace
std::string getSorting(db::multimedia_files::SortingBy sorting)
{
switch (sorting) {
- case db::multimedia_files::SortingBy::IdAscending:
- return "_id ASC";
+ case db::multimedia_files::SortingBy::TrackIdAscending:
+ return "track ASC";
case db::multimedia_files::SortingBy::TitleAscending:
default:
return "title ASC";
M module-db/Tables/MultimediaFilesTable.hpp => module-db/Tables/MultimediaFilesTable.hpp +1 -1
@@ 73,7 73,7 @@ namespace db::multimedia_files
enum class SortingBy
{
TitleAscending,
- IdAscending
+ TrackIdAscending
};
class MultimediaFilesTable : public Table<TableRow, TableFields>
M module-services/service-db/test/lang/English.json => module-services/service-db/test/lang/English.json +3 -1
@@ 652,7 652,9 @@
"app_bell_settings_about_info_text": "www.mudita.com",
"app_bell_settings_alarm_settings": "Alarm",
"app_bell_settings_alarm_settings_title": "Alarm settings",
- "app_bell_settings_alarm_settings_tone": "Alarm tone",
+ "app_bell_settings_alarm_settings_chime": "Main alarm chime",
+ "app_bell_settings_alarm_settings_sounds": "Sounds",
+ "app_bell_settings_alarm_settings_custom_sounds": "Custom sounds",
"app_bell_settings_alarm_settings_volume": "Alarm volume",
"app_bell_settings_alarm_settings_light": "Alarm light",
"app_bell_settings_alarm_settings_prewake_up": "Pre-wake up",
M products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp => products/BellHybrid/apps/application-bell-settings/ApplicationBellSettings.cpp +16 -8
@@ 12,6 12,7 @@
#include "models/alarm_settings/PrewakeUpSettingsModel.hpp"
#include "models/alarm_settings/SnoozeListItemProvider.hpp"
#include "models/alarm_settings/SnoozeSettingsModel.hpp"
+#include "models/alarm_settings/AlarmSettingsModel.hpp"
#include "presenter/BedtimeSettingsPresenter.hpp"
#include "presenter/AboutYourBellWindowPresenter.hpp"
#include "presenter/alarm_settings/SnoozePresenter.hpp"
@@ 42,7 43,6 @@
#include <common/popups/BellTurnOffOptionWindow.hpp>
#include <common/models/AudioModel.hpp>
#include <common/models/TimeModel.hpp>
-#include <common/models/AlarmSettingsModel.hpp>
#include <common/models/SongsModel.hpp>
#include <service-appmgr/messages/GetCurrentDisplayLanguageResponse.hpp>
@@ 180,7 180,7 @@ namespace app
const auto &pathSorting =
SoundsRepository::PathSorting{paths::audio::proprietary() / paths::audio::preWakeup(),
- SoundsRepository::SortingBy::TitleAscending};
+ SoundsRepository::SortingBy::TrackIdAscending};
auto soundsRepository = std::make_unique<SoundsRepository>(this, pathSorting);
auto songsModel = std::make_unique<SongsModel>(this, std::move(soundsRepository));
@@ 225,9 225,18 @@ namespace app
windowsFactory.attach(
gui::BellSettingsAlarmSettingsWindow::name,
[this](ApplicationCommon *app, [[maybe_unused]] const std::string &name) {
- auto soundsRepository =
- std::make_unique<SimpleSoundsRepository>(paths::audio::proprietary() / paths::audio::alarm());
- auto alarmToneModel = std::make_unique<bell_settings::AlarmToneModel>(this, *soundsRepository);
+ const auto &pathSorting = std::vector<SoundsRepository::PathSorting>{
+ {paths::audio::proprietary() / paths::audio::alarm(),
+ SoundsRepository::SortingBy::TrackIdAscending},
+ {paths::audio::userApp() / paths::audio::alarm(), SoundsRepository::SortingBy::TitleAscending}};
+ const app::LabelsWithPaths labelsWithPaths{
+ {"app_bell_settings_alarm_settings_sounds", paths::audio::proprietary() / paths::audio::alarm()},
+ {"app_bell_settings_alarm_settings_custom_sounds",
+ paths::audio::userApp() / paths::audio::alarm()}};
+ auto soundsRepository = std::make_unique<SoundsRepository>(this, pathSorting);
+ auto songsModel = std::make_unique<SongsModel>(this, std::move(soundsRepository), labelsWithPaths);
+
+ auto alarmToneModel = std::make_unique<bell_settings::AlarmToneModel>(this);
auto alarmVolumeModel = std::make_unique<bell_settings::AlarmVolumeModel>(*audioModel);
auto alarmFadeOnOffModel = std::make_unique<bell_settings::AlarmFadeOnOffModel>(this);
auto alarmLightOnOffModel = std::make_unique<bell_settings::AlarmLightOnOffModel>(this);
@@ 240,12 249,11 @@ namespace app
std::move(alarmFrontlightModel));
auto frontlightModel = std::make_unique<bell_settings::FrontlightModel>(app);
- auto provider = std::make_unique<bell_settings::AlarmSettingsListItemProvider>(
- *alarmSettingsModel, soundsRepository->getSongTitles());
+ auto provider = std::make_unique<bell_settings::AlarmSettingsListItemProvider>(*alarmSettingsModel,
+ std::move(songsModel));
auto presenter = std::make_unique<bell_settings::AlarmSettingsPresenter>(std::move(provider),
std::move(alarmSettingsModel),
*audioModel,
- std::move(soundsRepository),
std::move(frontlightModel));
return std::make_unique<gui::BellSettingsAlarmSettingsWindow>(app, std::move(presenter));
});
M products/BellHybrid/apps/application-bell-settings/CMakeLists.txt => products/BellHybrid/apps/application-bell-settings/CMakeLists.txt +2 -0
@@ 74,12 74,14 @@ target_sources(application-bell-settings
models/FrontlightListItemProvider.hpp
models/alarm_settings/AbstractPrewakeUpSettingsModel.hpp
models/alarm_settings/AbstractSnoozeSettingsModel.hpp
+ models/alarm_settings/AbstractAlarmSettingsModel.hpp
models/alarm_settings/AlarmSettingsListItemProvider.hpp
models/alarm_settings/BedtimeSettingsListItemProvider.cpp
models/alarm_settings/PrewakeUpListItemProvider.hpp
models/alarm_settings/PrewakeUpSettingsModel.hpp
models/alarm_settings/SnoozeListItemProvider.hpp
models/alarm_settings/SnoozeSettingsModel.hpp
+ models/alarm_settings/AlarmSettingsModel.hpp
models/alarm_settings/SettingsListItemProvider.hpp
presenter/BedtimeSettingsPresenter.hpp
R products/BellHybrid/apps/common/include/common/models/AbstractAlarmSettingsModel.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AbstractAlarmSettingsModel.hpp +0 -0
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsListItemProvider.cpp +7 -7
@@ 10,19 10,20 @@
#include <common/widgets/list_items/Numeric.hpp>
#include <common/widgets/list_items/NumericWithBar.hpp>
#include <apps-common/ApplicationCommon.hpp>
+#include <SongsListViewItem.hpp>
namespace app::bell_settings
{
using namespace gui;
AlarmSettingsListItemProvider::AlarmSettingsListItemProvider(AbstractAlarmSettingsModel &settingsModel,
- std::vector<UTF8> alarmToneRange)
- : settingsModel{settingsModel}
+ std::shared_ptr<SongsModel> songsModel)
+ : settingsModel{settingsModel}, songsModel{std::move(songsModel)}
{
- buildListItems(std::move(alarmToneRange));
+ buildListItems();
}
- void AlarmSettingsListItemProvider::buildListItems(std::vector<UTF8> alarmTonesRange)
+ void AlarmSettingsListItemProvider::buildListItems()
{
constexpr auto brightnessMin = 1U;
constexpr auto brightnessMax = 10U;
@@ 30,9 31,8 @@ namespace app::bell_settings
constexpr auto itemCount = 5U;
internalData.reserve(itemCount);
- auto alarmTone = new list_items::Text(std::move(alarmTonesRange),
- settingsModel.getAlarmTone(),
- utils::translate("app_bell_settings_alarm_settings_tone"));
+ auto alarmTone = new SongsListViewItem(
+ utils::translate("app_bell_settings_alarm_settings_chime"), settingsModel.getAlarmTone(), songsModel);
alarmTone->set_on_value_change_cb([this](const auto &val) {
if (onToneChange) {
onToneChange(val);
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsListItemProvider.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsListItemProvider.hpp +6 -3
@@ 4,8 4,9 @@
#pragma once
#include "SettingsListItemProvider.hpp"
-#include <common/models/AbstractAlarmSettingsModel.hpp>
+#include "AbstractAlarmSettingsModel.hpp"
#include <common/models/AbstractSettingsModel.hpp>
+#include <common/models/SongsModel.hpp>
namespace app::list_items
{
@@ 18,14 19,16 @@ namespace app::bell_settings
class AlarmSettingsListItemProvider : public SettingsListItemProvider
{
public:
- AlarmSettingsListItemProvider(AbstractAlarmSettingsModel &settingsModel, std::vector<UTF8> alarmToneRange);
+ AlarmSettingsListItemProvider(AbstractAlarmSettingsModel &settingsModel,
+ std::shared_ptr<SongsModel> songsModel);
auto getCurrentVolume() -> std::uint8_t;
private:
- void buildListItems(std::vector<UTF8> alarmTonesRange);
+ void buildListItems();
AbstractAlarmSettingsModel &settingsModel;
app::list_items::NumericWithBar *alarmVolume{nullptr};
+ std::shared_ptr<SongsModel> songsModel;
};
} // namespace app::bell_settings
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsModel.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsModel.cpp +3 -9
@@ 1,7 1,7 @@
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-#include <common/models/AlarmSettingsModel.hpp>
+#include "AlarmSettingsModel.hpp"
#include <db/SystemSettings.hpp>
namespace app::bell_settings
@@ 18,20 18,14 @@ namespace app::bell_settings
}
}
- AlarmToneModel::AlarmToneModel(sys::Service *app, SimpleSoundsRepository &soundsRepository)
- : gui::SettingsModel<UTF8>{app}, soundsRepository{soundsRepository}
- {}
-
void AlarmToneModel::setValue(UTF8 value)
{
- const auto &path = soundsRepository.titleToPath(value).value_or("");
- settings.setValue(bell::settings::Alarm::tonePath, path, settings::SettingsScope::Global);
+ settings.setValue(bell::settings::Alarm::tonePath, value, settings::SettingsScope::Global);
}
UTF8 AlarmToneModel::getValue() const
{
- const auto &path = settings.getValue(bell::settings::Alarm::tonePath, settings::SettingsScope::Global);
- return soundsRepository.pathToTitle(path).value_or("");
+ return settings.getValue(bell::settings::Alarm::tonePath, settings::SettingsScope::Global);
}
void AlarmVolumeModel::setValue(std::uint8_t value)
R products/BellHybrid/apps/common/include/common/models/AlarmSettingsModel.hpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/AlarmSettingsModel.hpp +1 -6
@@ 6,21 6,16 @@
#include "AbstractAlarmSettingsModel.hpp"
#include <common/models/SettingsModel.hpp>
#include <common/models/AudioModel.hpp>
-#include <common/data/FrontlightUtils.hpp>
-#include <common/SoundsRepository.hpp>
namespace app::bell_settings
{
class AlarmToneModel : public gui::SettingsModel<UTF8>
{
public:
- AlarmToneModel(sys::Service *app, SimpleSoundsRepository &soundsRepository);
+ using SettingsModel::SettingsModel;
void setValue(UTF8 value) override;
UTF8 getValue() const override;
-
- private:
- SimpleSoundsRepository &soundsRepository;
};
class AlarmVolumeModel : public gui::AbstractSettingsModel<std::uint8_t>
M products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp => products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.cpp +8 -5
@@ 9,28 9,31 @@ namespace app::bell_settings
AlarmSettingsPresenter::AlarmSettingsPresenter(std::unique_ptr<AlarmSettingsListItemProvider> &&provider,
std::unique_ptr<AbstractAlarmSettingsModel> &&settingsModel,
AbstractAudioModel &audioModel,
- std::unique_ptr<AbstractSimpleSoundsRepository> &&soundsRepository,
std::unique_ptr<AbstractFrontlightModel> &&frontlight)
: provider{std::move(provider)}, settingsModel{std::move(settingsModel)}, audioModel{audioModel},
- soundsRepository{std::move(soundsRepository)}, frontlight{std::move(frontlight)}
+ frontlight{std::move(frontlight)}
{
auto playSound = [this](const UTF8 &val) {
+ currentSoundPath = val;
this->audioModel.setVolume(this->provider->getCurrentVolume(), AbstractAudioModel::PlaybackType::Alarm);
- this->audioModel.play(
- this->soundsRepository->titleToPath(val).value_or(""), AbstractAudioModel::PlaybackType::Alarm, {});
+ this->audioModel.play(currentSoundPath, AbstractAudioModel::PlaybackType::Alarm, {});
};
this->provider->onExit = [this]() { getView()->exit(); };
this->provider->onToneEnter = playSound;
+ this->provider->onToneExit = [this](const auto &) { stopSound(); };
this->provider->onToneChange = playSound;
this->provider->onVolumeEnter = playSound;
this->provider->onVolumeExit = [this](const auto &) { stopSound(); };
- this->provider->onVolumeChange = [this](const auto &val) {
+ this->provider->onVolumeChange = [this, playSound](const auto &val) {
this->audioModel.setVolume(
val, AbstractAudioModel::PlaybackType::Alarm, audio::VolumeUpdateType::SkipUpdateDB);
+ if (this->audioModel.hasPlaybackFinished()) {
+ playSound(currentSoundPath);
+ }
};
auto setBrightness = [this](const auto &brightness) {
M products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.hpp => products/BellHybrid/apps/application-bell-settings/presenter/alarm_settings/AlarmSettingsPresenter.hpp +1 -2
@@ 49,7 49,6 @@ namespace app::bell_settings
AlarmSettingsPresenter(std::unique_ptr<AlarmSettingsListItemProvider> &&provider,
std::unique_ptr<AbstractAlarmSettingsModel> &&settingsModel,
AbstractAudioModel &audioModel,
- std::unique_ptr<AbstractSimpleSoundsRepository> &&soundsRepository,
std::unique_ptr<AbstractFrontlightModel> &&frontlight);
auto getPagesProvider() const -> std::shared_ptr<gui::ListItemProvider> override;
@@ 65,7 64,7 @@ namespace app::bell_settings
std::shared_ptr<AlarmSettingsListItemProvider> provider;
std::unique_ptr<AbstractAlarmSettingsModel> settingsModel;
AbstractAudioModel &audioModel;
- std::unique_ptr<AbstractSimpleSoundsRepository> soundsRepository;
std::unique_ptr<AbstractFrontlightModel> frontlight;
+ UTF8 currentSoundPath;
};
} // namespace app::bell_settings
M products/BellHybrid/apps/common/CMakeLists.txt => products/BellHybrid/apps/common/CMakeLists.txt +0 -2
@@ 116,8 116,6 @@ target_sources(application-bell-common
include/common/models/UserSessionModel.hpp
include/common/models/AudioModel.hpp
include/common/models/FrontlightModel.hpp
- include/common/models/AlarmSettingsModel.hpp
- include/common/models/AbstractAlarmSettingsModel.hpp
include/common/models/LayoutModel.hpp
include/common/models/LowBatteryInfoModel.hpp
include/common/models/QuoteModel.hpp
M products/BellHybrid/apps/common/include/common/SoundsRepository.hpp => products/BellHybrid/apps/common/include/common/SoundsRepository.hpp +1 -1
@@ 57,7 57,7 @@ class SoundsRepository : public AbstractSoundsRepository, public app::AsyncCallb
public:
enum class SortingBy
{
- IdAscending,
+ TrackIdAscending,
TitleAscending
};
struct PathSorting
M products/BellHybrid/apps/common/src/SoundsRepository.cpp => products/BellHybrid/apps/common/src/SoundsRepository.cpp +2 -2
@@ 34,8 34,8 @@ namespace
constexpr db::multimedia_files::SortingBy transformSorting(SoundsRepository::SortingBy sorting)
{
switch (sorting) {
- case SoundsRepository::SortingBy::IdAscending:
- return db::multimedia_files::SortingBy::IdAscending;
+ case SoundsRepository::SortingBy::TrackIdAscending:
+ return db::multimedia_files::SortingBy::TrackIdAscending;
case SoundsRepository::SortingBy::TitleAscending:
default:
return db::multimedia_files::SortingBy::TitleAscending;