// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "ContactFlagIconWidget.hpp"
#include "ContactFlagsStyle.hpp"
#include "tools/Common.hpp"
namespace gui
{
ContactFlagIconWidget::ContactFlagIconWidget(const std::string &iconName, const std::string &itemText, Item *parent)
: Rect(parent, 0, 0, style::widget::ContactFlag::itemWidth, style::widget::ContactFlag::itemHeight),
iconName(iconName), itemText(itemText)
{
buildItemWithIcon();
buildItem();
}
ContactFlagIconWidget::ContactFlagIconWidget(uint8_t iconNumber, const std::string &itemText, Item *parent)
: Rect(parent, 0, 0, style::widget::ContactFlag::itemWidth, style::widget::ContactFlag::itemHeight),
number(iconNumber), itemText(itemText), numericIcon(true)
{
buildItemWithText();
buildItem();
}
void ContactFlagIconWidget::setIconNumber(uint8_t iconNumber)
{
if ((numericLabel != nullptr) && (number != iconNumber)) {
number = iconNumber;
numericLabel->setText(std::to_string(number));
}
}
void ContactFlagIconWidget::buildItemWithIcon()
{
icon = new Image(
this, 0, 0, style::widget::ContactFlag::iconsSize, style::widget::ContactFlag::iconsSize, iconName);
icon->setEdges(RectangleEdge::None);
}
void ContactFlagIconWidget::buildItemWithText()
{
numericLabel =
new Label(this, 0, 0, style::widget::ContactFlag::iconsSize, style::widget::ContactFlag::iconsSize);
numericLabel->setFont(style::window::font::bigbold);
numericLabel->setText(std::to_string(number));
numericLabel->setAlignment(Alignment(Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
numericLabel->setEdges(RectangleEdge::None);
}
void ContactFlagIconWidget::buildItem()
{
setEdges(RectangleEdge::None);
label = new Label(this);
label->setFilled(false);
label->setFont(style::window::font::verysmall);
label->setText(itemText);
label->setMinimumWidthToFitText();
label->setMinimumHeightToFitText();
label->setTextEllipsisType(gui::TextEllipsis::None);
label->setEdges(RectangleEdge::None);
label->setAlignment(Alignment(Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
mainBox = new VBox(this, 0, 0, style::widget::ContactFlag::itemWidth, style::widget::ContactFlag::itemHeight);
mainBox->setAlignment(Alignment(Alignment::Horizontal::Center, Alignment::Vertical::Center));
mainBox->setEdges(RectangleEdge::None);
if (numericIcon) {
mainBox->addWidget(numericLabel);
}
else {
mainBox->addWidget(icon);
}
mainBox->addWidget(label);
mainBox->resizeItems();
}
} // namespace gui