~aleteoryx/muditaos

1c4ff1d1a68e3175219ba6b01659d55049711a77 — Lefucjusz 1 year, 6 months ago 5de4026
[BH-2042] Fix misaligned pause and bell icons

Fix of the issue that pause and bell
icons were misaligned in Power Nap,
Meditation and Focus Timer after
introduction of BH-2013.
M products/BellHybrid/apps/application-bell-focus-timer/data/FocusTimerStyle.hpp => products/BellHybrid/apps/application-bell-focus-timer/data/FocusTimerStyle.hpp +18 -18
@@ 12,48 12,48 @@ namespace app::focusTimerStyle
    {
        namespace progress
        {
            inline constexpr auto radius                   = 192u;
            inline constexpr auto penWidth                 = 3u;
            inline constexpr auto verticalDeviationDegrees = 38u;
            inline constexpr auto radius                   = 192U;
            inline constexpr auto penWidth                 = 3U;
            inline constexpr auto verticalDeviationDegrees = 38U;
        } // namespace progress

        namespace timer
        {
            inline constexpr auto font      = style::window::font::supersizeme;
            inline constexpr auto maxSizeX  = 340u;
            inline constexpr auto maxSizeY  = 198u;
            inline constexpr auto marginTop = 19u;
            inline constexpr auto maxSizeX  = 340U;
            inline constexpr auto maxSizeY  = 198U;
            inline constexpr auto marginTop = 19U;
        } // namespace timer

        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 minSizeY  = 154U;
            inline constexpr auto marginTop = 63U;
        } // namespace pauseIcon

        namespace ringIcon
        {
            inline constexpr auto image     = "big_bell_ringing";
            inline constexpr auto maxSizeX  = 220u;
            inline constexpr auto maxSizeY  = 203u;
            inline constexpr auto marginTop = timer::marginTop - (maxSizeY - timer::maxSizeY);
            inline constexpr auto minSizeX  = 210U;
            inline constexpr auto minSizeY  = 154U;
            inline constexpr auto marginTop = 63U;
        } // namespace ringIcon

        namespace bottomDescription
        {
            inline constexpr auto marginTop = 38u;
            inline constexpr auto maxSizeX  = 340u;
            inline constexpr auto maxSizeY  = 80u;
            inline constexpr auto marginTop = 38U;
            inline constexpr auto maxSizeX  = 340U;
            inline constexpr auto maxSizeY  = 80U;
            inline constexpr auto font      = style::window::font::verybig;
        } // namespace bottomDescription

        namespace clock
        {
            inline constexpr auto marginTop = 17u;
            inline constexpr auto maxSizeX  = 340u;
            inline constexpr auto maxSizeY  = 84u;
            inline constexpr auto marginTop = 17U;
            inline constexpr auto maxSizeX  = 340U;
            inline constexpr auto maxSizeY  = 84U;
        } // namespace clock
    }     // namespace runningStyle


M products/BellHybrid/apps/application-bell-focus-timer/windows/FocusTimerWindow.cpp => products/BellHybrid/apps/application-bell-focus-timer/windows/FocusTimerWindow.cpp +33 -30
@@ 6,7 6,6 @@

#include <Application.hpp>

#include <gui/widgets/Icon.hpp>
#include <common/widgets/BellStatusClock.hpp>
#include <apps-common/widgets/BarGraph.hpp>
#include <apps-common/widgets/TimeMinuteSecondWidget.hpp>


@@ 86,19 85,23 @@ namespace app::focus
        timer->setMargins(Margins(0, runningStyle::timer::marginTop, 0, 0));
        timer->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));

        iconPause = new Icon(mainVBox, 0, 0, 0, 0, {}, {});
        iconPause->setMinimumSize(runningStyle::pauseIcon::maxSizeX, runningStyle::pauseIcon::maxSizeY);
        iconPause->setMargins(Margins(0, runningStyle::pauseIcon::marginTop, 0, 0));
        iconPause->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
        iconPause->image->set(runningStyle::pauseIcon::image, ImageTypeSpecifier::W_G);
        iconPause->setVisible(false);

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

        ringBox = new VBox(mainVBox);
        ringBox->setMinimumSize(runningStyle::ringIcon::minSizeX, runningStyle::ringIcon::minSizeY);
        ringBox->setMargins(Margins(0, runningStyle::ringIcon::marginTop, 0, 0));
        ringBox->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        ringBox->setEdges(RectangleEdge::None);
        new Image(ringBox, runningStyle::ringIcon::image, ImageTypeSpecifier::W_G);
        ringBox->setVisible(false);
        ringBox->resizeItems();

        bottomDescription = new TextFixedSize(
            mainVBox, 0, 0, runningStyle::bottomDescription::maxSizeX, runningStyle::bottomDescription::maxSizeY);


@@ 152,8 155,8 @@ namespace app::focus
    void FocusTimerWindow::showEndOfAllSessionsInfo()
    {
        timer->setVisible(false);
        iconPause->setVisible(false);
        iconRing->setVisible(true);
        pauseBox->setVisible(false);
        ringBox->setVisible(true);
        bottomDescription->setVisible(true);
        bottomDescription->setText(utils::translate("app_bell_focus_well_done"));
        mainVBox->resizeItems();


@@ 163,8 166,8 @@ namespace app::focus
    void FocusTimerWindow::showFocusSessionCountdown()
    {
        timer->setVisible(true);
        iconPause->setVisible(false);
        iconRing->setVisible(false);
        pauseBox->setVisible(false);
        ringBox->setVisible(false);
        bottomDescription->setVisible(true);
        bottomDescription->setText(utils::translate("app_bell_focus_time"));
        mainVBox->resizeItems();


@@ 173,8 176,8 @@ namespace app::focus
    void FocusTimerWindow::showTimeForBreakInfo()
    {
        timer->setVisible(false);
        iconPause->setVisible(false);
        iconRing->setVisible(true);
        pauseBox->setVisible(false);
        ringBox->setVisible(true);
        bottomDescription->setVisible(true);
        bottomDescription->setText(utils::translate("app_bell_focus_time_for_break"));
        mainVBox->resizeItems();


@@ 184,8 187,8 @@ namespace app::focus
    void FocusTimerWindow::showShortBreakCountdown()
    {
        timer->setVisible(true);
        iconPause->setVisible(false);
        iconRing->setVisible(false);
        pauseBox->setVisible(false);
        ringBox->setVisible(false);
        bottomDescription->setVisible(true);
        bottomDescription->setText(utils::translate("app_bell_focus_short_break"));
        mainVBox->resizeItems();


@@ 194,8 197,8 @@ namespace app::focus
    void FocusTimerWindow::showLongBreakCountdown()
    {
        timer->setVisible(true);
        iconPause->setVisible(false);
        iconRing->setVisible(false);
        pauseBox->setVisible(false);
        ringBox->setVisible(false);
        bottomDescription->setVisible(true);
        bottomDescription->setText(utils::translate("app_bell_focus_long_break"));
        mainVBox->resizeItems();


@@ 204,8 207,8 @@ namespace app::focus
    void FocusTimerWindow::showTimeForFocusInfo()
    {
        timer->setVisible(false);
        iconPause->setVisible(false);
        iconRing->setVisible(true);
        pauseBox->setVisible(false);
        ringBox->setVisible(true);
        bottomDescription->setVisible(true);
        bottomDescription->setText(utils::translate("app_bell_focus_time_for_focus"));
        mainVBox->resizeItems();


@@ 215,16 218,16 @@ namespace app::focus
    void FocusTimerWindow::pause()
    {
        timer->setVisible(false);
        iconPause->setVisible(true);
        iconRing->setVisible(false);
        pauseBox->setVisible(true);
        ringBox->setVisible(false);
        mainVBox->resizeItems();
    }

    void FocusTimerWindow::resume()
    {
        timer->setVisible(true);
        iconPause->setVisible(false);
        iconRing->setVisible(false);
        pauseBox->setVisible(false);
        ringBox->setVisible(false);
        mainVBox->resizeItems();
    }


M products/BellHybrid/apps/application-bell-focus-timer/windows/FocusTimerWindow.hpp => products/BellHybrid/apps/application-bell-focus-timer/windows/FocusTimerWindow.hpp +4 -3
@@ 41,13 41,14 @@ namespace app::focus

      private:
        std::unique_ptr<FocusTimerContract::Presenter> presenter;

        VBox *mainVBox{nullptr};
        BellStatusClock *clock{nullptr};
        ArcProgressBar *progress{nullptr};
        VBox *pauseBox{nullptr};
        VBox *ringBox{nullptr};
        TimeMinuteSecondWidget *timer{nullptr};
        TextFixedSize *bottomDescription{nullptr};
        Icon *iconPause{nullptr};
        Icon *iconRing{nullptr};
        BellStatusClock *clock{nullptr};

        void setTime(std::time_t newTime) override;
        void setTimeFormat(utils::time::Locale::TimeFormat fmt) override;

M products/BellHybrid/apps/application-bell-meditation-timer/data/MeditationStyle.hpp => products/BellHybrid/apps/application-bell-meditation-timer/data/MeditationStyle.hpp +3 -3
@@ 26,9 26,9 @@ namespace app::meditationStyle
        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 minSizeY  = 154U;
            inline constexpr auto marginTop = 63U;
        } // namespace pauseIcon

        namespace clock

M products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.cpp +11 -9
@@ 84,12 84,14 @@ namespace gui
        timer->setMargins(Margins(0, runningStyle::timer::marginTop, 0, 0));
        timer->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));

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

        bottomDescription = new TextFixedSize(
            mainVBox, 0, 0, runningStyle::bottomDescription::maxSizeX, runningStyle::bottomDescription::maxSizeY);


@@ 99,7 101,7 @@ namespace gui
        bottomDescription->setMargins(Margins(0, 0, 0, 0));
        bottomDescription->activeItem = false;
        bottomDescription->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
        bottomDescription->setRichText(utils::translate("app_bellmain_meditation_timer"));
        bottomDescription->setText(utils::translate("app_bellmain_meditation_timer"));
        bottomDescription->drawUnderline(false);
        bottomDescription->setVisible(true);



@@ 151,14 153,14 @@ namespace gui
    void MeditationRunningWindow::pause()
    {
        timer->setVisible(false);
        icon->setVisible(true);
        pauseBox->setVisible(true);
        mainVBox->resizeItems();
    }

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


M products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.hpp => products/BellHybrid/apps/application-bell-meditation-timer/windows/MeditationRunningWindow.hpp +3 -3
@@ 12,7 12,6 @@ namespace gui
{
    class ArcProgressBar;
    class BellStatusClock;
    class Icon;
    class TimeMinuteSecondWidget;

    class MeditationRunningWindow : public AppWindow, public app::meditation::MeditationProgressContract::View


@@ 32,12 31,13 @@ namespace gui

      private:
        std::unique_ptr<app::meditation::MeditationProgressContract::Presenter> presenter;

        VBox *mainVBox{nullptr};
        BellStatusClock *clock{nullptr};
        ArcProgressBar *progress{nullptr};
        VBox *pauseBox{nullptr};
        TimeMinuteSecondWidget *timer{nullptr};
        TextFixedSize *bottomDescription{nullptr};
        Icon *icon{nullptr};
        BellStatusClock *clock{nullptr};

        void setTime(std::time_t newTime) override;
        void setTimeFormat(utils::time::Locale::TimeFormat fmt) override;

M products/BellHybrid/apps/application-bell-powernap/data/PowerNapStyle.hpp => products/BellHybrid/apps/application-bell-powernap/data/PowerNapStyle.hpp +6 -6
@@ 29,17 29,17 @@ namespace gui::powerNapStyle
        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 minSizeY  = 154U;
            inline constexpr auto marginTop = 63U;
        } // namespace pauseIcon

        namespace ringIcon
        {
            inline constexpr auto image     = "big_bell_ringing";
            inline constexpr auto maxSizeX  = 210U;
            inline constexpr auto maxSizeY  = 203U;
            inline constexpr auto marginTop = timer::marginTop - (maxSizeY - timer::maxSizeY);
            inline constexpr auto minSizeX  = 210U;
            inline constexpr auto minSizeY  = 154U;
            inline constexpr auto marginTop = 63U;
        } // namespace ringIcon

        namespace clock

M products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.hpp => products/BellHybrid/apps/application-bell-powernap/presenter/PowerNapProgressPresenter.hpp +0 -2
@@ 87,8 87,6 @@ namespace app::powernap
        auto onBeforeShow() -> void override;

      private:
        static constexpr auto endWindowTimeout = std::chrono::seconds{5};

        app::ApplicationCommon *app{};
        settings::Settings *settings{};
        AbstractAudioModel &audioModel;

M products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.cpp => products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.cpp +38 -29
@@ 2,10 2,16 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "PowerNapProgressWindow.hpp"
#include "application-bell-powernap/ApplicationBellPowerNap.hpp"
#include "ApplicationBellPowerNap.hpp"
#include "data/PowerNapStyle.hpp"
#include "data/PowerNapSwitchData.hpp"

#include <apps-common/widgets/ProgressTimerWithBarGraphAndCounter.hpp>
#include <apps-common/widgets/BarGraph.hpp>
#include <apps-common/widgets/TimeMinuteSecondWidget.hpp>
#include <common/widgets/BellStatusClock.hpp>
#include <gui/widgets/Icon.hpp>

#include <keymap/KeyMap.hpp>

namespace


@@ 19,7 25,7 @@ namespace gui
    PowerNapProgressWindow::PowerNapProgressWindow(
        app::ApplicationCommon *app,
        std::shared_ptr<app::powernap::PowerNapProgressContract::Presenter> &&windowPresenter)
        : AppWindow(app, gui::window::name::powerNapProgress), presenter{std::move(windowPresenter)}
        : AppWindow(app, window::name::powerNapProgress), presenter{std::move(windowPresenter)}
    {
        presenter->attach(this);
        buildInterface();


@@ 39,7 45,7 @@ namespace gui

    void PowerNapProgressWindow::buildLayout()
    {
        using namespace gui::powerNapStyle;
        using namespace powerNapStyle;
        const auto progressArcRadius = progressStyle::progress::radius;
        const auto progressArcWidth  = progressStyle::progress::penWidth;
        const auto arcStartAngle     = -90 - progressStyle::progress::verticalDeviationDegrees;


@@ 66,7 72,7 @@ namespace gui
        clock = new BellStatusClock(mainVBox);
        clock->setMaximumSize(progressStyle::clock::maxSizeX, progressStyle::clock::maxSizeY);
        clock->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        clock->setMargins(gui::Margins(0, progressStyle::clock::marginTop, 0, 0));
        clock->setMargins(Margins(0, progressStyle::clock::marginTop, 0, 0));

        timer = new TimeMinuteSecondWidget(mainVBox,
                                           0,


@@ 75,33 81,36 @@ namespace gui
                                           progressStyle::timer::maxSizeY,
                                           TimeMinuteSecondWidget::DisplayType::OnlyMinutes);
        timer->setMinimumSize(progressStyle::timer::maxSizeX, progressStyle::timer::maxSizeY);
        timer->setMargins(gui::Margins(0, progressStyle::timer::marginTop, 0, 0));
        timer->setMargins(Margins(0, progressStyle::timer::marginTop, 0, 0));
        timer->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));

        iconPause = new Icon(mainVBox, 0, 0, 0, 0, {}, {});
        iconPause->setMinimumSize(progressStyle::pauseIcon::maxSizeX, progressStyle::pauseIcon::maxSizeY);
        iconPause->setMargins(gui::Margins(0, progressStyle::pauseIcon::marginTop, 0, 0));
        iconPause->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        iconPause->image->set(progressStyle::pauseIcon::image, ImageTypeSpecifier::W_G);
        iconPause->setVisible(false);

        iconRing = new Icon(mainVBox, 0, 0, 0, 0, {}, {});
        iconRing->setMinimumSize(progressStyle::ringIcon::maxSizeX, progressStyle::ringIcon::maxSizeY);
        iconRing->setMargins(gui::Margins(0, progressStyle::ringIcon::marginTop, 0, 0));
        iconRing->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        iconRing->image->set(progressStyle::ringIcon::image, ImageTypeSpecifier::W_G);
        iconRing->setVisible(false);

        bottomDescription = new gui::TextFixedSize(
        pauseBox = new VBox(mainVBox);
        pauseBox->setMinimumSize(progressStyle::pauseIcon::minSizeX, progressStyle::pauseIcon::minSizeY);
        pauseBox->setMargins(Margins(0, progressStyle::pauseIcon::marginTop, 0, 0));
        pauseBox->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        pauseBox->setEdges(RectangleEdge::None);
        new Image(pauseBox, progressStyle::pauseIcon::image, ImageTypeSpecifier::W_G);
        pauseBox->setVisible(false);
        pauseBox->resizeItems();

        ringBox = new VBox(mainVBox);
        ringBox->setMinimumSize(progressStyle::ringIcon::minSizeX, progressStyle::ringIcon::minSizeY);
        ringBox->setMargins(Margins(0, progressStyle::pauseIcon::marginTop, 0, 0));
        ringBox->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
        ringBox->setEdges(RectangleEdge::None);
        new Image(ringBox, progressStyle::ringIcon::image, ImageTypeSpecifier::W_G);
        ringBox->setVisible(false);
        ringBox->resizeItems();

        bottomDescription = new TextFixedSize(
            mainVBox, 0, 0, progressStyle::bottomDescription::maxSizeX, progressStyle::bottomDescription::maxSizeY);
        bottomDescription->setMaximumSize(progressStyle::bottomDescription::maxSizeX,
                                          progressStyle::bottomDescription::maxSizeY);
        bottomDescription->setFont(progressStyle::bottomDescription::font);
        bottomDescription->setMargins(gui::Margins(0, 0, 0, 0));
        bottomDescription->setMargins(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_power_nap"));
        bottomDescription->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Top));
        bottomDescription->setText(utils::translate("app_bellmain_power_nap"));
        bottomDescription->drawUnderline(false);
        bottomDescription->setVisible(true);



@@ 153,7 162,7 @@ namespace gui

    void PowerNapProgressWindow::napEnded()
    {
        application->switchWindow(gui::window::name::powerNapSessionEnded, std::make_unique<gui::PowerNapSwitchData>());
        application->switchWindow(window::name::powerNapSessionEnded, std::make_unique<PowerNapSwitchData>());
    }

    void PowerNapProgressWindow::setTime(std::time_t newTime)


@@ 178,22 187,22 @@ namespace gui
    void PowerNapProgressWindow::pause()
    {
        timer->setVisible(false);
        iconPause->setVisible(true);
        pauseBox->setVisible(true);
        mainVBox->resizeItems();
    }

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

    void PowerNapProgressWindow::progressFinished()
    {
        timer->setVisible(false);
        iconPause->setVisible(false);
        iconRing->setVisible(true);
        pauseBox->setVisible(false);
        ringBox->setVisible(true);
        mainVBox->resizeItems();
    }


M products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.hpp => products/BellHybrid/apps/application-bell-powernap/windows/PowerNapProgressWindow.hpp +10 -11
@@ 4,18 4,16 @@
#pragma once

#include "presenter/PowerNapProgressPresenter.hpp"
#include <apps-common/widgets/BarGraph.hpp>
#include <apps-common/widgets/TimeMinuteSecondWidget.hpp>
#include <common/widgets/BellStatusClock.hpp>
#include <gui/widgets/Icon.hpp>

#include <AppWindow.hpp>
#include <Application.hpp>
#include <InputEvent.hpp>
#include <Text.hpp>

namespace gui
{
    class Text;
    class ArcProgressBar;
    class TimeMinuteSecondWidget;
    class BellStatusClock;

    class PowerNapProgressWindow : public AppWindow, public app::powernap::PowerNapProgressContract::View
    {
      public:


@@ 32,13 30,14 @@ namespace gui

      private:
        std::shared_ptr<app::powernap::PowerNapProgressContract::Presenter> presenter;

        VBox *mainVBox{nullptr};
        BellStatusClock *clock{nullptr};
        ArcProgressBar *progress{nullptr};
        VBox *pauseBox{nullptr};
        VBox *ringBox{nullptr};
        TimeMinuteSecondWidget *timer{nullptr};
        gui::TextFixedSize *bottomDescription{nullptr};
        BellStatusClock *clock{nullptr};
        Icon *iconPause{nullptr};
        Icon *iconRing{nullptr};
        TextFixedSize *bottomDescription{nullptr};

        void setTime(std::time_t newTime) override;
        void setTimeFormat(utils::time::Locale::TimeFormat fmt) override;