~aleteoryx/muditaos

1cfc7bfb94f859f88d22831c255b12e5df57610b — Tomasz Rybarski 4 years ago 28401e6
[BH-1154] Snooze Chime Interval / Length Coherent

Set Snooze Chime Interval to be coherent with length
M products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SnoozeListItemProvider.cpp => products/BellHybrid/apps/application-bell-settings/models/alarm_settings/SnoozeListItemProvider.cpp +34 -6
@@ 11,6 11,16 @@ namespace app::bell_settings
{
    using namespace gui;

    enum Intervals
    {
        Interval_1  = 1,
        Interval_2  = 2,
        Interval_5  = 5,
        Interval_10 = 10,
        Interval_15 = 15,
        Interval_30 = 30
    };

    SnoozeListItemProvider::SnoozeListItemProvider(AbstractSnoozeSettingsModel &model,
                                                   std::vector<UTF8> chimeTonesRange)
        : model{model}


@@ 47,6 57,7 @@ namespace app::bell_settings
                chimeLength->setBottomDescribtionText(utils::translate("common_minutes_lower"));
            }
        });

        chimeLength->onEnter = [onOff, this]() {
            if (not onOff->isActive()) {
                this->onExit();


@@ 56,19 67,36 @@ namespace app::bell_settings
        internalData.emplace_back(chimeLength);

        const UTF8 minStr = utils::translate("common_minute_short");
        const auto range  = NumWithStringListItem::NumWithStringSpinner::Range{
            NumWithStringListItem::Value{utils::translate("app_settings_toggle_off")},
            NumWithStringListItem::Value{1, minStr},
            NumWithStringListItem::Value{2, minStr},
            NumWithStringListItem::Value{3, minStr},
            NumWithStringListItem::Value{5, minStr}};
        const auto range  = NumWithStringListItem::NumWithStringSpinner::Range{NumWithStringListItem::Value{0, minStr}};

        auto chimeInterval = new NumWithStringListItem(
            model.getSnoozeChimeInterval(),
            range,
            utils::translate("app_bell_settings_alarm_settings_snooze_chime_interval"),
            utils::translate("app_bell_settings_alarm_settings_snooze_chime_interval_bot_desc"));

        internalData.emplace_back(chimeInterval);

        chimeLength->onProceed = [chimeInterval, chimeLength, this]() {
            if (chimeInterval != nullptr) {
                auto val = chimeLength->getCurrentValue();
                NumWithStringListItem::NumWithStringSpinner::Range chimeRange;
                const UTF8 minStr = utils::translate("common_minute_short");
                chimeRange.push_back(NumWithStringListItem::Value{utils::translate("app_alarm_clock_no_snooze")});
                for (unsigned int i = 1; i <= val; i++) {
                    if ((i != Intervals::Interval_1) && (i != Intervals::Interval_2) && (i != Intervals::Interval_5) &&
                        (i != Intervals::Interval_10) && (i != Intervals::Interval_15) &&
                        (i != Intervals::Interval_30)) {
                        continue;
                    }
                    chimeRange.push_back(NumWithStringListItem::Value{i, minStr});
                }
                chimeInterval->getSpinner()->setRange(chimeRange);
                chimeInterval->setArrowsVisibility(chimeRange);
            }
            return false;
        };

        auto snoozeChimeTone = new UTF8ListItem(model.getSnoozeChimeTone(),
                                                std::move(chimeTonesRange),
                                                utils::translate("app_bell_settings_alarm_settings_snooze_chime_tone"));

M products/BellHybrid/apps/common/include/common/widgets/ListItems.hpp => products/BellHybrid/apps/common/include/common/widgets/ListItems.hpp +5 -2
@@ 59,13 59,16 @@ namespace gui
                                       const std::string &bottomDescription = "");

        bool isOff() const;
        NumWithStringSpinner *getSpinner()
        {
            return spinner;
        }
        void setArrowsVisibility(const NumWithStringSpinner::Range &range);

      private:
        NumWithStringSpinner *spinner{};
        const UTF8 offStr;
        const UTF8 minStr;

        void setArrowsVisibility(const NumWithStringSpinner::Range &range);
    };

    class UTF8ListItem : public BellSideListItemWithCallbacks