mirror of
https://github.com/mudita/MuditaOS.git
synced 2026-04-20 06:59:13 -04:00
100 lines
3.9 KiB
C++
100 lines
3.9 KiB
C++
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
|
|
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
|
|
|
|
#include "PhonebookItem.hpp"
|
|
#include "application-phonebook/data/PhonebookStyle.hpp"
|
|
#include <Style.hpp>
|
|
#include "Image.hpp"
|
|
|
|
namespace gui
|
|
{
|
|
|
|
PhonebookItem::PhonebookItem()
|
|
{
|
|
setMargins(Margins(0, style::margins::big, 0, 0));
|
|
setMinimumSize(phonebookStyle::contactItem::w, phonebookStyle::contactItem::h);
|
|
|
|
setEdges(RectangleEdge::Bottom | RectangleEdge::Top);
|
|
|
|
hBox = new gui::HBox(this, 0, 0, 0, 0);
|
|
hBox->setEdges(gui::RectangleEdge::None);
|
|
hBox->setPenFocusWidth(style::window::default_border_focus_w);
|
|
hBox->setPenWidth(style::window::default_border_rect_no_focus);
|
|
|
|
contactName = new gui::Label(hBox, 0, 0, 0, 0);
|
|
contactName->setPenFocusWidth(0);
|
|
contactName->setPenWidth(0);
|
|
contactName->setFont(style::window::font::small);
|
|
contactName->setPadding(Padding(style::padding::default_left_text_padding, 0, 0, 0));
|
|
contactName->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center});
|
|
contactName->setMinimumHeight(phonebookStyle::contactItem::h);
|
|
contactName->setMaximumWidth(phonebookStyle::contactItem::w);
|
|
|
|
dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool {
|
|
hBox->setArea({0, 0, newDim.w, newDim.h});
|
|
return true;
|
|
};
|
|
}
|
|
|
|
void PhonebookItem::setContact(std::shared_ptr<ContactRecord> contactRecord)
|
|
{
|
|
contact = std::move(contactRecord);
|
|
contactName->setText(contact->getFormattedName(ContactRecord::NameFormatType::List));
|
|
contactName->setFont(style::window::font::big);
|
|
favourite = contact->isOnFavourites();
|
|
markBlocked(contact->isOnBlocked());
|
|
}
|
|
|
|
UTF8 PhonebookItem::getLabelMarker()
|
|
{
|
|
if (favourite && (labelMarkerDisplayMode == LabelMarkerDisplayMode::IncludeFavourites)) {
|
|
// If contact is favorite return proper UTF string
|
|
return utils::translate("app_phonebook_favorite_contacts_title");
|
|
}
|
|
else if (!contact->alternativeName.empty()) {
|
|
// else if return first surname contact letter
|
|
return contact->alternativeName.substr(0, 1);
|
|
}
|
|
else {
|
|
// else return first firstname contact letter
|
|
return contact->primaryName.substr(0, 1);
|
|
}
|
|
}
|
|
|
|
void PhonebookItem::markBlocked(bool val)
|
|
{
|
|
if (val) {
|
|
auto blockedIcon = new Image(hBox, 0, 0, "phonebook_blocked_32px_W_G");
|
|
blockedIcon->setAlignment(Alignment(gui::Alignment::Vertical::Center));
|
|
blockedIcon->setMargins(Margins(0, 0, phonebookStyle::contactItem::blocked_right_margin, 0));
|
|
}
|
|
}
|
|
|
|
void PhonebookItem::setLabelMarkerDisplayMode(LabelMarkerDisplayMode mode)
|
|
{
|
|
labelMarkerDisplayMode = mode;
|
|
}
|
|
|
|
PhonebookMarkItem::PhonebookMarkItem(const UTF8 &markText)
|
|
{
|
|
setMargins(Margins(0, style::margins::big, 0, 0));
|
|
setMinimumSize(phonebookStyle::contactItem::w, phonebookStyle::contactItem::h);
|
|
|
|
setEdges(RectangleEdge::None);
|
|
activeItem = false;
|
|
|
|
markLabel = new TextWithSnippet(this, style::window::font::small);
|
|
markLabel->setPadding(Padding(style::padding::default_left_text_padding, 0, 0, 0));
|
|
markLabel->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center});
|
|
markLabel->setMinimumHeight(phonebookStyle::contactItem::h);
|
|
markLabel->setMaximumWidth(phonebookStyle::contactItem::w);
|
|
markLabel->textWidget->setText(markText);
|
|
|
|
dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool {
|
|
markLabel->setArea({0, 0, newDim.w, newDim.h});
|
|
markLabel->resizeItems();
|
|
return true;
|
|
};
|
|
}
|
|
} /* namespace gui */
|