~aleteoryx/muditaos

024faff77e82ebe784137dd2b3de920bab260010 — Lefucjusz 1 year, 7 months ago 1ba589f
[BH-2035] Update relaxation paused window

Updated looped relaxation windows to match
new design.
Fixed issue with misaligned pause button
on timed relaxation windows.
M module-bsp/board/linux/hal/battery_charger/BatteryCharger.cpp => module-bsp/board/linux/hal/battery_charger/BatteryCharger.cpp +1 -2
@@ 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 <hal/battery_charger/AbstractBatteryCharger.hpp>


@@ 27,7 27,6 @@ namespace hal::battery
        constexpr auto chargerTypeDcdSDP      = 'l';
        constexpr auto chargerTypeDcdCDP      = ';';
        constexpr auto chargerTypeDcdDCP      = '\'';

    } // namespace

    class BatteryCharger : public AbstractBatteryCharger

M products/BellHybrid/apps/application-bell-relaxation/data/RelaxationStyle.hpp => products/BellHybrid/apps/application-bell-relaxation/data/RelaxationStyle.hpp +24 -15
@@ 8,29 8,23 @@
namespace gui::relaxationStyle
{
    inline constexpr auto descriptionFont = style::window::font::verybiglight;
    inline constexpr auto titleFont       = style::window::font::largelight;
    inline constexpr auto clockFont       = style::window::font::largelight;
    inline constexpr auto titleFont       = style::window::font::large;
    inline constexpr auto timerValueFont  = style::window::font::supersizemelight;
    inline constexpr auto volumeValueFont = style::window::font::supersizemelight;

    namespace ended
    {
        inline constexpr auto image_top_margin    = 170U;
        inline constexpr auto image_bottom_margin = 30U;
        inline constexpr auto imageMarginTop    = 170U;
        inline constexpr auto imageMarginBottom = 30U;
    } // namespace ended

    namespace title
    {
        inline constexpr auto loopMarginTop       = 42U;
        inline constexpr auto maxLines            = 2U;
        inline constexpr auto width               = 400U;
    } // namespace title

    namespace text
    {
        inline constexpr auto maxLines = title::maxLines;
        inline constexpr auto minWidth = 300U;
    } // namespace text

    namespace relStyle
    {
        namespace progressTime


@@ 58,9 52,10 @@ namespace gui::relaxationStyle
        namespace pauseIcon
        {
            inline constexpr auto image     = "big_pause";
            inline constexpr auto maxSizeX  = 203U;
            inline constexpr auto maxSizeY  = 203U;
            inline constexpr auto marginTop = timer::marginTop - (maxSizeY - timer::maxSizeY);
            inline constexpr auto minSizeX        = 203U;
            inline constexpr auto loopMinSizeY    = 140U;
            inline constexpr auto runningMinSizeY = 154U;
            inline constexpr auto marginTop       = 63U;
        } // namespace pauseIcon

        namespace clock


@@ 70,12 65,26 @@ namespace gui::relaxationStyle
            inline constexpr auto maxSizeY  = 84U;
        } // namespace clock

        namespace loopedDescription
        {
            inline constexpr auto marginTop = -8;
            inline constexpr auto maxSizeX  = 340U;
            inline constexpr auto maxSizeY  = 40U;
            inline constexpr auto font      = style::window::font::big;
        } // namespace loopedDescription

        namespace bottomDescription
        {
            inline constexpr auto marginTop = 38U;
            inline constexpr auto loopMarginTop   = 15U;
            inline constexpr auto pausedMarginTop = 10U;
            inline constexpr auto maxSizeX  = 340U;
            inline constexpr auto maxSizeY  = 80U;
            inline constexpr auto font      = style::window::font::verybig;
        } // namespace bottomDescription
    }     // namespace relStyle

        namespace battery
        {
            inline constexpr auto loopMarginTop = 74U;
        }
    } // namespace relStyle
} // namespace gui::relaxationStyle

M products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationEndedWindow.cpp => products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationEndedWindow.cpp +2 -2
@@ 1,4 1,4 @@
// Copyright (c) 2017-2022, 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 "RelaxationEndedWindow.hpp"


@@ 33,7 33,7 @@ namespace gui
            new Icon(this, 0, 0, style::window_width, style::window_height, "big_namaste", "", ImageTypeSpecifier::W_G);
        icon->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
        icon->image->setMargins(
            {0, gui::relaxationStyle::ended::image_top_margin, 0, gui::relaxationStyle::ended::image_bottom_margin});
            {0, gui::relaxationStyle::ended::imageMarginTop, 0, gui::relaxationStyle::ended::imageMarginBottom});
        icon->text->setFont(style::window::font::verybiglight);
    }


M products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationPausedWindow.cpp => products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationPausedWindow.cpp +35 -35
@@ 8,23 8,11 @@
#include <apps-common/widgets/BellBaseLayout.hpp>
#include <i18n/i18n.hpp>

namespace
{
    gui::BellStatusClock *createClock(gui::Item *parent)
    {
        auto time = new gui::BellStatusClock(parent);
        time->setFont(gui::relaxationStyle::clockFont);
        time->setMaximumSize(parent->getWidth(), parent->getHeight());
        time->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
        return time;
    }
} // namespace

namespace gui
{
    RelaxationPausedWindow::RelaxationPausedWindow(
        app::ApplicationCommon *app, std::unique_ptr<app::relaxation::RelaxationPausedContract::Presenter> &&presenter)
        : AppWindow(app, gui::window::name::relaxationPaused), presenter{std::move(presenter)}
        : AppWindow(app, window::name::relaxationPaused), presenter{std::move(presenter)}
    {
        this->presenter->attach(this);
        buildInterface();


@@ 38,26 26,38 @@ namespace gui

    void RelaxationPausedWindow::buildInterface()
    {
        AppWindow::buildInterface();
        using namespace gui::relaxationStyle;

        AppWindow::buildInterface();
        statusBar->setVisible(false);
        auto body = new gui::BellBaseLayout(this,
                                            0,
                                            0,
                                            style::bell_base_layout::w,
                                            style::bell_base_layout::h,
                                            BellBaseLayout::LayoutType::WithoutArrows);
        auto vBox =
            new VBox(body->getCenterBox(), 0, 0, style::bell_base_layout::w, style::bell_base_layout::center_layout_h);
        vBox->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
        vBox->setEdges(gui::RectangleEdge::None);

        new gui::Image(vBox, "big_pause_W_G");

        time = createClock(body->firstBox);

        vBox->resizeItems();
        body->resizeItems();

        auto mainVBox = new VBox(this, 0, 0, style::window_width, style::window_height);
        mainVBox->setEdges(rectangle_enums::RectangleEdge::None);

        clock = new BellStatusClock(mainVBox);
        clock->setMaximumSize(relStyle::clock::maxSizeX, relStyle::clock::maxSizeY);
        clock->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        clock->setMargins(Margins(0, relStyle::clock::marginTop, 0, 0));

        auto imageVBox = new VBox(mainVBox);
        imageVBox->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        imageVBox->setEdges(RectangleEdge::None);
        imageVBox->setMargins(Margins(0, relStyle::pauseIcon::marginTop, 0, 0));
        imageVBox->setMinimumSize(relStyle::pauseIcon::minSizeX, relStyle::pauseIcon::loopMinSizeY);
        new Image(imageVBox, relStyle::pauseIcon::image, ImageTypeSpecifier::W_G);
        imageVBox->resizeItems();

        auto relaxationText = new TextFixedSize(mainVBox);
        relaxationText->setMaximumSize(relStyle::bottomDescription::maxSizeX, relStyle::bottomDescription::maxSizeY);
        relaxationText->setFont(relStyle::bottomDescription::font);
        relaxationText->setMargins(Margins(0, relStyle::bottomDescription::pausedMarginTop, 0, 0));
        relaxationText->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
        relaxationText->setText(utils::translate("app_bellmain_relaxation"));
        relaxationText->drawUnderline(false);
        relaxationText->setVisible(true);
        relaxationText->activeItem = false;

        mainVBox->resizeItems();
    }

    bool RelaxationPausedWindow::onInput(const InputEvent &inputEvent)


@@ 68,7 68,7 @@ namespace gui
        }

        if (inputEvent.isShortRelease(KeyCode::KEY_RF)) {
            application->switchWindow(gui::name::window::main_window);
            application->switchWindow(name::window::main_window);
            return true;
        }
        return AppWindow::onInput(inputEvent);


@@ 76,13 76,13 @@ namespace gui

    void RelaxationPausedWindow::setTime(std::time_t newTime)
    {
        time->setTime(newTime);
        time->setTimeFormatSpinnerVisibility(true);
        clock->setTime(newTime);
        clock->setTimeFormatSpinnerVisibility(true);
    }

    void RelaxationPausedWindow::setTimeFormat(utils::time::Locale::TimeFormat fmt)
    {
        time->setTimeFormat(fmt);
        clock->setTimeFormat(fmt);
    }

    RefreshModes RelaxationPausedWindow::updateTime()

M products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationPausedWindow.hpp => products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationPausedWindow.hpp +4 -6
@@ 1,4 1,4 @@
// Copyright (c) 2017-2022, 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


@@ 13,14 13,13 @@ namespace gui
    class RelaxationPausedWindow : public AppWindow, public app::relaxation::RelaxationPausedContract::View
    {
      public:
        explicit RelaxationPausedWindow(
            app::ApplicationCommon *app,
            std::unique_ptr<app::relaxation::RelaxationPausedContract::Presenter> &&presenter);
        RelaxationPausedWindow(app::ApplicationCommon *app,
                               std::unique_ptr<app::relaxation::RelaxationPausedContract::Presenter> &&presenter);

      private:
        std::unique_ptr<app::relaxation::RelaxationPausedContract::Presenter> presenter;

        gui::BellStatusClock *time = nullptr;
        gui::BellStatusClock *clock{nullptr};

        void buildInterface() override;
        void setTime(std::time_t newTime) override;


@@ 29,5 28,4 @@ namespace gui
        bool onInput(const InputEvent &inputEvent) override;
        RefreshModes updateTime() override;
    };

} // namespace gui

M products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationRunningLoopWindow.cpp => products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationRunningLoopWindow.cpp +62 -80
@@ 17,59 17,14 @@ namespace
    constexpr auto relaxationLoopTimerName{"RelaxationLoopTimer"};
    constexpr std::chrono::seconds relaxationLoopTimerPeriod{1};
    constexpr units::SOC dischargingLevelShowTop{20};
    constexpr auto ellipsisSpace{2U};
    constexpr auto ellipsis{"..."};
    /* charsMultiplier is set a little bit less than max lines which is 2, because of final text formatting */
    constexpr auto charsMultiplier{1.8f};

    gui::Text *createTitle(gui::VBox *parent)
    {
        namespace relaxationStyle = gui::relaxationStyle;
        auto title                = new gui::TextFixedSize(parent);
        title->setFont(relaxationStyle::titleFont);
        title->setMinimumWidth(relaxationStyle::title::width);
        title->setMinimumHeightToFitText(relaxationStyle::title::maxLines);
        title->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
        title->drawUnderline(false);
        return title;
    }

    gui::BellStatusClock *createClock(gui::Item *parent)
    {
        auto time = new gui::BellStatusClock(parent);
        time->setFont(gui::relaxationStyle::clockFont);
        time->setMaximumSize(parent->getWidth(), parent->getHeight());
        time->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
        return time;
    }

    gui::Text *createBottomText(gui::VBox *parent)
    {
        namespace relaxationStyle = gui::relaxationStyle;
        auto title                = new gui::TextFixedSize(parent);
        title->setFont(relaxationStyle::descriptionFont);
        title->setMinimumWidth(relaxationStyle::text::minWidth);
        title->setMinimumHeightToFitText(relaxationStyle::text::maxLines);
        title->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
        title->drawUnderline(false);
        title->setText(utils::translate("app_bell_relaxation_looped"));
        title->setVisible(false);
        return title;
    }

    gui::BellBattery *createBattery(gui::VBox *parent)
    {
        auto battery = new gui::BellBattery(parent, gui::BatteryWidthMode::Fixed);
        battery->setMinimumSize(gui::battery::battery_widget_w, gui::battery::battery_widget_h);
        battery->setEdges(gui::RectangleEdge::None);
        battery->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
        battery->setBatteryPercentMode(gui::BatteryPercentMode::Show);
        battery->setVisible(false);
        return battery;
    }

    std::string adjustDisplayedTitle(const UTF8 &title, const std::uint32_t maxCharsInLine)
    {
        /* charsMultiplier is set a little bit less than max lines which is 2, because of final text formatting */
        constexpr auto charsMultiplier{1.8f};
        constexpr auto ellipsisSpace{2U};
        constexpr auto ellipsis{"..."};

        const auto maxTitleLength =
            static_cast<std::uint32_t>(std::round(static_cast<float>(maxCharsInLine) * charsMultiplier));
        if (title.length() <= maxTitleLength) {


@@ 105,11 60,11 @@ namespace gui
        }

        if (data && typeid(*data) == typeid(RelaxationSwitchData)) {
            auto *audioSwitchData     = static_cast<RelaxationSwitchData *>(data);
            auto audioSwitchData      = static_cast<RelaxationSwitchData *>(data);
            audioContext              = audioSwitchData->getAudioContext();
            const auto maxCharsInLine = title->getTextFormat().getFont()->getCharCountInSpace(
                audioContext->getSound().tags.title, title->getWidth());
            title->setText(adjustDisplayedTitle(audioContext->getSound().tags.title, maxCharsInLine));
            const auto maxCharsInLine = titleText->getTextFormat().getFont()->getCharCountInSpace(
                audioContext->getSound().tags.title, titleText->getWidth());
            titleText->setText(adjustDisplayedTitle(audioContext->getSound().tags.title, maxCharsInLine));
            presenter->activate(audioContext->getSound());
        }
    }


@@ 123,28 78,55 @@ namespace gui

    void RelaxationRunningLoopWindow::buildLayout()
    {
        using Alignment = gui::Alignment;
        statusBar->setVisible(false);
        auto body = new gui::BellBaseLayout(this,
                                            0,
                                            0,
                                            style::bell_base_layout::w,
                                            style::bell_base_layout::h,
                                            BellBaseLayout::LayoutType::WithoutArrows);

        title      = createTitle(body->centerBox);
        time       = createClock(body->firstBox);
        battery    = createBattery(body->lastBox);
        bottomText = createBottomText(body->lastBox);

        body->lastBox->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        updateBatteryStatus();
        body->resizeItems();

        dimensionChangedCallback = [&](Item &, const BoundingBox &newDim) -> bool {
            body->setArea({0, 0, newDim.w, newDim.h});
            return true;
        };
        auto mainVBox = new VBox(this, 0, 0, style::window_width, style::window_height);
        mainVBox->setEdges(rectangle_enums::RectangleEdge::None);

        clock = new BellStatusClock(mainVBox);
        clock->setMaximumSize(relaxationStyle::relStyle::clock::maxSizeX, relaxationStyle::relStyle::clock::maxSizeY);
        clock->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        clock->setMargins(Margins(0, relaxationStyle::relStyle::clock::marginTop, 0, 0));

        titleText = new TextFixedSize(mainVBox);
        titleText->setFont(relaxationStyle::titleFont);
        titleText->setMinimumWidth(relaxationStyle::title::width);
        titleText->setMinimumHeightToFitText(relaxationStyle::title::maxLines);
        titleText->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        titleText->setMargins(Margins(0, relaxationStyle::title::loopMarginTop, 0, 0));
        titleText->drawUnderline(false);

        loopedText = new TextFixedSize(mainVBox);
        loopedText->setFont(relaxationStyle::relStyle::loopedDescription::font);
        loopedText->setMaximumSize(relaxationStyle::relStyle::loopedDescription::maxSizeX,
                                   relaxationStyle::relStyle::loopedDescription::maxSizeY);
        loopedText->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
        loopedText->setMargins(Margins(0, relaxationStyle::relStyle::loopedDescription::marginTop, 0, 0));
        loopedText->setText(utils::translate("app_bell_relaxation_looped"));
        loopedText->drawUnderline(false);
        loopedText->setVisible(true);

        relaxationText = new TextFixedSize(mainVBox);
        relaxationText->setMaximumSize(relaxationStyle::relStyle::bottomDescription::maxSizeX,
                                       relaxationStyle::relStyle::bottomDescription::maxSizeY);
        relaxationText->setFont(relaxationStyle::relStyle::bottomDescription::font);
        relaxationText->setMargins(Margins(0, relaxationStyle::relStyle::bottomDescription::loopMarginTop, 0, 0));
        relaxationText->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        relaxationText->setText(utils::translate("app_bellmain_relaxation"));
        relaxationText->drawUnderline(false);
        relaxationText->setVisible(true);
        relaxationText->activeItem = false;

        battery = new BellBattery(mainVBox, BatteryWidthMode::Fixed);
        battery->setMinimumSize(battery::battery_widget_w, battery::battery_widget_h);
        battery->setMargins(Margins(0, relaxationStyle::relStyle::battery::loopMarginTop, 0, 0));
        battery->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        battery->setBatteryPercentMode(BatteryPercentMode::Show);
        battery->setEdges(RectangleEdge::None);
        battery->setVisible(false);

        updateBatteryStatus();
        mainVBox->resizeItems();
    }

    void RelaxationRunningLoopWindow::configureTimer()


@@ 189,13 171,13 @@ namespace gui

    void RelaxationRunningLoopWindow::setTime(std::time_t newTime)
    {
        time->setTime(newTime);
        time->setTimeFormatSpinnerVisibility(true);
        clock->setTime(newTime);
        clock->setTimeFormatSpinnerVisibility(true);
    }

    void RelaxationRunningLoopWindow::setTimeFormat(utils::time::Locale::TimeFormat fmt)
    {
        time->setTimeFormat(fmt);
        clock->setTimeFormat(fmt);
    }

    void RelaxationRunningLoopWindow::resume()


@@ 218,14 200,14 @@ namespace gui

        if (soc < dischargingLevelShowTop) {
            battery->update(soc, presenter->isBatteryCharging(state));
            bottomText->setVisible(false);
            relaxationText->setVisible(false);
            battery->setVisible(true);
            battery->informContentChanged();
        }
        else {
            battery->setVisible(false);
            bottomText->setVisible(true);
            bottomText->informContentChanged();
            relaxationText->setVisible(true);
            relaxationText->informContentChanged();
        }

        return true;

M products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationRunningLoopWindow.hpp => products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationRunningLoopWindow.hpp +7 -6
@@ 12,8 12,8 @@

namespace gui
{
    class HBarGraph;
    class Text;
    class TextFixedSize;

    class RelaxationRunningLoopWindow : public AppWindow, public app::relaxation::RelaxationRunningLoopContract::View
    {
      public:


@@ 25,10 25,11 @@ namespace gui
        std::unique_ptr<app::relaxation::RelaxationRunningLoopContract::Presenter> presenter;
        std::unique_ptr<RelaxationAudioContext> audioContext;

        gui::Text *title           = nullptr;
        gui::Text *bottomText      = nullptr;
        gui::BellStatusClock *time = nullptr;
        gui::BellBattery *battery  = nullptr;
        BellStatusClock *clock{nullptr};
        TextFixedSize *titleText{nullptr};
        TextFixedSize *loopedText{nullptr};
        TextFixedSize *relaxationText{nullptr};
        BellBattery *battery{nullptr};

        void buildInterface() override;
        void onBeforeShow(ShowMode mode, SwitchData *data) override;

M products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationRunningProgressWindow.cpp => products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationRunningProgressWindow.cpp +14 -11
@@ 43,6 43,7 @@ namespace gui
    void RelaxationRunningProgressWindow::buildLayout()
    {
        using namespace gui::relaxationStyle;

        const auto progressArcRadius = relStyle::progressTime::radius;
        const auto progressArcWidth  = relStyle::progressTime::penWidth;
        const auto arcStartAngle     = -90 - relStyle::progressTime::verticalDeviationDegrees;


@@ 64,6 65,7 @@ namespace gui
        progress->setMaximum(arcProgressSteps);

        mainVBox = new VBox(this, 0, 0, style::window_width, style::window_height);
        mainVBox->setEdges(rectangle_enums::RectangleEdge::None);

        clock = new BellStatusClock(mainVBox);
        clock->setMaximumSize(relStyle::clock::maxSizeX, relStyle::clock::maxSizeY);


@@ 80,22 82,23 @@ namespace gui
        timer->setMargins(Margins(0, relStyle::timer::marginTop, 0, 0));
        timer->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));

        icon = new Icon(mainVBox, 0, 0, 0, 0, {}, {});
        icon->setMinimumSize(relStyle::pauseIcon::maxSizeX, relStyle::pauseIcon::maxSizeY);
        icon->setMargins(gui::Margins(0, relStyle::pauseIcon::marginTop, 0, 0));
        icon->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        icon->image->set(relStyle::pauseIcon::image, ImageTypeSpecifier::W_G);
        icon->setVisible(false);
        pauseBox = new VBox(mainVBox);
        pauseBox->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        pauseBox->setEdges(RectangleEdge::None);
        pauseBox->setMargins(Margins(0, relStyle::pauseIcon::marginTop, 0, 0));
        pauseBox->setMinimumSize(relStyle::pauseIcon::minSizeX, relStyle::pauseIcon::runningMinSizeY);
        new Image(pauseBox, relStyle::pauseIcon::image, ImageTypeSpecifier::W_G);
        pauseBox->setVisible(false);
        pauseBox->resizeItems();

        bottomDescription = new gui::TextFixedSize(
            mainVBox, 0, 0, relStyle::bottomDescription::maxSizeX, relStyle::bottomDescription::maxSizeY);
        bottomDescription = new gui::TextFixedSize(mainVBox);
        bottomDescription->setMaximumSize(relStyle::bottomDescription::maxSizeX, relStyle::bottomDescription::maxSizeY);
        bottomDescription->setFont(relStyle::bottomDescription::font);
        bottomDescription->setMargins(gui::Margins(0, 0, 0, 0));
        bottomDescription->activeItem = false;
        bottomDescription->setAlignment(
            gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Top));
        bottomDescription->setRichText(utils::translate("app_bellmain_relaxation"));
        bottomDescription->setText(utils::translate("app_bellmain_relaxation"));
        bottomDescription->drawUnderline(false);
        bottomDescription->setVisible(true);



@@ 152,14 155,14 @@ namespace gui
    void RelaxationRunningProgressWindow::onPaused()
    {
        timer->setVisible(false);
        icon->setVisible(true);
        pauseBox->setVisible(true);
        mainVBox->resizeItems();
    }

    void RelaxationRunningProgressWindow::resume()
    {
        timer->setVisible(true);
        icon->setVisible(false);
        pauseBox->setVisible(false);
        mainVBox->resizeItems();
    }


M products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationRunningProgressWindow.hpp => products/BellHybrid/apps/application-bell-relaxation/windows/RelaxationRunningProgressWindow.hpp +2 -2
@@ 29,8 29,8 @@ namespace gui
        VBox *mainVBox{nullptr};
        ArcProgressBar *progress{nullptr};
        TimeMinuteSecondWidget *timer{nullptr};
        gui::TextFixedSize *bottomDescription{nullptr};
        Icon *icon{nullptr};
        TextFixedSize *bottomDescription{nullptr};
        VBox *pauseBox{nullptr};
        BellStatusClock *clock{nullptr};

        void setTime(std::time_t newTime) override;