// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "NotesItem.hpp" #include #include #include namespace gui { NotesItem::NotesItem(std::shared_ptr record) : note{std::move(record)} { buildInterface(); } void NotesItem::buildInterface() { namespace notesItemStyle = app::notes::style::list::item; setMinimumSize(style::window::default_body_width, notesItemStyle::Height); setMaximumSize(style::window::default_body_width, notesItemStyle::Height); setRadius(notesItemStyle::Radius); setEdges(RectangleEdge::Bottom | RectangleEdge::Top); setPenFocusWidth(style::window::default_border_focus_w); setPenWidth(style::window::default_border_no_focus_w); date = new gui::Label(this, 0, 0, 0, 0); date->setEdges(RectangleEdge::None); date->setFont(style::window::font::medium); date->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Right, gui::Alignment::Vertical::Top}); title = createTextField(this, style::window::font::bigbold); snippet = createTextField(this, style::window::font::small); } gui::TextFixedSize *NotesItem::createTextField(Item *parent, const UTF8 &fontName) { auto item = new gui::TextFixedSize(parent, 0, 0, 0, 0); item->setFont(fontName); item->setEdges(gui::RectangleEdge::None); item->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Top}); item->setPenFocusWidth(::style::window::default_border_focus_w); item->setPenWidth(::style::window::default_border_rect_no_focus); item->setEditMode(gui::EditMode::Browse); item->setCursorStartPosition(CursorStartPosition::DocumentBegin); item->setUnderline(false); return item; } void NotesItem::setSnippet(const UTF8 ¬eText) { title->setText(noteText); snippet->setText(noteText); } void NotesItem::setDateText(std::uint32_t timestamp) { if (auto dt = utils::time::DateTime(timestamp); dt.isYesterday()) { date->setText(utils::localize.get("common_yesterday")); } else { date->setText(dt); } } bool NotesItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) { namespace notesItemStyle = app::notes::style::list::item; title->setPosition(notesItemStyle::LeftPadding, notesItemStyle::VerticalPadding); title->setSize(notesItemStyle::title::Width, notesItemStyle::title::Height); date->setPosition(notesItemStyle::LeftPadding, notesItemStyle::VerticalPadding); date->setSize(newDim.w - (notesItemStyle::LeftPadding + notesItemStyle::RightPadding), notesItemStyle::date::Height); snippet->setPosition(notesItemStyle::LeftPadding, notesItemStyle::VerticalPadding + notesItemStyle::title::Height + notesItemStyle::snippet::TopMargin); snippet->setSize(newDim.w - (notesItemStyle::LeftPadding + notesItemStyle::RightPadding), newDim.h - (2 * notesItemStyle::VerticalPadding) - notesItemStyle::title::Height - notesItemStyle::snippet::TopMargin); // Temporary fix - text is loading really long if no size for it provided. setSnippet(note->snippet); setDateText(note->date); return true; } } // namespace gui