~aleteoryx/muditaos

ref: f4bcc5ce6f0d66f6ee55949f9978ad0c0399fddb muditaos/module-apps/application-settings/models/apps/AudioSettingsModel.cpp -rw-r--r-- 4.5 KiB
f4bcc5ce — Dawid Wojtas [BH-1758] Fix information about next alarm ring 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// 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