@@ 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"));
@@ 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