~aleteoryx/muditaos

9455ea9b5dbfd2a3968813b2a2ed77920323e995 — Przemyslaw Brudny 4 years ago 38ad5af
[EGD-7759] Alarm audio duration fix

Alarm audio duration fix. Changed Alarm audio priority.
Fixed SpinBox bottomBar modes.
M module-apps/application-settings/widgets/SpinBoxOptionSettings.cpp => module-apps/application-settings/widgets/SpinBoxOptionSettings.cpp +8 -4
@@ 11,19 11,23 @@ namespace gui
                                                 std::uint8_t value,
                                                 std::uint8_t maxValue,
                                                 std::function<bool(uint8_t)> updateCallback,
                                                 std::function<bool(Item &)> focusChangedCallback,
                                                 std::function<void(const UTF8 &text)> bottomBarTemporaryMode,
                                                 std::function<void()> bottomBarRestoreFromTemporaryMode,
                                                 bool indent)
        : updateCallback(std::move(updateCallback)), maxValue(maxValue), value(value), text(text), indent(indent)
        : updateCallback(std::move(updateCallback)), bottomBarTemporaryMode(std::move(bottomBarTemporaryMode)),
          bottomBarRestoreFromTemporaryMode(std::move(bottomBarRestoreFromTemporaryMode)), maxValue(maxValue),
          value(value), text(text), indent(indent)
    {}

    auto SpinBoxOptionSettings::build() const -> ListItem *
    {
        auto spinBox = new SpinBox(nullptr, text, updateCallback, maxValue, value);
        auto spinBox = new SpinBox(
            nullptr, text, updateCallback, maxValue, value, bottomBarTemporaryMode, bottomBarRestoreFromTemporaryMode);

        auto optionItem = new gui::ListItem();
        optionItem->setMinimumSize(style::window::default_body_width, style::window::label::big_h);
        optionItem->inputCallback            = spinBox->inputCallback;
        optionItem->focusChangedCallback     = [spinBox](Item &item) { return spinBox->focusChangedCallback(item); };
        optionItem->focusChangedCallback     = spinBox->focusChangedCallback;
        optionItem->dimensionChangedCallback = [spinBox](gui::Item &, const BoundingBox &newDim) -> bool {
            spinBox->setArea({0, 0, newDim.w, newDim.h});
            return true;

M module-apps/application-settings/widgets/SpinBoxOptionSettings.hpp => module-apps/application-settings/widgets/SpinBoxOptionSettings.hpp +5 -2
@@ 14,13 14,16 @@ namespace gui
                              uint8_t value,
                              uint8_t maxValue,
                              std::function<bool(uint8_t)> updateCallback,
                              std::function<bool(Item &)> focusChangedCallback = nullptr,
                              bool indent                                      = false);
                              std::function<void(const UTF8 &text)> bottomBarTemporaryMode,
                              std::function<void()> bottomBarRestoreFromTemporaryMode,
                              bool indent = false);

        [[nodiscard]] auto build() const -> ListItem * override;

      private:
        std::function<bool(uint8_t)> updateCallback;
        std::function<void(const UTF8 &text)> bottomBarTemporaryMode = nullptr;
        std::function<void()> bottomBarRestoreFromTemporaryMode      = nullptr;
        std::uint8_t maxValue;
        std::uint8_t value;
        UTF8 text;

M module-apps/application-settings/windows/apps/AlarmClockWindow.cpp => module-apps/application-settings/windows/apps/AlarmClockWindow.cpp +5 -9
@@ 19,7 19,7 @@ namespace gui
    std::list<Option> AlarmClockWindow::buildOptionsList()
    {
        std::list<gui::Option> optionList;
        mVibrationsEnabled = mAudioModel->isVibrationEnabled();
        mVibrationsEnabled   = mAudioModel->isVibrationEnabled();
        mManualVolumeEnabled = mAudioModel->isSystemSoundEnabled();
        mWidgetMaker.addSwitchOption(optionList, utils::translate("app_settings_vibration"), mVibrationsEnabled, [&]() {
            switchVibrationState();


@@ 30,13 30,6 @@ namespace gui
                                     mManualVolumeEnabled,
                                     [&]() { switchManualVolumeState(); });

        auto focusCallback = [&](gui::Item &item) {
            if (item.focus) {
                setBottomBarText(UTF8(), BottomBar::Side::CENTER);
            }
            return true;
        };

        if (mManualVolumeEnabled) {
            optionList.emplace_back(std::make_unique<gui::SpinBoxOptionSettings>(
                utils::translate("app_settings_volume"),


@@ 46,7 39,10 @@ namespace gui
                    setVolume(value);
                    return true;
                },
                focusCallback,
                [&](const UTF8 &text) {
                    application->getCurrentWindow()->bottomBarTemporaryMode(text, BottomBar::Side::CENTER, false);
                },
                [&]() { application->getCurrentWindow()->bottomBarRestoreFromTemporaryMode(); },
                true));
        }


M module-apps/application-settings/windows/display-keypad/DisplayLightWindow.cpp => module-apps/application-settings/windows/display-keypad/DisplayLightWindow.cpp +4 -8
@@ 108,19 108,15 @@ namespace gui
            return true;
        };

        auto setBottomBarOnSpinnerFocus = [&](gui::Item &item) {
            if (item.focus) {
                setBottomBarText(utils::translate(style::strings::common::set), BottomBar::Side::CENTER);
            }
            return true;
        };

        auto spinner = std::make_unique<gui::SpinBoxOptionSettings>(
            utils::translate("app_settings_display_light_brightness"),
            std::ceil(brightnessValue / brightnessStep),
            std::ceil(screen_light_control::ManualModeParameters::MAX_BRIGHTNESS / brightnessStep),
            setBrightness,
            setBottomBarOnSpinnerFocus);
            [&](const UTF8 &text) {
                application->getCurrentWindow()->bottomBarTemporaryMode(text, BottomBar::Side::CENTER, false);
            },
            [&]() { application->getCurrentWindow()->bottomBarRestoreFromTemporaryMode(); });

        return spinner;
    }

M module-apps/apps-common/widgets/SpinBox.cpp => module-apps/apps-common/widgets/SpinBox.cpp +22 -3
@@ 8,12 8,20 @@
#include <InputEvent.hpp>
#include <Text.hpp>
#include <Image.hpp>
#include <utility>

namespace gui
{
    SpinBox::SpinBox(
        Item *parent, const std::string &title, UpdateCallback updateCallback, uint8_t maxValue, uint8_t startValue)
        : HBox(parent, style::window::default_left_margin), updateBarCallback(std::move(updateCallback))
    SpinBox::SpinBox(Item *parent,
                     const std::string &title,
                     UpdateCallback updateCallback,
                     uint8_t maxValue,
                     uint8_t startValue,
                     std::function<void(const UTF8 &text)> bottomBarTemporaryMode,
                     std::function<void()> bottomBarRestoreFromTemporaryMode)
        : HBox(parent, style::window::default_left_margin), updateBarCallback(std::move(updateCallback)),
          bottomBarTemporaryMode(std::move(bottomBarTemporaryMode)),
          bottomBarRestoreFromTemporaryMode(std::move(bottomBarRestoreFromTemporaryMode))
    {
        setMinimumSize(style::window::default_body_width, style::window::label::big_h);
        setPenWidth(style::window::default_border_no_focus_w);


@@ 29,6 37,17 @@ namespace gui
            leftArrow->setVisible(item.focus);
            rightArrow->setVisible(item.focus);
            resizeItems();

            if (item.focus) {
                if (this->bottomBarTemporaryMode) {
                    this->bottomBarTemporaryMode("");
                }
            }
            else {
                if (this->bottomBarRestoreFromTemporaryMode) {
                    this->bottomBarRestoreFromTemporaryMode();
                }
            }
            return true;
        };


M module-apps/apps-common/widgets/SpinBox.hpp => module-apps/apps-common/widgets/SpinBox.hpp +5 -1
@@ 18,7 18,9 @@ namespace gui
                const std::string &title,
                UpdateCallback updateCallback,
                std::uint8_t maxValue,
                std::uint8_t startValue);
                std::uint8_t startValue,
                std::function<void(const UTF8 &text)> bottomBarTemporaryMode = nullptr,
                std::function<void()> bottomBarRestoreFromTemporaryMode      = nullptr);

      private:
        auto addArrow(Item *parent, const std::string &arrowName, Alignment::Horizontal aligment, bool visible)


@@ 31,5 33,7 @@ namespace gui
        Image *leftArrow;
        Image *rightArrow;
        UpdateCallback updateBarCallback;
        std::function<void(const UTF8 &text)> bottomBarTemporaryMode = nullptr;
        std::function<void()> bottomBarRestoreFromTemporaryMode      = nullptr;
    };
} // namespace gui

M module-audio/Audio/AudioMux.cpp => module-audio/Audio/AudioMux.cpp +3 -3
@@ 1,4 1,4 @@
// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "AudioMux.hpp"


@@ 11,8 11,8 @@ namespace audio
        const std::map<PlaybackType, uint8_t> PlaybackTypePriority = {
            {PlaybackType::Meditation, 1},
            {PlaybackType::CallRingtone, 2},
            {PlaybackType::Multimedia, 3},
            {PlaybackType::Alarm, 4},
            {PlaybackType::Alarm, 3},
            {PlaybackType::Multimedia, 4},
            {PlaybackType::TextMessageRingtone, 5},
            {PlaybackType::Notifications, 5},
            {PlaybackType::KeypadSound, 6},

M module-audio/Audio/test/unittest_audio.cpp => module-audio/Audio/test/unittest_audio.cpp +2 -2
@@ 352,8 352,8 @@ TEST_CASE("Test AudioMux")
        std::vector<AudioMux::Input> audioInputs;
        AudioMux aMux(audioInputs);

        auto testPlaybackTypeLowPrio  = PlaybackType::Alarm;
        auto testPlaybackTypeMidPrio  = PlaybackType::Multimedia;
        auto testPlaybackTypeLowPrio  = PlaybackType::Multimedia;
        auto testPlaybackTypeMidPrio  = PlaybackType::Alarm;
        auto testPlaybackTypeHighPrio = PlaybackType::CallRingtone;

        auto mergableType = PlaybackType::Notifications;

M products/PurePhone/alarms/src/actions/PlayAudioActions.cpp => products/PurePhone/alarms/src/actions/PlayAudioActions.cpp +1 -2
@@ 12,7 12,6 @@
namespace
{
    constexpr auto timerName = "playDurationTimer";
    constexpr std::chrono::seconds defaultTimerTime{30};
} // namespace

namespace alarms


@@ 59,6 58,6 @@ namespace alarms
    {
        const auto tonePath = std::filesystem::path{record.musicTone};
        LOG_DEBUG("play some music: %s", record.musicTone.c_str());
        return play(tonePath, defaultTimerTime);
        return play(tonePath);
    }
} // namespace alarms