// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "BaseThreadItem.hpp" #include "application-messages/data/MessagesStyle.hpp" namespace gui { namespace { constexpr auto NumberImportancePrefix = '#'; } // namespace BaseThreadItem::BaseThreadItem() { using namespace style; setMargins(Margins(0, style::margins::small, 0, style::margins::small)); setMinimumSize(window::default_body_width, style::messages::threadItem::sms_thread_item_h); setMaximumSize(window::default_body_width, style::messages::threadItem::sms_thread_item_h); setRadius(0); setEdges(RectangleEdge::Bottom | RectangleEdge::Top); setPenFocusWidth(window::default_border_focus_w); setPenWidth(window::default_border_no_focus_w); contact = new gui::Label(this, 0, 0, 0, 0); contact->setPenFocusWidth(window::default_border_no_focus_w); contact->setPenWidth(window::default_border_no_focus_w); contact->setFont(style::window::font::big); contact->setEllipsis(Ellipsis::Right); contact->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center}); numberImportance = new gui::Label(this, 0, 0, 0, 0); numberImportance->setPenFocusWidth(window::default_border_no_focus_w); numberImportance->setPenWidth(window::default_border_no_focus_w); numberImportance->setFont(style::window::font::small); numberImportance->setAlignment( gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center}); timestamp = new gui::Label(this, 0, 0, 0, 0); timestamp->setPenFocusWidth(window::default_border_no_focus_w); timestamp->setPenWidth(window::default_border_no_focus_w); timestamp->setFont(style::window::font::small); timestamp->setEllipsis(Ellipsis::Right); timestamp->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Right, gui::Alignment::Vertical::Center}); preview = new gui::Label(this, 0, 0, 0, 0); preview->setPenFocusWidth(window::default_border_no_focus_w); preview->setPenWidth(window::default_border_no_focus_w); preview->setFont(style::window::font::small); preview->setEllipsis(Ellipsis::Right); preview->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center}); } void BaseThreadItem::onDimensionChangedTop(const BoundingBox & /*oldDim*/, const BoundingBox &newDim) { namespace msgStyle = style::messages::threadItem; contact->setPosition(msgStyle::leftMargin, msgStyle::topMargin); contact->setSize(newDim.w - msgStyle::cotactWidthOffset, newDim.h / 2 - msgStyle::topMargin); const auto isNumberImportanceSet = !numberImportance->getText().empty(); if (isNumberImportanceSet) { contact->setSize(contact->getWidth() - msgStyle::numberImportanceWidth, Axis::X); numberImportance->setPosition(msgStyle::leftMargin + contact->getTextWidth() + msgStyle::numberImportanceLeftMargin, msgStyle::topMargin); numberImportance->setSize(msgStyle::numberImportanceWidth, newDim.h / 2 - msgStyle::topMargin); } timestamp->setPosition(newDim.w - msgStyle::timestampWidth, msgStyle::topMargin); timestamp->setSize(msgStyle::timestampWidth, newDim.h / 2 - msgStyle::topMargin); } void BaseThreadItem::onDimensionChangedBottom(const BoundingBox & /*oldDim*/, const BoundingBox &newDim) { namespace msgStyle = style::messages::threadItem; preview->setPosition(msgStyle::leftMargin, newDim.h / 2); preview->setSize(newDim.w - msgStyle::previewWidthOffset, newDim.h / 2 - msgStyle::bottomMargin); } bool BaseThreadItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) { onDimensionChangedTop(oldDim, newDim); onDimensionChangedBottom(oldDim, newDim); return true; } void BaseThreadItem::displayNumberImportance(long int id) { numberImportance->setText(NumberImportancePrefix + std::to_string(id)); } } // namespace gui