M image/assets/lang/English.json => image/assets/lang/English.json +1 -1
@@ 476,7 476,7 @@
"app_phonebook_duplicate_numbers": "Number $CONTACT_SPEED_DIAL$ is assigned to \n $CONTACT_NAME$. Replace it?",
"app_phonebook_duplicate_speed_dial_title": "Speed dial key ($CONTACT_SPEED_DIAL$)",
"app_phonebook_options_title": "Options",
- "app_phonebook_options_edit": "Edit Contact",
+ "app_phonebook_options_edit": "Edit contact",
"app_phonebook_options_block": "Block",
"app_phonebook_options_block_confirm": "Block this contact?",
"app_phonebook_options_block_notification": "Contact blocked.",
M module-apps/application-music-player/widgets/SongItem.cpp => module-apps/application-music-player/widgets/SongItem.cpp +3 -3
@@ 38,7 38,7 @@ namespace gui
durationText->setMinimumSize(songItem::duration_w, songItem::text_h);
durationText->setMargins(Margins(0, 0, songItem::rightMargin, 0));
durationText->setEdges(RectangleEdge::None);
- durationText->setUnderline(false);
+ durationText->drawUnderline(false);
durationText->setFont(style::window::font::verysmall);
durationText->setAlignment(Alignment(gui::Alignment::Horizontal::Right, gui::Alignment::Vertical::Center));
durationText->setEditMode(EditMode::Browse);
@@ 49,7 49,7 @@ namespace gui
songText->setMaximumWidth(songItem::w);
songText->setMargins(Margins(songItem::leftMargin, 0, 0, 0));
songText->setEdges(RectangleEdge::None);
- songText->setUnderline(false);
+ songText->drawUnderline(false);
songText->setFont(style::window::font::bigbold);
songText->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
songText->setEditMode(EditMode::Browse);
@@ 64,7 64,7 @@ namespace gui
authorText->setMaximumWidth(songItem::w);
authorText->setMargins(Margins(songItem::leftMargin, 0, 0, 0));
authorText->setEdges(RectangleEdge::None);
- authorText->setUnderline(false);
+ authorText->drawUnderline(false);
authorText->setFont(style::window::font::medium);
authorText->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
authorText->setEditMode(EditMode::Browse);
M module-apps/application-notes/widgets/NotesItem.cpp => module-apps/application-notes/widgets/NotesItem.cpp +1 -1
@@ 44,7 44,7 @@ namespace gui
item->setPenWidth(::style::window::default_border_rect_no_focus);
item->setEditMode(gui::EditMode::Browse);
item->setCursorStartPosition(CursorStartPosition::DocumentBegin);
- item->setUnderline(false);
+ item->drawUnderline(false);
return item;
}
M module-apps/application-phonebook/data/PhonebookStyle.hpp => module-apps/application-phonebook/data/PhonebookStyle.hpp +4 -3
@@ 111,10 111,11 @@ namespace phonebookStyle
{
inline constexpr uint32_t w = style::window::default_body_width;
inline constexpr uint32_t h = 63;
- inline constexpr uint32_t title_label_h = 20;
- inline constexpr uint32_t input_text_h = 37;
+ inline constexpr uint32_t title_label_h = 24;
+ inline constexpr uint32_t input_text_h = 33;
inline constexpr uint32_t span_size = 6;
- inline constexpr int32_t underline_padding = 4;
+ inline constexpr uint32_t line_spacing = 15;
+ inline constexpr int32_t underline_padding = 2;
} // namespace inputLinesWithLabelWidget
namespace outputLinesTextWithLabelWidget
M module-apps/application-phonebook/models/NewContactModel.cpp => module-apps/application-phonebook/models/NewContactModel.cpp +5 -0
@@ 77,6 77,8 @@ void NewContactModel::createData()
internalData.push_back(new gui::InputBoxWithLabelAndIconWidget(phonebookInternals::ListItemName::SpeedDialKey));
+ internalData.back()->setMargins(gui::Margins(style::widgets::leftMargin, style::margins::very_big, 0, 0));
+
internalData.push_back(new gui::InputBoxWithLabelAndIconWidget(
phonebookInternals::ListItemName::AddToFavourites,
[app](const UTF8 &text) { app->getCurrentWindow()->bottomBarTemporaryMode(text, false); },
@@ 87,6 89,9 @@ void NewContactModel::createData()
[app](const UTF8 &text) { app->getCurrentWindow()->bottomBarTemporaryMode(text, false); },
[app]() { app->getCurrentWindow()->bottomBarRestoreFromTemporaryMode(); }));
+ internalData.back()->setMargins(
+ gui::Margins(style::widgets::leftMargin, style::margins::big, 0, style::margins::very_small));
+
internalData.push_back(new gui::InputLinesWithLabelIWidget(
phonebookInternals::ListItemName::Address,
[app](const UTF8 &text) { app->getCurrentWindow()->bottomBarTemporaryMode(text, false); },
M module-apps/application-phonebook/widgets/InformationWidget.cpp => module-apps/application-phonebook/widgets/InformationWidget.cpp +1 -1
@@ 15,7 15,7 @@ namespace gui
{
InformationWidget::InformationWidget(app::Application *app)
{
- setMargins(gui::Margins(0, style::margins::huge, 0, 0));
+ setMargins(gui::Margins(style::widgets::leftMargin, style::margins::huge, 0, 0));
setMinimumSize(phonebookStyle::informationWidget::w,
phonebookStyle::informationWidget::title_label_h + style::margins::huge);
M module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.cpp => module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.cpp +9 -3
@@ 22,9 22,9 @@ namespace gui
setMinimumSize(phonebookStyle::inputBoxWithLabelAndIconIWidget::w,
phonebookStyle::inputBoxWithLabelAndIconIWidget::h);
- setMargins(gui::Margins(0, style::margins::big, 0, 0));
+ setMargins(gui::Margins(style::widgets::leftMargin, style::margins::big, 0, 0));
- hBox = new gui::HBox(this, 0, 0, phonebookStyle::inputBoxWithLabelAndIconIWidget::w, 0);
+ 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);
@@ 50,7 50,7 @@ namespace gui
tickImage->activeItem = false;
descriptionLabel = new gui::Label(hBox, 0, 0, 0, 0);
- descriptionLabel->setMinimumSize(phonebookStyle::inputBoxWithLabelAndIconIWidget::description_label_w,
+ descriptionLabel->setMaximumSize(phonebookStyle::inputBoxWithLabelAndIconIWidget::description_label_w,
phonebookStyle::inputBoxWithLabelAndIconIWidget::description_label_h);
descriptionLabel->setMargins(
gui::Margins(0, 0, phonebookStyle::inputBoxWithLabelAndIconIWidget::description_label_right_margin, 0));
@@ 102,9 102,11 @@ namespace gui
focusChangedCallback = [&](gui::Item &item) {
if (focus) {
setFocusItem(inputBoxLabel);
+ descriptionLabel->setFont(style::window::font::mediumbold);
}
else {
setFocusItem(nullptr);
+ descriptionLabel->setFont(style::window::font::medium);
}
return true;
};
@@ 137,6 139,7 @@ namespace gui
focusChangedCallback = [&](gui::Item &item) {
if (focus) {
setFocusItem(inputBoxLabel);
+ descriptionLabel->setFont(style::window::font::mediumbold);
if (tickImage->visible) {
bottomBarTemporaryMode(utils::translate("app_phonebook_uncheck"));
}
@@ 146,6 149,7 @@ namespace gui
}
else {
setFocusItem(nullptr);
+ descriptionLabel->setFont(style::window::font::medium);
bottomBarRestoreFromTemporaryMode();
}
return true;
@@ 180,6 184,7 @@ namespace gui
focusChangedCallback = [&](gui::Item &item) {
if (focus) {
setFocusItem(inputBoxLabel);
+ descriptionLabel->setFont(style::window::font::mediumbold);
if (tickImage->visible) {
bottomBarTemporaryMode(utils::translate("app_phonebook_uncheck"));
}
@@ 189,6 194,7 @@ namespace gui
}
else {
setFocusItem(nullptr);
+ descriptionLabel->setFont(style::window::font::medium);
bottomBarRestoreFromTemporaryMode();
}
return true;
M module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.cpp => module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.cpp +19 -11
@@ 23,8 23,9 @@ namespace gui
setMinimumSize(phonebookStyle::inputLinesWithLabelWidget::w,
phonebookStyle::inputLinesWithLabelWidget::title_label_h +
phonebookStyle::inputLinesWithLabelWidget::span_size +
- phonebookStyle::inputLinesWithLabelWidget::input_text_h * lines);
- setMargins(gui::Margins(0, style::margins::huge, 0, 0));
+ phonebookStyle::inputLinesWithLabelWidget::input_text_h * lines +
+ (phonebookStyle::inputLinesWithLabelWidget::line_spacing * (lines - 1)));
+ setMargins(gui::Margins(style::widgets::leftMargin, style::margins::huge, 0, 0));
vBox = new VBox(this, 0, 0, 0, 0);
vBox->setEdges(RectangleEdge::None);
@@ 34,17 35,20 @@ namespace gui
phonebookStyle::inputLinesWithLabelWidget::title_label_h);
titleLabel->setEdges(RectangleEdge::None);
titleLabel->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Top));
- titleLabel->setFont(style::window::font::verysmall);
+ titleLabel->setFont(style::window::font::small);
titleLabel->activeItem = false;
inputText = new TextFixedSize(vBox, 0, 0, 0, 0);
inputText->setMinimumSize(phonebookStyle::inputLinesWithLabelWidget::w,
- phonebookStyle::inputLinesWithLabelWidget::input_text_h * lines);
+ (phonebookStyle::inputLinesWithLabelWidget::input_text_h)*lines +
+ (phonebookStyle::inputLinesWithLabelWidget::line_spacing * (lines - 1)));
inputText->setMargins(Margins(0, phonebookStyle::inputLinesWithLabelWidget::span_size, 0, 0));
inputText->setUnderlinePadding(phonebookStyle::inputLinesWithLabelWidget::underline_padding);
-
+ inputText->setLinesSpacing(phonebookStyle::inputLinesWithLabelWidget::line_spacing);
+ inputText->setLines(lines);
+ inputText->setCursorStartPosition(CursorStartPosition::DocumentBegin);
inputText->setEdges(RectangleEdge::None);
- inputText->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Top));
+ inputText->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Bottom));
inputText->setFont(style::window::font::medium);
inputText->setInputMode(new InputMode(
{InputMode::ABC, InputMode::abc, InputMode::digit},
@@ 61,9 65,13 @@ namespace gui
setFocusItem(focus ? vBox : nullptr);
if (focus) {
+ inputText->setCursorStartPosition(CursorStartPosition::DocumentEnd);
+ inputText->setUnderlineThickness(style::window::default_border_focus_w);
inputText->setFont(style::window::font::mediumbold);
}
else {
+ inputText->setCursorStartPosition(CursorStartPosition::DocumentBegin);
+ inputText->setUnderlineThickness(style::window::default_border_rect_no_focus);
inputText->setFont(style::window::font::medium);
}
return true;
@@ 126,8 134,8 @@ namespace gui
titleLabel->setText(utils::translate("app_phonebook_new_contact_first_name"));
inputText->setTextType(TextType::SingleLine);
- onSaveCallback = [&](std::shared_ptr<ContactRecord> contact) { contact->primaryName = inputText->getText(); };
- onLoadCallback = [&](std::shared_ptr<ContactRecord> contact) { inputText->setText(contact->primaryName); };
+ onSaveCallback = [&](std::shared_ptr<ContactRecord> contact) { contact->primaryName = inputText->getText(); };
+ onLoadCallback = [&](std::shared_ptr<ContactRecord> contact) { inputText->setText(contact->primaryName); };
onEmptyCallback = [&]() { return inputText->isEmpty(); };
}
void InputLinesWithLabelIWidget::secondNameHandler()
@@ 138,7 146,7 @@ namespace gui
onSaveCallback = [&](std::shared_ptr<ContactRecord> contact) {
contact->alternativeName = inputText->getText();
};
- onLoadCallback = [&](std::shared_ptr<ContactRecord> contact) { inputText->setText(contact->alternativeName); };
+ onLoadCallback = [&](std::shared_ptr<ContactRecord> contact) { inputText->setText(contact->alternativeName); };
onEmptyCallback = [&]() { return inputText->isEmpty(); };
}
void InputLinesWithLabelIWidget::numberHandler()
@@ 184,8 192,8 @@ namespace gui
titleLabel->setText(utils::translate("app_phonebook_new_contact_email"));
inputText->setTextType(TextType::SingleLine);
- onSaveCallback = [&](std::shared_ptr<ContactRecord> contact) { contact->mail = inputText->getText(); };
- onLoadCallback = [&](std::shared_ptr<ContactRecord> contact) { inputText->setText(contact->mail); };
+ onSaveCallback = [&](std::shared_ptr<ContactRecord> contact) { contact->mail = inputText->getText(); };
+ onLoadCallback = [&](std::shared_ptr<ContactRecord> contact) { inputText->setText(contact->mail); };
onEmptyCallback = [&]() { return inputText->isEmpty(); };
}
void InputLinesWithLabelIWidget::addressHandler()
M module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.cpp => module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.cpp +1 -1
@@ 16,7 16,7 @@ namespace gui
{
setMinimumSize(phonebookStyle::outputLinesTextWithLabelWidget::w,
phonebookStyle::outputLinesTextWithLabelWidget::title_label_h);
- setMargins(gui::Margins(0, style::margins::huge, 0, 0));
+ setMargins(gui::Margins(style::widgets::leftMargin, style::margins::huge, 0, 0));
vBox = new VBox(this, 0, 0, 0, 0);
vBox->setEdges(RectangleEdge::None);
M module-apps/application-settings/widgets/apps/SettingsSoundItem.cpp => module-apps/application-settings/widgets/apps/SettingsSoundItem.cpp +1 -1
@@ 22,7 22,7 @@ namespace gui
soundTitle->setMaximumSize(style::window::default_body_width, style::window::label::big_h);
soundTitle->setMargins(Margins(10, 0, 0, 0));
soundTitle->setEdges(RectangleEdge::All);
- soundTitle->setUnderline(false);
+ soundTitle->drawUnderline(false);
soundTitle->setFont(style::window::font::big);
soundTitle->setText(soundName); // setRichText??
M module-apps/apps-common/notifications/NotificationListItem.cpp => module-apps/apps-common/notifications/NotificationListItem.cpp +1 -1
@@ 40,7 40,7 @@ namespace
text->setMaximumSize(style::notifications::textMaxWidth, Axis::X);
text->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
text->setPenWidth(style::window::default_border_no_focus_w);
- text->setUnderline(false);
+ text->drawUnderline(false);
text->setFont(style::window::font::medium);
text->activeItem = false;
text->setTextLimitType(TextLimitType::MaxLines, 1);
M => +1 -1
@@ 26,7 26,7 @@ namespace gui::option
};
auto optionText = new TextFixedSize(optionBodyHBox, 0, 0, 0, 0);
optionText->setUnderline(false);
optionText->drawUnderline(false);
optionText->setAlignment(gui::Alignment::Vertical::Center);
optionText->setAlignment(gui::Alignment::Horizontal::Center);
optionText->setMaximumSize(bell::window::default_text_width, style::window::label::big_h);
M module-apps/apps-common/options/type/OptionSetting.cpp => module-apps/apps-common/options/type/OptionSetting.cpp +2 -2
@@ 27,7 27,7 @@ namespace gui::option
};
auto optionText = new TextFixedSize(optionBodyHBox, 0, 0, 0, 0);
- optionText->setUnderline(false);
+ optionText->drawUnderline(false);
optionText->setAlignment(gui::Alignment::Vertical::Center);
optionText->setMaximumSize(style::window::default_body_width, style::window::label::big_h);
optionText->setMargins(Margins(window::option_left_margin, 0, 0, 0));
@@ 64,7 64,7 @@ namespace gui::option
break;
case SettingRightItem::Text: {
auto optionTextRight = new TextFixedSize(optionBodyHBox, 0, 0, 0, 0);
- optionTextRight->setUnderline(false);
+ optionTextRight->drawUnderline(false);
optionTextRight->setFont((textOnRightIsSmall) ? style::window::font::verysmall
: style::window::font::medium);
optionTextRight->setMinimumWidthToFitText(textOnRight);
M module-apps/apps-common/options/type/OptionSimple.cpp => module-apps/apps-common/options/type/OptionSimple.cpp +1 -1
@@ 26,7 26,7 @@ namespace gui::option
auto optionText = new TextFixedSize(optionBodyHBox, 0, 0, 0, 0);
optionText->setMargins(Margins(window::option_left_margin, 0, 0, 0));
- optionText->setUnderline(false);
+ optionText->drawUnderline(false);
optionText->setAlignment(gui::Alignment::Vertical::Center);
optionText->setMaximumSize(style::window::default_body_width, style::window::label::big_h);
optionText->setFont(style::window::font::big);
M module-apps/apps-common/widgets/TextWithIconsWidget.cpp => module-apps/apps-common/widgets/TextWithIconsWidget.cpp +2 -2
@@ 30,13 30,12 @@ namespace
[[nodiscard]] auto createText(const std::string &text, const UTF8 &font)
{
auto textFixedSize = new TextFixedSize(nullptr, 0, 0, 0, 0);
- textFixedSize->setUnderline(false);
+ textFixedSize->drawUnderline(false);
textFixedSize->setMaximumSize(style::window::default_body_width, style::widgets::h);
textFixedSize->setFont(font);
textFixedSize->setEdges(gui::RectangleEdge::None);
textFixedSize->setEditMode(EditMode::Browse);
textFixedSize->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
- textFixedSize->setMargins(Margins(style::widgets::leftMargin, 0, 0, 0));
textFixedSize->setText(text);
textFixedSize->activeItem = false;
return textFixedSize;
@@ 46,6 45,7 @@ namespace
{
auto snippet = new gui::Image(snippetName);
snippet->setAlignment(Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
+ snippet->setMargins(Margins(0, 0, style::widgets::rightMargin, 0));
snippet->activeItem = false;
return snippet;
}
M module-gui/gui/widgets/Lines.cpp => module-gui/gui/widgets/Lines.cpp +2 -3
@@ 80,8 80,7 @@ namespace gui
Length initHeight = text->getTextFormat().getFont()->info.line_height;
while (true) {
- auto textLine =
- gui::TextLine(drawCursor, w, initHeight, underLine, UnderlineDrawMode::WholeLine, underLinePadding);
+ auto textLine = gui::TextLine(drawCursor, w, initHeight, underLineProperties);
if ((textLine.height() > 0) && initHeight != textLine.height()) {
initHeight = textLine.height();
@@ 122,7 121,7 @@ namespace gui
line.setParent(text);
line.setPosition(lineXPosition, lineYPosition);
- lineYPosition += line.height();
+ lineYPosition += line.height() + linesSpacing;
}
}
M module-gui/gui/widgets/Lines.hpp => module-gui/gui/widgets/Lines.hpp +14 -18
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 24,9 24,8 @@ namespace gui
{
Text *text = nullptr;
std::list<TextLine> lines;
-
- bool underLine = false;
- Position underLinePadding = 0;
+ UnderLineProperties underLineProperties;
+ unsigned int linesSpacing = 0;
void addToInvisibleLines(TextLine line);
@@ 108,9 107,11 @@ namespace gui
[[nodiscard]] auto linesHeight() const noexcept
{
- return std::accumulate(lines.begin(), lines.end(), 0U, [](const auto sum, const auto &line) {
- return line.isVisible() ? sum + line.height() : sum;
- });
+ auto lineSpacingAddition = empty() ? 0 : (size() - 1) * linesSpacing;
+ return lineSpacingAddition +
+ std::accumulate(lines.begin(), lines.end(), 0U, [](const auto sum, const auto &line) {
+ return line.isVisible() ? sum + line.height() : sum;
+ });
}
[[nodiscard]] auto linesLength() const noexcept
@@ 120,24 121,19 @@ namespace gui
});
}
- auto setUnderLine(bool val) -> void
- {
- underLine = val;
- }
-
- [[nodiscard]] auto getUnderLine() const noexcept
+ auto setUnderLineProperties(UnderLineProperties val) -> void
{
- return underLine;
+ underLineProperties = val;
}
- auto setUnderLinePadding(Position val) -> void
+ [[nodiscard]] UnderLineProperties &getUnderLineProperties() noexcept
{
- underLinePadding = val;
+ return underLineProperties;
}
- [[nodiscard]] auto getUnderLinePadding() const noexcept
+ auto setLineSpacing(unsigned int val) -> void
{
- return underLinePadding;
+ linesSpacing = val;
}
auto draw(BlockCursor &drawCursor, Length w, Length h, Position lineYPosition, Position lineXPosition) -> void;
M module-gui/gui/widgets/Style.hpp => module-gui/gui/widgets/Style.hpp +5 -4
@@ 280,10 280,11 @@ namespace style
namespace margins
{
- inline constexpr auto small = 6U;
- inline constexpr auto big = 8U;
- inline constexpr auto very_big = 12U;
- inline constexpr auto huge = 24U;
+ inline constexpr auto very_small = 3U;
+ inline constexpr auto small = 6U;
+ inline constexpr auto big = 8U;
+ inline constexpr auto very_big = 12U;
+ inline constexpr auto huge = 24U;
} // namespace margins
namespace padding
M module-gui/gui/widgets/Text.cpp => module-gui/gui/widgets/Text.cpp +3 -3
@@ 113,10 113,10 @@ namespace gui
limitsList.clear();
}
- void Text::setUnderline(const bool val)
+ void Text::drawUnderline(bool val)
{
- if (lines->getUnderLine() != val) {
- lines->setUnderLine(val);
+ if (lines->getUnderLineProperties().draw != val) {
+ lines->getUnderLineProperties().draw = val;
drawLines();
}
}
M module-gui/gui/widgets/Text.hpp => module-gui/gui/widgets/Text.hpp +1 -1
@@ 134,7 134,7 @@ namespace gui
void setTextType(TextType type);
void setTextLimitType(TextLimitType limitType, unsigned int val = 0);
void clearTextLimits();
- void setUnderline(bool val);
+ void drawUnderline(bool val);
virtual void setText(const UTF8 &text);
void setText(std::unique_ptr<TextDocument> &&document);
M module-gui/gui/widgets/TextFixedSize.cpp => module-gui/gui/widgets/TextFixedSize.cpp +18 -4
@@ 1,5 1,5 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include <module-gui/gui/core/RawFont.hpp>
@@ 10,7 10,7 @@ namespace gui
TextFixedSize::TextFixedSize(Item *parent, Position x, Position y, Length w, Length h) : Text(parent, x, y, w, h)
{
setEditMode(EditMode::Edit);
- lines->setUnderLine(true);
+ drawUnderline(true);
}
void TextFixedSize::setLines(const unsigned int val)
@@ 21,10 21,24 @@ namespace gui
}
}
+ void TextFixedSize::setLinesSpacing(unsigned int val)
+ {
+ lines->setLineSpacing(val);
+ drawLines();
+ }
+
void TextFixedSize::setUnderlinePadding(Position val)
{
- if (lines->getUnderLinePadding() != val) {
- lines->setUnderLinePadding(val);
+ if (lines->getUnderLineProperties().underLinePadding != val) {
+ lines->getUnderLineProperties().underLinePadding = val;
+ drawLines();
+ }
+ }
+
+ void TextFixedSize::setUnderlineThickness(unsigned int val)
+ {
+ if (lines->getUnderLineProperties().thickness != val) {
+ lines->getUnderLineProperties().thickness = val;
drawLines();
}
}
M module-gui/gui/widgets/TextFixedSize.hpp => module-gui/gui/widgets/TextFixedSize.hpp +4 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 18,8 18,10 @@ namespace gui
public:
TextFixedSize(Item *parent, Position x, Position y, Length w, Length h);
- void setLines(const unsigned int val);
+ void setLines(unsigned int val);
+ void setLinesSpacing(unsigned int val);
void setUnderlinePadding(Position val);
+ void setUnderlineThickness(unsigned int val);
};
} // namespace gui
M module-gui/gui/widgets/TextLine.cpp => module-gui/gui/widgets/TextLine.cpp +9 -11
@@ 170,10 170,7 @@ namespace gui
widthUsed = from.widthUsed;
heightUsed = from.heightUsed;
underline = from.underline;
- drawUnderline = from.drawUnderline;
- drawUnderlineMode = from.drawUnderlineMode;
- underlinePadding = from.underlinePadding;
- underlineHeight = from.underlineHeight;
+ underLineProperties = from.underLineProperties;
lineEnd = from.lineEnd;
end = from.end;
maxWidth = from.maxWidth;
@@ 227,7 224,7 @@ namespace gui
for (auto &el : lineContent) {
auto scopedDisown = ScopedParentDisown(el);
- el->setArea({lineXPosition, y - underlinePadding, el->getWidth(), el->getHeight()});
+ el->setArea({lineXPosition, y - underLineProperties.underLinePadding, el->getWidth(), el->getHeight()});
lineXPosition += el->getWidth();
}
}
@@ 246,7 243,7 @@ namespace gui
return;
}
- createUnderline(maxWidth, underlineHeight);
+ createUnderline(maxWidth, underLineProperties.underlineHeight);
parent->addWidget(underline);
for (auto &el : lineContent) {
@@ 337,7 334,7 @@ namespace gui
if (xOffset >= 0) {
- if (underline != nullptr && drawUnderlineMode == UnderlineDrawMode::Concurrent)
+ if (underline != nullptr && underLineProperties.drawUnderlineMode == UnderlineDrawMode::Concurrent)
underline->setPosition(underline->getPosition(Axis::X) + xOffset, Axis::X);
for (auto &el : lineContent) {
@@ 368,12 365,13 @@ namespace gui
void TextLine::createUnderline(unsigned int width, unsigned int initHeight)
{
- if (drawUnderline) {
+ if (underLineProperties.draw) {
underline = new Rect(nullptr, 0, 0, maxWidth, initHeight);
+ underline->setPenWidth(underLineProperties.thickness);
underline->setEdges(RectangleEdge::Bottom);
- if (drawUnderlineMode == UnderlineDrawMode::WholeLine) {
+ if (underLineProperties.drawUnderlineMode == UnderlineDrawMode::WholeLine) {
heightUsed = std::max(heightUsed, (Length)initHeight);
}
}
@@ 381,10 379,10 @@ namespace gui
void TextLine::updateUnderline(const short &x, const short &y)
{
- if (underline != nullptr && drawUnderlineMode == UnderlineDrawMode::WholeLine) {
+ if (underline != nullptr && underLineProperties.drawUnderlineMode == UnderlineDrawMode::WholeLine) {
underline->setArea({x, y, underline->widgetArea.w, height()});
}
- else if (underline != nullptr && drawUnderlineMode == UnderlineDrawMode::Concurrent) {
+ else if (underline != nullptr && underLineProperties.drawUnderlineMode == UnderlineDrawMode::Concurrent) {
underline->setArea({x, y, getWidth(), height()});
}
}
M module-gui/gui/widgets/TextLine.hpp => module-gui/gui/widgets/TextLine.hpp +14 -12
@@ 19,6 19,15 @@ namespace gui
Concurrent
};
+ struct UnderLineProperties
+ {
+ bool draw = false;
+ Position underLinePadding = 0;
+ unsigned int thickness = 1;
+ Length underlineHeight = 0;
+ UnderlineDrawMode drawUnderlineMode = UnderlineDrawMode::WholeLine;
+ };
+
/// interface element for TextDocument->getLine() <-- Text
class TextLine
{
@@ 27,11 36,8 @@ namespace gui
Length heightUsed = 0;
Length maxWidth = 0;
std::list<Label *> lineContent;
- Rect *underline = nullptr;
- bool drawUnderline = false;
- UnderlineDrawMode drawUnderlineMode = UnderlineDrawMode::Concurrent;
- Position underlinePadding = 0;
- Position underlineHeight = 0;
+ Rect *underline = nullptr;
+ UnderLineProperties underLineProperties;
TextBlock::End end = TextBlock::End::None;
Position storedYOffset = 0;
bool lineEnd = false;
@@ 56,15 62,11 @@ namespace gui
TextLine(BlockCursor &cursor,
unsigned int max_width,
unsigned int init_height,
- bool drawUnderline,
- UnderlineDrawMode drawUnderlineMode,
- Position underlinePadding)
+ UnderLineProperties underLineProperties)
: TextLine(cursor, max_width)
{
- this->drawUnderline = drawUnderline;
- this->drawUnderlineMode = drawUnderlineMode;
- this->underlinePadding = underlinePadding;
- this->underlineHeight = init_height;
+ this->underLineProperties = underLineProperties;
+ this->underLineProperties.underlineHeight = init_height;
}
~TextLine();