~aleteoryx/muditaos

b693a4ad4b63580d0038b244937fc96b4fb322cf — Paweł Joński 4 years ago 2843ce5
[BH-1103] Fix alarms durations and types

Fix Prewakeup, Bedtime reminder and snooze duration and types
M products/BellHybrid/alarms/src/actions/PlayAudioActions.cpp => products/BellHybrid/alarms/src/actions/PlayAudioActions.cpp +12 -7
@@ 19,7 19,7 @@ namespace alarms
          playbackType{playbackType}, settings{service::ServiceProxy{service.weak_from_this()}}
    {}

    bool PlayAudioAction::play(const std::filesystem::path &path, std::chrono::seconds duration)
    bool PlayAudioAction::play(const std::filesystem::path &path, std::chrono::minutes duration)
    {
        if (duration != InfiniteDuration) {
            spawnTimer(duration);


@@ 38,7 38,7 @@ namespace alarms
        const auto tone        = settings.getValue(toneSetting, settings::SettingsScope::Global);
        const auto durationStr = settings.getValue(durationSetting, settings::SettingsScope::Global);
        const auto durationVal = utils::getNumericValue<int>(durationStr);
        return play(soundsRepository.titleToPath(tone).value_or(""), std::chrono::seconds{durationVal});
        return play(soundsRepository.titleToPath(tone).value_or(""), std::chrono::minutes{durationVal});
    }

    void PlayAudioAction::detachTimer()


@@ 48,7 48,7 @@ namespace alarms
            timer.reset();
        }
    }
    void PlayAudioAction::spawnTimer(std::chrono::seconds timeout)
    void PlayAudioAction::spawnTimer(std::chrono::minutes timeout)
    {
        constexpr auto timerName = "playDurationTimer";
        if (not timer.isValid()) {


@@ 65,13 65,17 @@ namespace alarms
            return std::make_unique<PlayAudioAction>(service,
                                                     paths::getPreWakeUpChimesDir(),
                                                     bell::settings::PrewakeUp::tone,
                                                     bell::settings::PrewakeUp::duration);
                                                     bell::settings::PrewakeUp::duration,
                                                     audio::PlaybackType::Multimedia);
        }

        std::unique_ptr<PlayAudioAction> createSnoozeChimeAction(sys::Service &service)
        {
            return std::make_unique<PlayAudioAction>(
                service, paths::getSnoozeChimesDir(), bell::settings::Snooze::tone, bell::settings::Snooze::length);
            return std::make_unique<PlayAudioAction>(service,
                                                     paths::getSnoozeChimesDir(),
                                                     bell::settings::Snooze::tone,
                                                     bell::settings::Snooze::length,
                                                     audio::PlaybackType::Multimedia);
        }
        std::unique_ptr<PlayAudioAction> createAlarmToneAction(sys::Service &service)
        {


@@ 83,7 87,8 @@ namespace alarms
            return std::make_unique<PlayAudioAction>(service,
                                                     paths::getBedtimeReminderChimesDir(),
                                                     bell::settings::Bedtime::tone,
                                                     bell::settings::Bedtime::duration);
                                                     bell::settings::Bedtime::duration,
                                                     audio::PlaybackType::Multimedia);
        }
    } // namespace factory
} // namespace alarms

M products/BellHybrid/alarms/src/actions/PlayAudioActions.hpp => products/BellHybrid/alarms/src/actions/PlayAudioActions.hpp +3 -3
@@ 28,9 28,9 @@ namespace alarms
                                 audio::PlaybackType = audio::PlaybackType::Alarm);

      private:
        static constexpr auto InfiniteDuration = std::chrono::seconds::max();
        bool play(const std::filesystem::path &path, std::chrono::seconds duration = InfiniteDuration);
        void spawnTimer(std::chrono::seconds timeout);
        static constexpr auto InfiniteDuration = std::chrono::minutes::max();
        bool play(const std::filesystem::path &path, std::chrono::minutes duration = InfiniteDuration);
        void spawnTimer(std::chrono::minutes timeout);
        void detachTimer();

        sys::Service &service;