// 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 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