mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-10-11 16:47:06 -04:00
126 lines
4.3 KiB
C++
126 lines
4.3 KiB
C++
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "AlarmSetSpinner.hpp"
|
|
#include <FontManager.hpp>
|
|
#include <RawFont.hpp>
|
|
#include <gui/widgets/Label.hpp>
|
|
|
|
namespace gui
|
|
{
|
|
AlarmSetSpinner::AlarmSetSpinner(Item *parent, Length x, Length y, Length w, Length h) : HBox(parent, x, y, w, h)
|
|
{
|
|
setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
|
|
setEdges(RectangleEdge::None);
|
|
|
|
leftArrow = new ImageBox(this, 0, 0, 0, 0, new Image("bell_arrow_left"));
|
|
leftArrow->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
|
|
leftArrow->setMargins(Margins(0, 0, 0, 0));
|
|
leftArrow->setMinimumSize(style::alarm_set_spinner::arrow::w, style::alarm_set_spinner::arrow::h);
|
|
|
|
alarmImg = new ImageBox(this, 0, 0, 0, 0, new Image("bell_alarm_deactivated"));
|
|
alarmImg->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
|
|
alarmImg->setMargins(Margins(0, 0, 0, 0));
|
|
alarmImg->setMinimumSize(style::alarm_set_spinner::arrow::w, style::alarm_set_spinner::arrow::h);
|
|
|
|
timeSpinner = new TimeSetSpinner(this, 0, 0, 0, 0);
|
|
timeSpinner->setFont(style::window::font::largelight);
|
|
timeSpinner->setEditMode(EditMode::Scroll);
|
|
timeSpinner->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
|
|
timeSpinner->setMargins(Margins(0, 0, 0, 0));
|
|
timeSpinner->setMinimumHeight(style::alarm_set_spinner::h);
|
|
|
|
rightArrow = new ImageBox(this, 0, 0, 0, 0, new Image("bell_arrow_right"));
|
|
rightArrow->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
|
|
rightArrow->setMargins(Margins(0, 0, 0, 0));
|
|
rightArrow->setMinimumSize(style::alarm_set_spinner::arrow::w, style::alarm_set_spinner::arrow::h);
|
|
|
|
resizeItems();
|
|
|
|
if (editMode == EditMode::Edit) {
|
|
setFocusItem(timeSpinner);
|
|
}
|
|
}
|
|
|
|
auto AlarmSetSpinner::onInput(const InputEvent &inputEvent) -> bool
|
|
{
|
|
LOG_INFO("Bell AlarmSetSpinner Input");
|
|
return this->focusItem->onInput(inputEvent);
|
|
}
|
|
|
|
auto AlarmSetSpinner::setHour(int value) noexcept -> void
|
|
{
|
|
timeSpinner->setHour(value);
|
|
}
|
|
|
|
auto AlarmSetSpinner::setMinute(int value) noexcept -> void
|
|
{
|
|
timeSpinner->setMinute(value);
|
|
}
|
|
|
|
auto AlarmSetSpinner::setFont(std::string newFontName) noexcept -> void
|
|
{
|
|
fontName = std::move(newFontName);
|
|
timeSpinner->setFont(fontName);
|
|
}
|
|
|
|
auto AlarmSetSpinner::setEditMode(EditMode mode) noexcept -> void
|
|
{
|
|
editMode = mode;
|
|
if (editMode == EditMode::Edit) {
|
|
setFocusItem(timeSpinner);
|
|
leftArrow->setVisible(true);
|
|
rightArrow->setVisible(true);
|
|
}
|
|
else {
|
|
setFocusItem(nullptr);
|
|
leftArrow->setVisible(false);
|
|
rightArrow->setVisible(false);
|
|
}
|
|
|
|
timeSpinner->setEditMode(editMode);
|
|
}
|
|
|
|
auto AlarmSetSpinner::getHour() const noexcept -> int
|
|
{
|
|
return timeSpinner->getHour();
|
|
}
|
|
|
|
auto AlarmSetSpinner::getMinute() const noexcept -> int
|
|
{
|
|
return timeSpinner->getMinute();
|
|
}
|
|
|
|
auto AlarmSetSpinner::setAlarmStatus(BellAlarm::Status status) noexcept -> void
|
|
{
|
|
alarmStatus = status;
|
|
|
|
switch (alarmStatus) {
|
|
case BellAlarm::Status::ACTIVATED:
|
|
alarmImg->setImage("bell_alarm_activated");
|
|
break;
|
|
case BellAlarm::Status::DEACTIVATED:
|
|
alarmImg->setImage("bell_alarm_deactivated");
|
|
break;
|
|
case BellAlarm::Status::RINGING:
|
|
alarmImg->setImage("bell_alarm_ringing");
|
|
break;
|
|
case BellAlarm::Status::SNOOZE:
|
|
alarmImg->setImage("bell_alarm_snooze");
|
|
break;
|
|
case BellAlarm::Status::UNKNOWN:
|
|
alarmImg->setImage("bell_alarm_deactivated");
|
|
break;
|
|
default:
|
|
alarmImg->setImage("bell_alarm_deactivated");
|
|
break;
|
|
}
|
|
}
|
|
|
|
auto AlarmSetSpinner::getAlarmStatus() noexcept -> BellAlarm::Status
|
|
{
|
|
return alarmStatus;
|
|
}
|
|
|
|
} /* namespace gui */
|