// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "OptionSetting.hpp"
#include "widgets/ButtonOnOff.hpp"
namespace gui
{
auto OptionSettings::build() const -> Item *
{
auto optionBodyHBox = new HBox(nullptr, 0, 0, style::window::default_body_width, style::window::label::big_h);
optionBodyHBox->setAlignment(Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
optionBodyHBox->activatedCallback = activatedCallback;
optionBodyHBox->focusChangedCallback = focusCb;
style::window::decorate(optionBodyHBox);
auto optionNameLabel =
new Label(optionBodyHBox, indent ? style::window::default_left_margin : 0, 0, 0, 0, text);
optionNameLabel->setEdges(RectangleEdge::None);
optionNameLabel->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
optionNameLabel->setFont(style::window::font::big);
std::string imageName;
int optionRightItemWidth = 0;
switch (rightItem) {
case RightItem::ArrowBlack:
imageName = "right_label_arrow";
break;
case RightItem::ArrowWhite:
imageName = "right_label_arrow_border";
break;
case RightItem::On:
new ButtonOnOff(optionBodyHBox, ButtonState::On);
optionRightItemWidth = style::buttonOnOff::w;
break;
case RightItem::Off:
new ButtonOnOff(optionBodyHBox, ButtonState::Off);
optionRightItemWidth = style::buttonOnOff::w;
break;
case RightItem::Bt:
imageName = "bt";
break;
case RightItem::Checked:
imageName = "small_tick_W_M";
break;
default:
break;
}
if (!imageName.empty()) {
auto image = new gui::Image(optionBodyHBox, 0, 0, 0, 0, imageName);
optionRightItemWidth = image->getWidth();
}
if (indent) {
optionRightItemWidth += style::window::default_left_margin;
}
optionNameLabel->setMinimumSize(style::window::default_body_width - optionRightItemWidth,
style::window::label::big_h);
return optionBodyHBox;
}
} // namespace gui