~aleteoryx/muditaos

ref: cc0ec423bfc250c7828d2d8c180709a48eb3caa3 muditaos/module-apps/application-settings/models/apps/AudioSettingsModel.cpp -rw-r--r-- 4.5 KiB
cc0ec423 — Lefucjusz [MOS-1035] Fixes in new alarm window UI flow 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