mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-01-01 02:19:00 -05:00
131 lines
4.5 KiB
C++
131 lines
4.5 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "AudioSettingsModel.hpp"
|
|
|
|
#include <service-audio/AudioServiceAPI.hpp>
|
|
|
|
namespace audio_settings
|
|
{
|
|
|
|
constexpr audio::PlaybackType playbackTypeToAudioPlaybackType(PlaybackType type)
|
|
{
|
|
switch (type) {
|
|
case PlaybackType::Notifications:
|
|
return audio::PlaybackType::Notifications;
|
|
case PlaybackType::KeypadSound:
|
|
return audio::PlaybackType::KeypadSound;
|
|
case PlaybackType::CallRingtone:
|
|
return audio::PlaybackType::CallRingtone;
|
|
case PlaybackType::TextMessageRingtone:
|
|
return audio::PlaybackType::TextMessageRingtone;
|
|
case PlaybackType::Alarm:
|
|
return audio::PlaybackType::Alarm;
|
|
}
|
|
return audio::PlaybackType::None;
|
|
}
|
|
|
|
AudioSettingsModel::AudioSettingsModel(app::ApplicationCommon *application, PlaybackType playbackType)
|
|
: application(application), playbackType(playbackTypeToAudioPlaybackType(playbackType))
|
|
{}
|
|
|
|
bool AudioSettingsModel::isVibrationEnabled()
|
|
{
|
|
auto settingState = AudioServiceAPI::GetVibrationSetting(application, playbackType);
|
|
if (!settingState) {
|
|
LOG_ERROR("Cannot read vibration setting for %s", audio::str(playbackType).c_str());
|
|
}
|
|
return (settingState.value_or(audio::SettingState::Disabled) == audio::SettingState::Enabled) ? true : false;
|
|
}
|
|
|
|
void AudioSettingsModel::setVibrationEnabled()
|
|
{
|
|
AudioServiceAPI::SetVibrationSetting(application, audio::SettingState::Enabled, playbackType);
|
|
}
|
|
|
|
void AudioSettingsModel::setVibrationDisabled()
|
|
{
|
|
AudioServiceAPI::SetVibrationSetting(application, audio::SettingState::Disabled, playbackType);
|
|
}
|
|
|
|
void AudioSettingsModel::setVibrationLevel(audio::VibrationLevel vol)
|
|
{
|
|
AudioServiceAPI::SetVibrationLevelSetting(application, vol);
|
|
}
|
|
|
|
audio::VibrationLevel AudioSettingsModel::getVibrationLevel()
|
|
{
|
|
auto volume = AudioServiceAPI::GetVibrationLevelSetting(application);
|
|
if (!volume) {
|
|
LOG_ERROR("Cannot read vibration level");
|
|
}
|
|
return volume.value_or(0);
|
|
}
|
|
|
|
bool AudioSettingsModel::isSystemSoundEnabled()
|
|
{
|
|
auto settingState = AudioServiceAPI::GetSystemSoundSetting(application, playbackType);
|
|
if (!settingState) {
|
|
LOG_ERROR("Cannot read vibration setting for %s", audio::str(playbackType).c_str());
|
|
}
|
|
return settingState.value_or(audio::SettingState::Disabled) != audio::SettingState::Enabled;
|
|
}
|
|
|
|
void AudioSettingsModel::setIsSystemSoundEnabled()
|
|
{
|
|
AudioServiceAPI::SetSystemSoundSetting(application, audio::SettingState::Enabled, playbackType);
|
|
}
|
|
|
|
void AudioSettingsModel::setIsSystemSoundDisabled()
|
|
{
|
|
AudioServiceAPI::SetSystemSoundSetting(application, audio::SettingState::Disabled, playbackType);
|
|
}
|
|
|
|
bool AudioSettingsModel::isSoundEnabled()
|
|
{
|
|
auto settingState = AudioServiceAPI::GetSoundSetting(application, playbackType);
|
|
if (!settingState) {
|
|
LOG_ERROR("Cannot read sound enabled setting for %s", audio::str(playbackType).c_str());
|
|
}
|
|
return (settingState.value_or(audio::SettingState::Disabled) == audio::SettingState::Enabled) ? true : false;
|
|
}
|
|
|
|
void AudioSettingsModel::setSoundEnabled()
|
|
{
|
|
AudioServiceAPI::SetSoundSetting(application, audio::SettingState::Enabled, playbackType);
|
|
}
|
|
|
|
void AudioSettingsModel::setSoundDisabled()
|
|
{
|
|
AudioServiceAPI::SetSoundSetting(application, audio::SettingState::Disabled, playbackType);
|
|
}
|
|
std::string AudioSettingsModel::getSound()
|
|
{
|
|
return AudioServiceAPI::GetSound(application, playbackType);
|
|
}
|
|
|
|
void AudioSettingsModel::setSound(std::string filePath)
|
|
{
|
|
AudioServiceAPI::SetSound(application, filePath, playbackType);
|
|
}
|
|
|
|
audio::Volume AudioSettingsModel::getVolume()
|
|
{
|
|
auto volume = AudioServiceAPI::GetVolume(application, playbackType);
|
|
if (!volume) {
|
|
LOG_ERROR("Cannot read volume level for %s", audio::str(playbackType).c_str());
|
|
}
|
|
return volume.value_or(0);
|
|
}
|
|
|
|
void AudioSettingsModel::setVolume(audio::Volume volume)
|
|
{
|
|
AudioServiceAPI::SetVolume(application, volume, playbackType);
|
|
}
|
|
|
|
audio::PlaybackType AudioSettingsModel::getPlaybackType()
|
|
{
|
|
return playbackType;
|
|
}
|
|
} // namespace audio_settings
|