~aleteoryx/muditaos

d9e10515001691e1bebabcbbce14419e608ca150 — rrandomsky 1 year, 9 months ago 02fd01a
[BH-1943] New countdown timer design in the meditation app

The countdown timer in the Meditation app has been changed
according to the new design. Now the countdown timer only shows the seconds
in the countdown window and only the minutes in the ongoing meditation window.
M harmony_changelog.md => harmony_changelog.md +1 -0
@@ 14,6 14,7 @@

### Changed / Improved
* Updated button handling during pre-wake up
* Updated the countdown timer in Meditation app according to the new design

## [2.6.1 2024-04-02]


M module-apps/apps-common/widgets/TimeMinuteSecondWidget.cpp => module-apps/apps-common/widgets/TimeMinuteSecondWidget.cpp +2 -1
@@ 100,7 100,8 @@ namespace gui

    void TimeMinuteSecondWidget::updateTime(std::uint32_t seconds)
    {
        if (seconds >= utils::time::secondsInMinute || displayType == DisplayType::OnlyMinutes) {
        if (displayType != DisplayType::OnlySeconds &&
            (seconds >= utils::time::secondsInMinute || displayType == DisplayType::OnlyMinutes)) {
            const auto minutes = (seconds + utils::time::secondsInMinute - 1) / utils::time::secondsInMinute;
            setText(minutes);
            description->setText(utils::language::getCorrectMinutesNumeralForm(minutes));

M module-apps/apps-common/widgets/TimeMinuteSecondWidget.hpp => module-apps/apps-common/widgets/TimeMinuteSecondWidget.hpp +2 -1
@@ 15,7 15,8 @@ namespace gui
        enum class DisplayType
        {
            MinutesThenSeconds,
            OnlyMinutes
            OnlyMinutes,
            OnlySeconds,
        };

        TimeMinuteSecondWidget(Item *parent,

M products/BellHybrid/apps/application-bell-meditation-timer/data/MeditationStyle.hpp => products/BellHybrid/apps/application-bell-meditation-timer/data/MeditationStyle.hpp +2 -5
@@ 1,4 1,4 @@
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once


@@ 19,7 19,6 @@ namespace app::meditationStyle
        namespace timer
        {
            constexpr inline auto marginTop = 39;
            constexpr inline auto font      = style::window::font::supersizeme;
            constexpr inline auto maxSizeX  = 340;
            constexpr inline auto maxSizeY  = 198;
        } // namespace timer


@@ 51,9 50,7 @@ namespace app::meditationStyle

        namespace timer
        {
            constexpr inline auto marginTop  = 23;
            constexpr inline auto marginLeft = 43;
            constexpr inline auto font       = runningStyle::timer::font;
            constexpr inline auto marginTop = 24;
            constexpr inline auto maxSizeX  = runningStyle::timer::maxSizeX;
            constexpr inline auto maxSizeY  = runningStyle::timer::maxSizeY;
        } // namespace timer

M products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationCountdownWindow.cpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationCountdownWindow.cpp +8 -11
@@ 1,4 1,4 @@
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include <Arc.hpp>


@@ 69,17 69,14 @@ namespace gui
        description->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        description->setMargins(gui::Margins(0, countdownStyle::description::marginTop, 0, 0));

        timer = new gui::TimeFixedWidget(mainVBox,
                                         0,
                                         0,
                                         runningStyle::timer::maxSizeX,
                                         runningStyle::timer::maxSizeY,
                                         false,
                                         leftBoxSize,
                                         TimeFixedWidget::RightBox::defaultSize);
        timer->setFontAndDimensions(countdownStyle::timer::font);
        timer = new gui::TimeMinuteSecondWidget(mainVBox,
                                                0,
                                                0,
                                                countdownStyle::timer::maxSizeX,
                                                countdownStyle::timer::maxSizeY,
                                                gui::TimeMinuteSecondWidget::DisplayType::OnlySeconds);
        timer->setMinimumSize(countdownStyle::timer::maxSizeX, countdownStyle::timer::maxSizeY);
        timer->setMargins(gui::Margins(countdownStyle::timer::marginLeft, countdownStyle::timer::marginTop, 0, 0));
        timer->setMargins(gui::Margins(0, countdownStyle::timer::marginTop, 0, 0));
        timer->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));

        mainVBox->resizeItems();

M products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationCountdownWindow.hpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationCountdownWindow.hpp +6 -6
@@ 1,4 1,4 @@
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once


@@ 7,7 7,7 @@
#include <AppWindow.hpp>
#include <InputEvent.hpp>
#include <Text.hpp>
#include <apps-common/widgets/TimeFixedWidget.hpp>
#include <apps-common/widgets/TimeMinuteSecondWidget.hpp>

#include "MeditationCountdownPresenter.hpp"



@@ 29,10 29,10 @@ namespace gui

      private:
        std::unique_ptr<app::meditation::MeditationCountdownContract::Presenter> presenter;
        VBox *mainVBox         = nullptr;
        Arc *progress          = nullptr;
        TimeFixedWidget *timer = nullptr;
        Text *description      = nullptr;
        VBox *mainVBox                = nullptr;
        Arc *progress                 = nullptr;
        TimeMinuteSecondWidget *timer = nullptr;
        Text *description             = nullptr;

        void buildLayout();
        void configureTimer();

M products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp +8 -5
@@ 9,7 9,6 @@
#include <apps-common/widgets/BellBaseLayout.hpp>
#include <apps-common/widgets/ProgressTimerWithBarGraphAndCounter.hpp>
#include <apps-common/widgets/BarGraph.hpp>
#include <apps-common/widgets/TimeFixedWidget.hpp>
#include <common/widgets/BellStatusClock.hpp>
#include <gui/widgets/Icon.hpp>



@@ 50,8 49,8 @@ namespace gui
        const auto progressArcWidth  = runningStyle::progress::penWidth;
        const auto arcStartAngle =
            -90 - runningStyle::progress::verticalDeviationDegrees; // -90 to start drawing the circle from top
        const auto arcSweepAngle     = 360 - (2 * runningStyle::progress::verticalDeviationDegrees);
        const auto arcProgressSteps  = 1000;
        const auto arcSweepAngle    = 360 - (2 * runningStyle::progress::verticalDeviationDegrees);
        const auto arcProgressSteps = 1000;

        Arc::ShapeParams arcParams;
        arcParams.setCenterPoint(Point(getWidth() / 2, getHeight() / 2))


@@ 74,8 73,12 @@ namespace gui
        clock->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        clock->setMargins(gui::Margins(0, runningStyle::clock::marginTop, 0, 0));

        timer = new gui::TimeFixedWidget(mainVBox, 0, 0, runningStyle::timer::maxSizeX, runningStyle::timer::maxSizeY);
        timer->setFontAndDimensions(runningStyle::timer::font);
        timer = new gui::TimeMinuteSecondWidget(mainVBox,
                                                0,
                                                0,
                                                runningStyle::timer::maxSizeX,
                                                runningStyle::timer::maxSizeY,
                                                gui::TimeMinuteSecondWidget::DisplayType::OnlyMinutes);
        timer->setMinimumSize(runningStyle::timer::maxSizeX, runningStyle::timer::maxSizeY);
        timer->setMargins(gui::Margins(0, runningStyle::timer::marginTop, 0, 0));
        timer->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));

M products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.hpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.hpp +3 -1
@@ 5,6 5,8 @@

#include <Application.hpp>
#include <AppWindow.hpp>
#include <apps-common/widgets/TimeMinuteSecondWidget.hpp>

#include "MeditationProgressPresenter.hpp"

namespace gui


@@ 33,7 35,7 @@ namespace gui
        std::unique_ptr<app::meditation::MeditationProgressContract::Presenter> presenter;
        VBox *mainVBox{nullptr};
        ArcProgressBar *progress{nullptr};
        TimeFixedWidget *timer{nullptr};
        TimeMinuteSecondWidget *timer{nullptr};
        Icon *icon{nullptr};
        gui::BellStatusClock *clock{nullptr};