M module-apps/application-antenna/windows/AlgoParamsWindow.cpp => module-apps/application-antenna/windows/AlgoParamsWindow.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "AlgoParamsWindow.hpp"
@@ 6,7 6,7 @@
#include <application-antenna/ApplicationAntenna.hpp>
#include <module-gui/gui/widgets/BoxLayout.hpp>
#include <module-gui/gui/widgets/Item.hpp>
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <module-gui/gui/widgets/Style.hpp>
#include <module-gui/gui/widgets/Window.hpp>
#include <i18n/i18n.hpp>
M module-apps/application-antenna/windows/AntennaMainWindow.cpp => module-apps/application-antenna/windows/AntennaMainWindow.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
/*
@@ 14,7 14,7 @@
#include <application-antenna/ApplicationAntenna.hpp>
#include <module-gui/gui/widgets/BoxLayout.hpp>
#include <module-gui/gui/widgets/Item.hpp>
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <module-gui/gui/widgets/Style.hpp>
#include <module-gui/gui/widgets/Window.hpp>
#include <i18n/i18n.hpp>
M module-apps/application-antenna/windows/ScanModesWindow.cpp => module-apps/application-antenna/windows/ScanModesWindow.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "ScanModesWindow.hpp"
@@ 7,7 7,7 @@
#include <i18n/i18n.hpp>
#include <module-gui/gui/widgets/BoxLayout.hpp>
#include <module-gui/gui/widgets/Item.hpp>
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <module-gui/gui/widgets/Style.hpp>
#include <module-gui/gui/widgets/Window.hpp>
#include <service-cellular/CellularServiceAPI.hpp>
M module-apps/application-calculator/widgets/MathOperationsBox.cpp => module-apps/application-calculator/widgets/MathOperationsBox.cpp +2 -2
@@ 1,10 1,10 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "CalculatorStyle.hpp"
#include "MathOperationsBox.hpp"
#include <data/CalculatorInputProcessor.hpp>
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <cassert>
namespace gui
M module-apps/application-calendar/widgets/DayLabel.cpp => module-apps/application-calendar/widgets/DayLabel.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "DayLabel.hpp"
@@ 9,7 9,7 @@
#include <gui/widgets/Image.hpp>
#include <time/time_conversion.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
namespace gui
{
M module-apps/application-call/windows/NumberWindow.cpp => module-apps/application-call/windows/NumberWindow.cpp +4 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "ApplicationCall.hpp"
@@ 8,7 8,7 @@
#include <ContactRecord.hpp>
#include <gui/widgets/Image.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
#include <gui/widgets/Window.hpp>
#include <i18n/i18n.hpp>
#include <text/modes/InputMode.hpp>
@@ 58,7 58,8 @@ namespace gui
numberLabel->setFont(style::window::font::largelight);
numberLabel->setEdges(RectangleEdge::Bottom);
numberLabel->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Top));
- numberLabel->setEllipsis(Ellipsis::Left);
+ numberLabel->setTextEllipsisType(TextEllipsis::Left);
+ numberLabel->setCursorStartPosition(CursorStartPosition::DocumentEnd);
numberDescriptionLabel = new gui::Label(this,
numberDescriptionLabel::x,
M module-apps/application-calllog/widgets/CalllogItem.cpp => module-apps/application-calllog/widgets/CalllogItem.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "CalllogItem.hpp"
@@ 41,7 41,7 @@ namespace gui
text->setEdges(gui::RectangleEdge::None);
text->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center});
text->setFont(style::window::font::big);
- text->setEllipsis(Ellipsis::Right);
+ text->setTextEllipsisType(TextEllipsis::Right);
timestamp = new gui::Label(hBox, 0, 0, 0, 0);
timestamp->setMargins(Margins(0, 0, clItemStyle::right_margin, 0));
M => +2 -2
@@ 1,4 1,4 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "DBNotificationsHandler.hpp"
@@ 102,7 102,7 @@ namespace gui
std::function<bool()> hasNotificationsCallback)
: Tile{std::move(icon), std::move(title), std::move(activatedCallback), std::move(hasNotificationsCallback)}
{
description->setTextColor(gui::ColorGrey);
description->setColor(gui::ColorGrey);
}
MenuPage::MenuPage(gui::Item *parent, UTF8 title, std::vector<Tile *> tiles) : title(std::move(title))
M module-apps/application-meditation/data/Style.hpp => module-apps/application-meditation/data/Style.hpp +3 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 22,7 22,7 @@ namespace style::meditation
namespace setterValueLabel
{
constexpr auto Width = 140;
- constexpr auto Height = 96;
+ constexpr auto Height = 100;
constexpr auto TopMargin = 80;
constexpr auto BottomLineWidth = 100;
constexpr auto BottomLinePen = 2;
@@ 31,7 31,7 @@ namespace style::meditation
namespace setterUnitLabel
{
constexpr auto Width = 220;
- constexpr auto Height = 20;
+ constexpr auto Height = 23;
constexpr auto TopMargin = 15;
} // namespace setterUnitLabel
M module-apps/application-meditation/widgets/IntervalBox.hpp => module-apps/application-meditation/widgets/IntervalBox.hpp +2 -2
@@ 1,11 1,11 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include <gui/widgets/BoxLayout.hpp>
#include <gui/widgets/Image.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
#include <list>
#include <chrono>
M module-apps/application-meditation/widgets/TimerProperty.hpp => module-apps/application-meditation/widgets/TimerProperty.hpp +2 -2
@@ 1,10 1,10 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include <gui/widgets/Circle.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
#include <gui/widgets/Rect.hpp>
#include <gui/widgets/BoxLayout.hpp>
M module-apps/application-messages/widgets/BaseThreadItem.cpp => module-apps/application-messages/widgets/BaseThreadItem.cpp +7 -8
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "BaseThreadItem.hpp"
@@ 26,7 26,7 @@ namespace gui
contact = createEmptyLabel(this);
contact->setFont(style::window::font::bigbold);
- contact->setEllipsis(Ellipsis::Right);
+ contact->setTextEllipsisType(TextEllipsis::Right);
contact->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center});
numberImportance = createEmptyLabel(this);
@@ 36,7 36,7 @@ namespace gui
timestamp = createEmptyLabel(this);
timestamp->setFont(style::window::font::small);
- timestamp->setEllipsis(Ellipsis::Right);
+ timestamp->setTextEllipsisType(TextEllipsis::Right);
timestamp->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Right, gui::Alignment::Vertical::Center});
snippetPrefix = createEmptyLabel(this);
@@ 45,7 45,7 @@ namespace gui
snippet = createEmptyLabel(this);
snippet->setFont(style::window::font::medium);
- snippet->setEllipsis(Ellipsis::Right);
+ snippet->setTextEllipsisType(TextEllipsis::Right);
snippet->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center});
}
@@ 69,9 69,8 @@ namespace gui
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->setPosition(
+ msgStyle::leftMargin + contact->getWidth() + msgStyle::numberImportanceLeftMargin, msgStyle::topMargin);
numberImportance->setSize(msgStyle::numberImportanceWidth, newDim.h / 2 - msgStyle::topMargin);
}
@@ 93,7 92,7 @@ namespace gui
snippetPrefix->setPosition(leftMargin, dimensions.h / 2);
snippetPrefix->setSize(snippetPrefix->getTextNeedSpace(), dimensions.h / 2 - msgStyle::bottomMargin);
- const auto prefixSpace = snippetPrefix->getTextWidth() + msgStyle::snippetLeftMargin;
+ const auto prefixSpace = snippetPrefix->getWidth() + msgStyle::snippetLeftMargin;
snippet->setPosition(leftMargin + prefixSpace, dimensions.h / 2);
snippet->setSize(dimensions.w - msgStyle::previewWidthOffset - prefixSpace - leftOffset,
dimensions.h / 2 - msgStyle::bottomMargin);
M module-apps/application-messages/widgets/SMSTemplateItem.cpp => module-apps/application-messages/widgets/SMSTemplateItem.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "SMSTemplateItem.hpp"
@@ 16,7 16,7 @@ namespace gui
text = new gui::Label(this, 0, 0, 0, 0);
style::window::decorateOption(text);
- text->setEllipsis(gui::Ellipsis::Right);
+ text->setTextEllipsisType(gui::TextEllipsis::Right);
dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool {
text->setArea({0, 0, newDim.w, newDim.h});
M module-apps/application-messages/windows/SMSTemplatesWindow.hpp => module-apps/application-messages/windows/SMSTemplatesWindow.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 7,7 7,7 @@
#include "SMSTemplateModel.hpp"
#include <AppWindow.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
#include <gui/widgets/ListView.hpp>
#include <functional>
M module-apps/application-music-player/widgets/SongItem.cpp => module-apps/application-music-player/widgets/SongItem.cpp +2 -2
@@ 1,8 1,8 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "module-apps/application-music-player/widgets/SongItem.hpp"
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
#include <i18n/i18n.hpp>
namespace gui
M module-apps/application-music-player/windows/MusicPlayerMainWindow.cpp => module-apps/application-music-player/windows/MusicPlayerMainWindow.cpp +3 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "MusicPlayerMainWindow.hpp"
@@ 474,11 474,11 @@ namespace gui
std::string trackDescription;
if (!isPaused && !isPlaying) {
trackDescription = utils::translate("app_music_player_empty_track_notification");
- descriptionText->setTextColor(gui::ColorGrey);
+ descriptionText->setColor(gui::ColorGrey);
}
else {
trackDescription = currentTitle + " - " + currentArtist;
- descriptionText->setTextColor(gui::ColorFullBlack);
+ descriptionText->setColor(gui::ColorFullBlack);
}
descriptionText->setText(trackDescription);
}
M module-apps/application-notes/widgets/NotesItem.hpp => module-apps/application-notes/widgets/NotesItem.hpp +2 -2
@@ 1,9 1,9 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <module-gui/gui/widgets/ListItem.hpp>
#include <module-gui/gui/widgets/text/TextFixedSize.hpp>
M module-apps/application-notes/windows/NoteEditWindow.hpp => module-apps/application-notes/windows/NoteEditWindow.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 9,7 9,7 @@
#include <module-db/Interface/NotesRecord.hpp>
-#include "gui/widgets/Label.hpp"
+#include "gui/widgets/text/Label.hpp"
#include "gui/widgets/text/Text.hpp"
#include "gui/input/InputEvent.hpp"
M module-apps/application-notes/windows/NotePreviewWindow.hpp => module-apps/application-notes/windows/NotePreviewWindow.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 8,7 8,7 @@
#include <module-db/Interface/NotesRecord.hpp>
#include <module-apps/application-notes/presenter/NotePreviewWindowPresenter.hpp>
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <module-gui/gui/widgets/text/TextFixedSize.hpp>
#include <module-gui/gui/input/InputEvent.hpp>
M module-apps/application-onboarding/windows/ConfigurationSuccessfulDialogWindow.hpp => module-apps/application-onboarding/windows/ConfigurationSuccessfulDialogWindow.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 7,7 7,7 @@
#include <module-apps/application-onboarding/presenter/EULALicenseWindowPresenter.hpp>
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <module-gui/gui/widgets/text/Text.hpp>
#include <module-gui/gui/input/InputEvent.hpp>
M module-apps/application-onboarding/windows/EULALicenseWindow.hpp => module-apps/application-onboarding/windows/EULALicenseWindow.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 7,7 7,7 @@
#include <module-apps/application-onboarding/presenter/EULALicenseWindowPresenter.hpp>
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <module-gui/gui/widgets/text/Text.hpp>
#include <module-gui/gui/input/InputEvent.hpp>
M module-apps/application-onboarding/windows/NoConfigurationDialogWindow.hpp => module-apps/application-onboarding/windows/NoConfigurationDialogWindow.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 7,7 7,7 @@
#include <module-apps/application-onboarding/presenter/EULALicenseWindowPresenter.hpp>
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <module-gui/gui/widgets/text/Text.hpp>
#include <module-gui/gui/input/InputEvent.hpp>
M module-apps/application-phonebook/widgets/ContactFlagIconWidget.cpp => module-apps/application-phonebook/widgets/ContactFlagIconWidget.cpp +6 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// 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"
@@ 54,11 54,13 @@ namespace gui
{
setEdges(RectangleEdge::None);
- label = new Label(this, 0, 0, style::widget::ContactFlag::itemWidth, style::widget::ContactFlag::labelHeight);
+ label = new Label(this);
label->setFilled(false);
label->setFont(style::window::font::verysmall);
label->setText(itemText);
- label->setEllipsis(gui::Ellipsis::None);
+ label->setMinimumWidthToFitText();
+ label->setMinimumHeightToFitText();
+ label->setTextEllipsisType(gui::TextEllipsis::None);
label->setEdges(RectangleEdge::None);
label->setAlignment(Alignment(Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
@@ 72,6 74,7 @@ namespace gui
mainBox->addWidget(icon);
}
mainBox->addWidget(label);
+ mainBox->resizeItems();
}
} // namespace gui
M module-apps/application-phonebook/widgets/ContactFlagsStyle.hpp => module-apps/application-phonebook/widgets/ContactFlagsStyle.hpp +1 -2
@@ 14,8 14,7 @@ namespace style
const uint32_t iconsSize = 35;
const uint32_t height = 74;
const uint32_t itemWidth = 125;
- const uint32_t itemHeight = 55;
- const uint32_t labelHeight = 20;
+ const uint32_t itemHeight = 64;
} // namespace ContactFlag
} // namespace widget
} // namespace style
M module-apps/application-phonebook/widgets/InformationWidget.cpp => module-apps/application-phonebook/widgets/InformationWidget.cpp +4 -5
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "InformationWidget.hpp"
@@ 23,14 23,13 @@ namespace gui
vBox = new VBox(this, 0, 0, 0, 0);
vBox->setEdges(RectangleEdge::None);
- titleLabel = new Label(vBox, 0, 0, 0, 0, utils::translate("app_phonebook_contact_information"));
+ titleLabel = new TextWithSnippet(vBox, style::window::font::verysmall);
titleLabel->setMinimumSize(phonebookStyle::informationWidget::w,
phonebookStyle::informationWidget::title_label_h);
titleLabel->setEdges(RectangleEdge::None);
titleLabel->setMargins(Margins(0, 0, 0, style::margins::very_big));
- titleLabel->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Top));
- titleLabel->setFont(style::window::font::verysmall);
- titleLabel->setLineMode(true);
+ titleLabel->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
+ titleLabel->textWidget->setText(utils::translate("app_phonebook_contact_information"));
titleLabel->activeItem = false;
onLoadCallback = [=](std::shared_ptr<ContactRecord> contact) {
M module-apps/application-phonebook/widgets/InformationWidget.hpp => module-apps/application-phonebook/widgets/InformationWidget.hpp +4 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 7,6 7,7 @@
#include "application-phonebook/data/PhonebookItemData.hpp"
#include "application-phonebook/widgets/ContactListItem.hpp"
+#include <apps-common/widgets/TextWithIconsWidget.hpp>
#include <ListItem.hpp>
#include <Text.hpp>
@@ 18,9 19,9 @@ namespace gui
{
public:
InformationWidget(app::ApplicationCommon *app);
- ~InformationWidget() override = default;
+ ~InformationWidget() override = default;
VBox *vBox = nullptr;
- Label *titleLabel = nullptr;
+ TextWithSnippet *titleLabel = nullptr;
TextWithIconsWidget *primaryNumberHBox = nullptr;
TextWithIconsWidget *secondaryNumberHBox = nullptr;
Text *emailText = nullptr;
M module-apps/application-phonebook/widgets/InputLinesWithLabelWidget.cpp => module-apps/application-phonebook/widgets/InputLinesWithLabelWidget.cpp +2 -2
@@ 249,7 249,7 @@ namespace gui
void InputLinesWithLabelWidget::addressHandler()
{
titleLabel->setText(utils::translate("app_phonebook_new_contact_address"));
- inputText->setTextType(TextType::SingleLine);
+ inputText->setTextType(TextType::MultiLine);
inputText->setTextLimitType(TextLimitType::MaxSignsCount,
phonebookStyle::inputLinesWithLabelWidget::max_signs_limit);
@@ 259,7 259,7 @@ namespace gui
void InputLinesWithLabelWidget::noteHandler()
{
titleLabel->setText(utils::translate("app_phonebook_new_contact_note"));
- inputText->setTextType(TextType::SingleLine);
+ inputText->setTextType(TextType::MultiLine);
inputText->setTextLimitType(TextLimitType::MaxSignsCount,
phonebookStyle::inputLinesWithLabelWidget::max_signs_limit);
M module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.cpp => module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.cpp +4 -6
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "OutputLinesTextWithLabelWidget.hpp"
@@ 21,13 21,11 @@ namespace gui
vBox = new VBox(this, 0, 0, 0, 0);
vBox->setEdges(RectangleEdge::None);
- titleLabel = new Label(vBox);
+ titleLabel = new TextWithSnippet(vBox, style::window::font::verysmall);
titleLabel->setMinimumSize(phonebookStyle::outputLinesTextWithLabelWidget::w,
phonebookStyle::outputLinesTextWithLabelWidget::title_label_h);
titleLabel->setEdges(RectangleEdge::None);
titleLabel->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
- titleLabel->setFont(style::window::font::verysmall);
- titleLabel->setLineMode(true);
titleLabel->activeItem = false;
multilineText = new Text(vBox, 0, 0, 0, 0);
@@ 74,14 72,14 @@ namespace gui
void OutputLinesTextWithLabelWidget::addressHandler()
{
- titleLabel->setText(utils::translate("app_phonebook_new_contact_address"));
+ titleLabel->textWidget->setText(utils::translate("app_phonebook_new_contact_address"));
onLoadCallback = [&](std::shared_ptr<ContactRecord> contact) { multilineText->setText(contact->address); };
}
void OutputLinesTextWithLabelWidget::noteHandler()
{
- titleLabel->setText(utils::translate("app_phonebook_new_contact_note"));
+ titleLabel->textWidget->setText(utils::translate("app_phonebook_new_contact_note"));
onLoadCallback = [&](std::shared_ptr<ContactRecord> contact) { multilineText->setText(contact->note); };
}
M module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.hpp => module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.hpp +3 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 7,6 7,7 @@
#include "application-phonebook/data/PhonebookItemData.hpp"
#include "application-phonebook/widgets/ContactListItem.hpp"
+#include <apps-common/widgets/TextWithIconsWidget.hpp>
#include <ListItem.hpp>
#include <Text.hpp>
@@ 21,7 22,7 @@ namespace gui
~OutputLinesTextWithLabelWidget() override = default;
VBox *vBox = nullptr;
- Label *titleLabel = nullptr;
+ TextWithSnippet *titleLabel = nullptr;
Text *multilineText = nullptr;
auto handleRequestResize(const Item *, Length request_w, Length request_h) -> Size override;
M module-apps/application-phonebook/widgets/PhonebookItem.cpp => module-apps/application-phonebook/widgets/PhonebookItem.cpp +24 -11
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// 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"
@@ 46,17 46,9 @@ namespace gui
markBlocked(contact->isOnBlocked());
}
- void PhonebookItem::setMarkerItem(UTF8 text)
- {
- contactName->setText(text);
- contactName->setLineMode(true);
- activeItem = false;
- setEdges(RectangleEdge::None);
- }
-
UTF8 PhonebookItem::getLabelMarker()
{
- if (favourite && (labeMarkerDisplayMode == LabelMarkerDisplayMode::IncludeFavourites)) {
+ if (favourite && (labelMarkerDisplayMode == LabelMarkerDisplayMode::IncludeFavourites)) {
// If contact is favorite return proper UTF string
return utils::translate("app_phonebook_favourite_contacts_title");
}
@@ 86,7 78,28 @@ namespace gui
void PhonebookItem::setLabelMarkerDisplayMode(LabelMarkerDisplayMode mode)
{
- labeMarkerDisplayMode = 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 */
M module-apps/application-phonebook/widgets/PhonebookItem.hpp => module-apps/application-phonebook/widgets/PhonebookItem.hpp +12 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 9,6 9,7 @@
#include "ListItem.hpp"
#include <BoxLayout.hpp>
#include <TextFixedSize.hpp>
+#include <apps-common/widgets/TextWithIconsWidget.hpp>
namespace gui
{
@@ 21,7 22,7 @@ namespace gui
bool favourite = false;
void markFavourite(bool val);
void markBlocked(bool val);
- LabelMarkerDisplayMode labeMarkerDisplayMode = LabelMarkerDisplayMode::IncludeFavourites;
+ LabelMarkerDisplayMode labelMarkerDisplayMode = LabelMarkerDisplayMode::IncludeFavourites;
public:
std::shared_ptr<ContactRecord> contact = nullptr;
@@ 31,10 32,18 @@ namespace gui
// sets copy of contact
void setContact(std::shared_ptr<ContactRecord> note);
- void setMarkerItem(UTF8 text);
UTF8 getLabelMarker();
void setLabelMarkerDisplayMode(LabelMarkerDisplayMode mode);
};
+ class PhonebookMarkItem : public ListItem
+ {
+ private:
+ TextWithSnippet *markLabel = nullptr;
+
+ public:
+ explicit PhonebookMarkItem(const UTF8 &markText);
+ };
+
} /* namespace gui */
M module-apps/application-phonebook/widgets/PhonebookListView.cpp => module-apps/application-phonebook/widgets/PhonebookListView.cpp +5 -18
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "PhonebookListView.hpp"
@@ 17,11 17,7 @@ namespace gui
if (!(labelMark == (item)->getLabelMarker())) {
labelMark = (item)->getLabelMarker();
-
- gui::PhonebookItem *phonebookLabel = new gui::PhonebookItem();
- phonebookLabel->setMarkerItem(labelMark);
-
- body->addWidget(phonebookLabel);
+ body->addWidget(new PhonebookMarkItem(labelMark));
}
}
if (direction == listview::Direction::Top) {
@@ 35,11 31,8 @@ namespace gui
previousLabelMark = labelMark;
labelMark = (item)->getLabelMarker();
- gui::PhonebookItem *phonebookLabel = new gui::PhonebookItem();
- phonebookLabel->setMarkerItem(previousLabelMark);
-
body->removeWidget(item);
- body->addWidget(phonebookLabel);
+ body->addWidget(new PhonebookMarkItem(labelMark));
body->addWidget(item);
previousItemIsLabel = true;
@@ 79,11 72,7 @@ namespace gui
body->erase(item);
body->erase(previousListItem);
- gui::PhonebookItem *phonebookLabel = new gui::PhonebookItem();
-
- phonebookLabel->setMarkerItem(labelMark);
-
- body->addWidget(phonebookLabel);
+ body->addWidget(new PhonebookMarkItem(labelMark));
currentPageSize--;
}
}
@@ 105,9 94,7 @@ namespace gui
// Add element on top for first page purpose
if (startIndex == 0 && direction == listview::Direction::Top) {
- auto *phonebookLabel = new gui::PhonebookItem();
- phonebookLabel->setMarkerItem(labelMark);
- body->addWidget(phonebookLabel);
+ body->addWidget(new PhonebookMarkItem(labelMark));
}
}
M module-apps/application-phonebook/widgets/PhonebookListView.hpp => module-apps/application-phonebook/widgets/PhonebookListView.hpp +1 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 14,7 14,6 @@ namespace gui
class PhonebookListView : public ListView
{
-
UTF8 labelMark = "";
UTF8 previousLabelMark = "";
bool previousItemIsLabel = false;
M module-apps/application-settings/widgets/advanced/ColorTestListItem.cpp => module-apps/application-settings/widgets/advanced/ColorTestListItem.cpp +3 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "ColorTestListItem.hpp"
@@ 25,10 25,10 @@ namespace gui
colorLabel->setText(std::to_string(color.intensity) + " ");
if (color.intensity > ColorGrey.intensity) {
- colorLabel->setTextColor(ColorFullBlack);
+ colorLabel->setColor(ColorFullBlack);
}
else {
- colorLabel->setTextColor(ColorFullWhite);
+ colorLabel->setColor(ColorFullWhite);
}
dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool {
M module-apps/application-special-input/windows/SpecialInputMainWindow.hpp => module-apps/application-special-input/windows/SpecialInputMainWindow.hpp +2 -2
@@ 1,11 1,11 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include "SpecialInputModel.hpp"
#include <gui/widgets/Image.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
#include <gui/widgets/Window.hpp>
#include <AppWindow.hpp>
#include <GridLayout.hpp>
M module-apps/apps-common/widgets/AlarmSetSpinner.cpp => module-apps/apps-common/widgets/AlarmSetSpinner.cpp +2 -2
@@ 1,10 1,10 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "AlarmSetSpinner.hpp"
#include <FontManager.hpp>
#include <RawFont.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
#include <gui/widgets/ImageBox.hpp>
#include <apps-common/widgets/TimeSetFmtSpinner.hpp>
M module-apps/apps-common/widgets/ButtonOnOff.cpp => module-apps/apps-common/widgets/ButtonOnOff.cpp +18 -10
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "ButtonOnOff.hpp"
@@ 11,14 11,22 @@ namespace gui
ButtonOnOff::ButtonOnOff(Item *parent, const ButtonState buttonState) : Label{parent}
{
setMinimumSize(style::buttonOnOff::w, style::buttonOnOff::h);
+ setEdges(RectangleEdge::None);
- setEdges(RectangleEdge::All);
- setCorners(RectangleRoundedCorner::All);
- setRadius(4);
- setPenWidth(2);
- setFilled(true);
setAlignment(Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
setFont(style::window::font::small);
+
+ fill = new Rect(this, 0, 0, 0, 0);
+ fill->setEdges(RectangleEdge::All);
+ fill->setCorners(RectangleRoundedCorner::All);
+ fill->setRadius(4);
+ fill->setPenWidth(2);
+
+ dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool {
+ fill->setArea({0, 0, newDim.w, newDim.h});
+ return true;
+ };
+
switchState(buttonState);
}
@@ 26,14 34,14 @@ namespace gui
{
currentState = newButtonState;
if (currentState == ButtonState::On) {
- setFillColor(ColorFullBlack);
+ fill->setFillColor(ColorFullBlack);
+ setColor(ColorFullWhite);
setText(utils::translate("app_settings_toggle_on"));
- setTextColor(ColorFullWhite);
}
else if (currentState == ButtonState::Off) {
- setFillColor(ColorFullWhite);
+ fill->setFillColor(ColorFullWhite);
+ setColor(ColorFullBlack);
setText(utils::translate("app_settings_toggle_off"));
- setTextColor(ColorFullBlack);
}
}
void ButtonOnOff::toggleState()
M module-apps/apps-common/widgets/ButtonOnOff.hpp => module-apps/apps-common/widgets/ButtonOnOff.hpp +2 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 30,6 30,7 @@ namespace gui
void toggleState();
private:
+ Rect *fill = nullptr;
ButtonState currentState;
};
M module-apps/apps-common/widgets/InputBox.cpp => module-apps/apps-common/widgets/InputBox.cpp +39 -58
@@ 1,87 1,68 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "InputBox.hpp"
#include <BoxLayout.hpp>
#include <Label.hpp>
-#include <Image.hpp>
+#include <ImageBox.hpp>
namespace gui
{
- constexpr uint32_t default_x = style::window::default_left_margin;
- constexpr uint32_t default_w =
- style::window_width - style::window::default_left_margin - style::window::default_right_margin;
- namespace inputHeader
+ namespace input_Box
{
- constexpr uint32_t x = style::window::default_left_margin;
- constexpr uint32_t y = 127;
- constexpr uint32_t w = default_w;
- constexpr uint32_t h = 20;
- } // namespace inputHeader
+ constexpr auto label_h = 30;
+ constexpr auto text_h = 33;
+ constexpr auto h_box_h = text_h + 3;
+ constexpr auto h = label_h + style::margins::big + h_box_h;
+ } // namespace input_Box
- namespace horizontalBox
- {
- constexpr uint32_t x = style::window::default_left_margin;
- constexpr uint32_t y = 153;
- constexpr uint32_t w = default_w;
- constexpr uint32_t h = 34;
- constexpr uint32_t penWidth = 2;
- namespace searchTop
- {
- constexpr uint32_t x = default_w;
- constexpr uint32_t y = 1;
- constexpr uint32_t w = 32;
- constexpr uint32_t h = 32;
- } // namespace searchTop
- namespace inputField
- {
- constexpr uint32_t x = 1;
- constexpr uint32_t y = 1;
- constexpr uint32_t w = default_w - searchTop::w;
- constexpr uint32_t h = 33;
- } // namespace inputField
- } // namespace horizontalBox
} // namespace gui
namespace gui
{
-
auto inputBox(gui::Item *parent, const std::string &header, const std::string &icon) -> gui::Text *
{
- auto inputField = new Text(nullptr,
- horizontalBox::inputField::x,
- horizontalBox::inputField::y,
- horizontalBox::inputField::w,
- horizontalBox::inputField::h);
+ auto verticalBox = new VBox(parent,
+ style::window::default_left_margin,
+ style::window::default_vertical_pos,
+ style::window::default_body_width,
+ input_Box::h);
+ verticalBox->setEdges(RectangleEdge::None);
+
+ auto l = new Label(verticalBox);
+ l->setMinimumHeight(input_Box::label_h);
+ l->setMaximumWidth(style::window::default_body_width);
+ l->setFont(style::window::font::small);
+ l->setEdges(RectangleEdge::None);
+ l->setText(header);
+ l->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Bottom));
+
+ auto horizontalBox = new HBox(verticalBox);
+ horizontalBox->setAlignment({gui::Alignment::Vertical::Top});
+ horizontalBox->setMargins({0, style::margins::big, 0, 0});
+ horizontalBox->setMinimumHeight(input_Box::h_box_h);
+ horizontalBox->setMinimumWidth(style::window::default_body_width);
+ horizontalBox->setPenWidth(style::window::default_border_rect_no_focus);
+ horizontalBox->setEdges(RectangleEdge::Bottom);
+
+ auto inputField = new TextFixedSize(horizontalBox);
+ inputField->drawUnderline(false);
+ inputField->setMinimumHeight(input_Box::text_h);
+ inputField->setMaximumWidth(style::window::default_body_width);
inputField->setTextType(TextType::SingleLine);
+ inputField->setTextEllipsisType(TextEllipsis::Both);
inputField->setEditMode(EditMode::Edit);
inputField->setEdges(RectangleEdge::None);
inputField->setInputMode(new InputMode({InputMode::ABC, InputMode::abc}));
inputField->setFont(style::window::font::mediumbold);
- auto horizontalBox = new HBox(parent, horizontalBox::x, horizontalBox::y, horizontalBox::w, horizontalBox::h);
- horizontalBox->addWidget(inputField);
if (!icon.empty()) {
- horizontalBox->addWidget(new Image(nullptr,
- horizontalBox::searchTop::x,
- horizontalBox::searchTop::y,
- horizontalBox::searchTop::w,
- horizontalBox::searchTop::h,
- icon));
+ auto imageBox = new ImageBox(horizontalBox, new Image(icon));
+ imageBox->setMinimumSizeToFitImage();
}
- horizontalBox->setPenWidth(horizontalBox::penWidth);
- horizontalBox->setEdges(RectangleEdge::Bottom);
-
- const RectangleEdge edges = RectangleEdge::None;
- const Alignment alignment = Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Bottom);
- auto l = new Label(parent, inputHeader::x, inputHeader::y, inputHeader::w, inputHeader::h);
-
- l->setFont(style::window::font::small);
- l->setEdges(edges);
- l->setText(header);
- l->setAlignment(alignment);
+ verticalBox->resizeItems();
return inputField;
}
M module-apps/apps-common/widgets/InputBox.hpp => module-apps/apps-common/widgets/InputBox.hpp +2 -2
@@ 1,9 1,9 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
-#include <Text.hpp>
+#include <TextFixedSize.hpp>
namespace gui
{
M module-apps/apps-common/widgets/ModesBox.hpp => module-apps/apps-common/widgets/ModesBox.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 15,7 15,7 @@ namespace sys::phone_modes
namespace style::window::modes
{
constexpr inline auto top_offset = 182;
- constexpr inline auto bottom_offset = 235;
+ constexpr inline auto bottom_offset = 210;
constexpr inline auto height = style::window_height - top_offset - bottom_offset;
constexpr inline auto width = style::window_width;
constexpr inline auto number_of_entries = 4;
M module-apps/apps-common/widgets/TextWithIconsWidget.cpp => module-apps/apps-common/widgets/TextWithIconsWidget.cpp +9 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "TextWithIconsWidget.hpp"
@@ 63,5 63,12 @@ TextWithSnippet::TextWithSnippet(const std::string &text, const UTF8 &font, cons
setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
addWidget(createSnippet(snippet));
- addWidget(createText(text, font));
+ textWidget = createText(text, font);
+ addWidget(textWidget);
+}
+
+TextWithSnippet::TextWithSnippet(Item *parent, const UTF8 &font, const UTF8 &snippet)
+ : TextWithSnippet("", font, snippet)
+{
+ parent->addWidget(this);
}
M module-apps/apps-common/widgets/TextWithIconsWidget.hpp => module-apps/apps-common/widgets/TextWithIconsWidget.hpp +7 -1
@@ 1,10 1,12 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include <BoxLayout.hpp>
#include <ImageBox.hpp>
+#include <TextFixedSize.hpp>
+
namespace app
{
class ApplicationCommon;
@@ 28,10 30,14 @@ namespace gui
class TextWithSnippet : public HBox
{
+ private:
constexpr static auto defaultSnippet = "label_rectangle_W_M";
public:
+ TextWithSnippet(Item *parent, const UTF8 &font, const UTF8 &snippet = defaultSnippet);
TextWithSnippet(const std::string &text, const UTF8 &font, const UTF8 &snippet = defaultSnippet);
+
+ TextFixedSize *textWidget = nullptr;
};
} /* namespace gui */
M module-apps/apps-common/widgets/TimeSetSpinner.cpp => module-apps/apps-common/widgets/TimeSetSpinner.cpp +1 -1
@@ 6,7 6,7 @@
#include <FontManager.hpp>
#include <RawFont.hpp>
#include <gui/widgets/ImageBox.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
static constexpr auto hourMin = 0;
static constexpr auto hourMax = 23;
D module-gui/gui/core/Ellipsis.hpp => module-gui/gui/core/Ellipsis.hpp +0 -16
@@ 1,16 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#pragma once
-
-/// ellipsis setting for core/Font & Text types to use
-namespace gui
-{
- enum class Ellipsis
- {
- Left,
- // Center, - not implemented
- Right,
- None
- };
-}; // namespace gui
M module-gui/gui/core/RawFont.cpp => module-gui/gui/core/RawFont.cpp +1 -51
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "RawFont.hpp"
@@ 211,56 211,6 @@ namespace gui
return glyph->height;
}
- UTF8 RawFont::getTextWithElipsis(const UTF8 &text, uint32_t width, Ellipsis ellipsis) const
- {
- std::string result;
- auto w_dot = getCharPixelWidth('.');
- auto text_fit_len = getCharCountInSpace(text, width);
- if (width < w_dot) // none will fit
- {
- return result;
- }
- if (text_fit_len == text.length()) // all will fit
- {
- return text;
- }
- if (ellipsis != Ellipsis::None) {
- auto char_offset = 0;
- if (ellipsis == Ellipsis::Left) {
- char_offset = text.length() - text_fit_len;
- }
- result = text.substr(char_offset, text_fit_len);
- setEllipsis(result, ellipsis);
- }
- else {
- result = text.substr(0, text_fit_len);
- }
- return result;
- }
-
- void RawFont::setEllipsis(std::string &text, Ellipsis ellipsis) const
- {
- auto set_dot = [&](auto begin, auto end) {
- auto dots_in_elipsis = 3;
- for (auto el = begin; el != end; ++el) {
- *el = '.';
- if (--dots_in_elipsis == 0) {
- break;
- }
- }
- };
- switch (ellipsis) {
- case Ellipsis::Right:
- set_dot(text.rbegin(), text.rend());
- break;
- case Ellipsis::Left:
- set_dot(text.begin(), text.end());
- break;
- case Ellipsis::None:
- break;
- }
- }
-
void RawFont::createGlyphUnsupported()
{
unsupported = std::make_unique<FontGlyph>();
M module-gui/gui/core/RawFont.hpp => module-gui/gui/core/RawFont.hpp +1 -18
@@ 1,10 1,9 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
#include "../Common.hpp"
-#include "Ellipsis.hpp"
#include "FontInfo.hpp"
#include "utf8/UTF8.hpp"
#include <cstdint>
@@ 90,14 89,6 @@ namespace gui
{
return info.face;
}
-
- /// get elipsis text in selected width from input text
- /// this essentially means:
- /// return test with "..." if needed in text begin / end if needed
- UTF8 getTextWithElipsis(const UTF8 &text, uint32_t width, Ellipsis ellipsis) const;
- /**
- * @brief Sets a font used as a glyphs collection of a "second chance"
- */
void setFallbackFont(RawFont *font);
private:
@@ 108,14 99,6 @@ namespace gui
/// the glyph used when requested glyph is unsupported in the font (and the fallback font if one is set)
std::unique_ptr<FontGlyph> unsupported = nullptr;
- /// set ellipsis on text in first parameter
- /// @note our UTF8 doesn't provide way to replace single character
- ///
- /// this is lazy done implementation - we just try to replace first/last 3 characters that would fit
- void setEllipsis(std::string &text, Ellipsis ellipsis) const;
- /**
- * @brief creates the glyph to be used in case of a requested glyph could not be found in a font
- */
void createGlyphUnsupported();
/// return glyph for selected code
M module-gui/gui/widgets/CMakeLists.txt => module-gui/gui/widgets/CMakeLists.txt +0 -2
@@ 11,7 11,6 @@ target_sources( ${PROJECT_NAME}
"${CMAKE_CURRENT_LIST_DIR}/ImageBox.cpp"
"${CMAKE_CURRENT_LIST_DIR}/ImageBoxWithText.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Item.cpp"
- "${CMAKE_CURRENT_LIST_DIR}/Label.cpp"
"${CMAKE_CURRENT_LIST_DIR}/ListItem.cpp"
"${CMAKE_CURRENT_LIST_DIR}/ListItemWithDescription.cpp"
"${CMAKE_CURRENT_LIST_DIR}/ListView.cpp"
@@ 57,7 56,6 @@ target_sources( ${PROJECT_NAME}
"${CMAKE_CURRENT_LIST_DIR}/ImageBox.hpp"
"${CMAKE_CURRENT_LIST_DIR}/ImageBoxWithText.hpp"
"${CMAKE_CURRENT_LIST_DIR}/Item.hpp"
- "${CMAKE_CURRENT_LIST_DIR}/Label.hpp"
"${CMAKE_CURRENT_LIST_DIR}/ListItem.hpp"
"${CMAKE_CURRENT_LIST_DIR}/ListItemWithDescription.hpp"
"${CMAKE_CURRENT_LIST_DIR}/ListItemProvider.hpp"
D module-gui/gui/widgets/Label.cpp => module-gui/gui/widgets/Label.cpp +0 -300
@@ 1,300 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#include <log/log.hpp>
-#include "utf8/UTF8.hpp"
-
-#include "../core/DrawCommand.hpp"
-
-#include "Label.hpp"
-#include <Style.hpp>
-#include <cassert>
-#include "TextConstants.hpp"
-#include <FontManager.hpp>
-#include <RawFont.hpp>
-
-namespace gui
-{
-
- Label::Label()
- : Rect(), text{""}, textDisplayed{""}, charDrawableCount{0}, stringPixelWidth{0}, textColor{0, 0}, font{nullptr}
- {
- setFont(style::window::font::medium);
- }
-
- Label::Label(
- Item *parent, const uint32_t &x, const uint32_t &y, const uint32_t &w, const uint32_t &h, const UTF8 &newText)
- : Rect{parent, x, y, w, h},
- text(newText), textDisplayed{""}, charDrawableCount{0}, stringPixelWidth{0}, textColor{0, 0}
- {
- setFont(style::window::font::medium);
- }
-
- Label::Label(Item *parent, meta::Label label) : Label(parent, label.x, label.y, label.w, label.h, label.text)
- {
- setPenFocusWidth(style::window::default_border_no_focus_w);
- setPenWidth(style::window::default_border_no_focus_w);
- setFont(label.font);
- setEllipsis(Ellipsis::Right);
- setAlignment(label.align);
- setRadius(label.radius);
- setEdges(label.edges);
- }
-
- void Label::calculateDisplayText()
- {
- uint32_t availableSpace = widgetArea.w;
- if (font == nullptr) {
- LOG_ERROR("No font loaded!");
- return;
- }
- charDrawableCount = font->getCharCountInSpace(text, availableSpace);
- textArea.w = font->getPixelWidth(text.substr(0, charDrawableCount));
- textDisplayed = text;
- /// do not try to draw text::newline in label
- if (text.length() > 0 && text[text.length() - 1] == text::newline) {
- textDisplayed.removeChar(textDisplayed.length() - 1);
- }
- textDisplayed = font->getTextWithElipsis(textDisplayed, availableSpace, ellipsis);
- stringPixelWidth = font->getPixelWidth(textDisplayed, 0, textDisplayed.length());
- textArea.h = font->info.line_height;
-
- // calculate vertical position of text
-
- switch (alignment.vertical) {
- case (Alignment::Vertical::Center):
- textArea.y = widgetArea.h > font->info.line_height
- ? (widgetArea.h - font->info.line_height) / 2 + font->info.base
- : font->info.base;
- break;
- case Alignment::Vertical::Top:
- textArea.y = font->info.base + padding.top;
- break;
- case Alignment::Vertical::Bottom:
- textArea.y = widgetArea.h - font->info.line_height + font->info.base - padding.bottom;
- break;
- default:
- break;
- }
-
- switch (alignment.horizontal) {
- case (Alignment::Horizontal::Center):
- textArea.x = (widgetArea.w - textArea.w) / 2;
- break;
- case Alignment::Horizontal::Left:
- textArea.x = padding.left;
- break;
- case Alignment::Horizontal::Right:
- textArea.x = widgetArea.w - textArea.w - padding.right;
- break;
- default:
- break;
- }
-
- // if dots mode is disabled and line mode is enabled calculate positiona and width of the line
- if ((ellipsis != Ellipsis::None) && (lineMode) && (lineFront != nullptr)) {
- uint32_t spaceWidth = font->getCharPixelWidth(' ');
- int32_t lineW = availableSpace - stringPixelWidth;
- uint32_t lineY = textArea.y - font->getCharPixelHeight('a') / 2;
- if (lineW < 0)
- lineW = 0;
-
- lineFront->setVisible(true);
- lineBack->setVisible(true);
- // both lines are visible
-
- switch (alignment.horizontal) {
- case (Alignment::Horizontal::Center):
- lineFront->setPosition(0, lineY);
- lineFront->setSize(lineW / 2 - spaceWidth, 2);
- lineBack->setPosition(lineW / 2 + stringPixelWidth + spaceWidth, lineY);
- lineBack->setSize(lineW / 2 - spaceWidth, 2);
- break;
- case Alignment::Horizontal::Right:
- lineFront->setPosition(0, lineY);
- lineFront->setSize(lineW - spaceWidth - padding.right, 2);
- lineBack->setVisible(false);
- break;
- case Alignment::Horizontal::Left:
- lineBack->setPosition(stringPixelWidth + spaceWidth + padding.left, lineY);
- lineBack->setSize(lineW - spaceWidth - padding.left, 2);
- lineFront->setVisible(false);
- break;
- default:
- break;
- }
- }
- }
-
- void Label::setText(const UTF8 &text)
- {
- this->text = text;
- auto fits = textFitsIn(text, area(Area::Normal).w);
- if (!fits) {
- fitTextIn(text);
- }
- calculateDisplayText();
- }
-
- Label::Fits Label::textFitsIn(const UTF8 &text, uint32_t width)
- {
- Fits fits;
- if (font == nullptr) {
- fits.fits = false;
- }
- else {
- auto cnt = font->getCharCountInSpace(text, area(Area::Max).w);
- fits.fits = cnt == text.length();
- fits.space_consumed = font->getPixelWidth(text);
- }
- return fits;
- }
-
- void Label::fitTextIn(const UTF8 &text)
- {
- Fits fits = textFitsIn(text, area(Item::Area::Max).w);
- if (fits) {
- setSize(fits.space_consumed, getHeight());
- }
- else {
- setSize(area(Item::Area::Max).w, getHeight());
- }
- }
-
- void Label::clear()
- {
- this->text = UTF8("");
- calculateDisplayText();
- }
-
- const UTF8 &Label::getText() const noexcept
- {
- return text;
- }
-
- unsigned int Label::getTextLength() const noexcept
- {
- return text.length();
- }
-
- void Label::setAlignment(const Alignment &value)
- {
- this->alignment = value;
- calculateDisplayText();
- }
-
- void Label::setPadding(const Padding &padding)
- {
- this->padding = padding;
- calculateDisplayText();
- }
-
- void Label::setEllipsis(Ellipsis ellipsis)
- {
- this->ellipsis = ellipsis;
- calculateDisplayText();
- }
-
- void Label::setLineMode(const bool &val)
- {
- // if line mode is disable remove the line if it was previously created
- if (val == false) {
- if (lineFront != nullptr) {
- this->removeWidget(lineFront);
- this->removeWidget(lineBack);
- delete lineFront;
- delete lineBack;
- lineFront = nullptr;
- lineBack = nullptr;
- }
- }
- else {
- if (lineFront == nullptr) {
- lineFront = new Rect(this, 0, 0, 0, 0);
- lineBack = new Rect(this, 0, 0, 0, 0);
- }
- }
- calculateDisplayText();
- }
-
- void Label::buildDrawListImplementation(std::list<Command> &commands)
- {
- Rect::buildDrawListImplementation(commands);
- if (font != nullptr) {
- auto cmd = std::make_unique<DrawText>();
- cmd->str = textDisplayed;
- cmd->fontID = font->id;
- cmd->color = textColor;
-
- cmd->origin = {drawArea.x, drawArea.y};
- cmd->width = drawArea.w;
- cmd->height = drawArea.h;
- cmd->textOrigin = {textArea.x, textArea.y};
- cmd->textHeight = textArea.h;
-
- cmd->areaX = widgetArea.x;
- cmd->areaY = widgetArea.y;
- cmd->areaW = widgetArea.w;
- cmd->areaH = widgetArea.h;
-
- commands.emplace_back(std::move(cmd));
- }
- }
-
- bool Label::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim)
- {
- calculateDisplayText();
- return true;
- }
-
- void Label::setFont(const UTF8 &fontName)
- {
- RawFont *newFont = FontManager::getInstance().getFont(fontName);
- setFont(newFont);
- }
-
- void Label::setFont(RawFont *font)
- {
- this->font = font;
- if (font != nullptr) {
- calculateDisplayText();
- }
- }
-
- RawFont *Label::getFont() const noexcept
- {
- return font;
- }
-
- void Label::setTextColor(Color color)
- {
- textColor = color;
- }
-
- uint32_t Label::getTextNeedSpace(const UTF8 &_text) const noexcept
- {
- if (font == nullptr) {
- return 0;
- }
-
- return _text.empty() ? font->getPixelWidth(text) : font->getPixelWidth(_text);
- }
-
- uint32_t Label::getTextHeight() const noexcept
- {
- if (font == nullptr) {
- return 0;
- }
- return font->info.line_height;
- }
-
- uint32_t Label::getTextWidth() const noexcept
- {
- return textArea.w;
- }
-
- void Label::accept(GuiVisitor &visitor)
- {
- visitor.visit(*this);
- }
-} /* namespace gui */
D module-gui/gui/widgets/Label.hpp => module-gui/gui/widgets/Label.hpp +0 -138
@@ 1,138 0,0 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
-// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
-
-#pragma once
-
-#include <string>
-#include <list>
-
-#include "../core/BoundingBox.hpp"
-#include "../core/Color.hpp"
-#include "../core/DrawCommand.hpp"
-#include "../Common.hpp"
-#include "Margins.hpp"
-#include "Alignment.hpp"
-#include "Rect.hpp"
-
-#include "Style.hpp"
-#include "utf8/UTF8.hpp"
-#include <Ellipsis.hpp>
-
-namespace gui
-{
-
- class RawFont;
-
- namespace meta
- {
- struct Meta
- {};
-
- struct Item : public Meta
- {
- uint32_t radius = 0;
- };
-
- struct Rect : public Item
- {
- Rect &operator()(std::array<uint32_t, 4> xywh)
- {
- x = xywh[0], y = xywh[1], w = xywh[2], h = xywh[3];
- return *this;
- }
- uint32_t x = 0, y = 0, w = 0, h = 0;
- std::string font = style::window::font::medium;
- Alignment align = Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center);
- RectangleEdge edges = gui::RectangleEdge::Top | gui::RectangleEdge::Bottom;
- };
-
- struct Label : public Rect
- {
- const UTF8 text;
- Label(std::array<uint32_t, 4> xywh)
- {
- operator()(xywh);
- }
- };
- }; // namespace meta
-
- class Label : public Rect
- {
- protected:
- UTF8 text;
- UTF8 textDisplayed;
- Ellipsis ellipsis = gui::Ellipsis::Right;
- uint32_t charDrawableCount = 0;
- uint32_t stringPixelWidth = 0;
- Color textColor = {0, 0};
- RawFont *font = nullptr;
- bool lineMode = true; // TODO PLZ REMOVE - this was working by accident (in Phonebook)
-
- // area specified in pixels occupied by text inside label space.
- // This defines also position of the text considering alignment and margins.
- BoundingBox textArea;
- // widgets to add line
- Rect *lineFront = nullptr;
- Rect *lineBack = nullptr;
- void calculateDisplayText();
-
- private:
- /// helper class storing 2 information from c function with bad interface:
- /// 1. whether text will fit in size
- /// 2. how much provided size will be in use
- struct Fits
- {
- bool fits = false; /// whether element fits in or not
- uint32_t space_consumed = 0; /// size needed to render text
- Fits(bool fits = false, uint32_t space_consumed = 0) : fits(fits), space_consumed(space_consumed)
- {}
- operator bool()
- {
- return fits;
- }
- };
- /// check if text will fit in Label
- Fits textFitsIn(const UTF8 &text, uint32_t width);
- /// resize widget width ( 0 <= size needed to render text <= max width )
- /// @note it doesn't call calculateDisplay text which should probably be in resize callback (onDimensionChanged)
- void fitTextIn(const UTF8 &text);
-
- public:
- Label();
- Label(Item *parent,
- const uint32_t &x = 0,
- const uint32_t &y = 0,
- const uint32_t &w = 0,
- const uint32_t &h = 0,
- const UTF8 &text = UTF8{});
- Label(Item *parent, meta::Label label);
-
- // Label's specific methods
- virtual void setText(const UTF8 &text);
- virtual void clear();
- virtual const UTF8 &getText() const noexcept;
- virtual unsigned int getTextLength() const noexcept;
- void setAlignment(const Alignment &value) override;
- void setPadding(const Padding &padding) override;
- void setEllipsis(gui::Ellipsis ellipsis);
- /**
- * @brief Defines if remaining area of the label has a horizontal line.
- */
- void setLineMode(const bool &val);
- void setTextColor(Color color);
-
- void setFont(const UTF8 &fontName);
- void setFont(RawFont *font);
- RawFont *getFont() const noexcept;
- // virtual methods
- void buildDrawListImplementation(std::list<Command> &commands) override;
- uint32_t getTextNeedSpace(const UTF8 &text = "") const noexcept;
- /// line: height
- uint32_t getTextHeight() const noexcept;
- uint32_t getTextWidth() const noexcept;
-
- bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override;
- void accept(GuiVisitor &visitor) override;
- };
-
-} /* namespace gui */
M module-gui/gui/widgets/NavBar.cpp => module-gui/gui/widgets/NavBar.cpp +4 -4
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "NavBar.hpp"
@@ 44,7 44,7 @@ namespace gui::nav_bar
left->setPadding({0, 0, 0, style::nav_bar::bottom_padding});
left->setMinimumHeight(widgetArea.h);
left->setFont(style::nav_bar::font::medium);
- left->setEllipsis(Ellipsis::Right);
+ left->setTextEllipsisType(TextEllipsis::Right);
left->setVisible(true);
left->setEdges(RectangleEdge::None);
@@ 54,7 54,7 @@ namespace gui::nav_bar
center->setMinimumHeight(widgetArea.h);
center->setMaximumWidth(widgetArea.w);
center->setFont(style::nav_bar::font::bold);
- center->setEllipsis(Ellipsis::Right);
+ center->setTextEllipsisType(TextEllipsis::Right);
center->setVisible(true);
center->setEdges(RectangleEdge::None);
@@ 63,7 63,7 @@ namespace gui::nav_bar
right->setPadding({0, 0, 0, style::nav_bar::bottom_padding});
right->setMinimumHeight(widgetArea.h);
right->setFont(style::nav_bar::font::medium);
- right->setEllipsis(Ellipsis::Right);
+ right->setTextEllipsisType(TextEllipsis::Right);
right->setVisible(true);
right->setEdges(RectangleEdge::None);
}
M => +2 -2
@@ 1,4 1,4 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "Header.hpp"
@@ 39,7 39,7 @@ namespace gui::header
title->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Top));
title->setPadding(gui::Padding(0, style::header::title::top_padding, 0, 0));
title->setEdges(RectangleEdge::None);
title->setEllipsis(Ellipsis::Right);
title->setTextEllipsisType(TextEllipsis::Right);
title->setVisible(true);
title->setText(text);
return title;
M module-gui/gui/widgets/status-bar/PhoneMode.cpp => module-gui/gui/widgets/status-bar/PhoneMode.cpp +2 -1
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "PhoneMode.hpp"
@@ 16,6 16,7 @@ namespace gui::status_bar
{
setEdges(RectangleEdge::None);
setFont(style::status_bar::nat::font);
+ setTextEllipsisType(TextEllipsis::Right);
setAlignment(gui::Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
}
M module-gui/gui/widgets/text/CMakeLists.txt => module-gui/gui/widgets/text/CMakeLists.txt +1 -0
@@ 15,6 15,7 @@ target_sources( ${PROJECT_NAME}
"${CMAKE_CURRENT_LIST_DIR}/modes/InputMode.cpp"
"${CMAKE_CURRENT_LIST_DIR}/parsers/RichTextParser.cpp"
"${CMAKE_CURRENT_LIST_DIR}/parsers/TextParse.cpp"
+ "${CMAKE_CURRENT_LIST_DIR}/Label.cpp"
"${CMAKE_CURRENT_LIST_DIR}/Text.cpp"
"${CMAKE_CURRENT_LIST_DIR}/TextBubble.cpp"
"${CMAKE_CURRENT_LIST_DIR}/TextFixedSize.cpp"
A module-gui/gui/widgets/text/Label.cpp => module-gui/gui/widgets/text/Label.cpp +26 -0
@@ 0,0 1,26 @@
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "Label.hpp"
+
+namespace gui
+{
+ Label::Label(Item *parent, Position x, Position y, Length w, Length h, const UTF8 &inputText)
+ : TextFixedSize(parent, x, y, w, h)
+ {
+ setEditMode(EditMode::Browse);
+ setCursorStartPosition(CursorStartPosition::DocumentBegin);
+ setTextType(TextType::SingleLine);
+ drawUnderline(false);
+ setPenFocusWidth(style::window::default_border_rect_no_focus);
+ setPenWidth(style::window::default_border_rect_no_focus);
+
+ setText(inputText);
+ }
+
+ uint32_t Label::getTextNeedSpace(const UTF8 &inputText) const noexcept
+ {
+ return inputText.empty() ? format.getFont()->getPixelWidth(getText())
+ : format.getFont()->getPixelWidth(inputText);
+ }
+} /* namespace gui */
A module-gui/gui/widgets/text/Label.hpp => module-gui/gui/widgets/text/Label.hpp +24 -0
@@ 0,0 1,24 @@
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+#include "TextFixedSize.hpp"
+
+namespace gui
+{
+ class Label : public TextFixedSize
+ {
+ private:
+ public:
+ explicit Label(Item *parent,
+ Position x = 0U,
+ Position y = 0U,
+ Length w = 0U,
+ Length h = 0U,
+ const UTF8 &inputText = UTF8{});
+
+ uint32_t getTextNeedSpace(const UTF8 &text = "") const noexcept;
+ };
+
+} /* namespace gui */
M module-gui/gui/widgets/text/Text.cpp => module-gui/gui/widgets/text/Text.cpp +8 -3
@@ 230,7 230,7 @@ namespace gui
? text::RichTextParser().parse(text, &format)->getText()
: text;
- setMinimumWidth(format.getFont()->getPixelWidth(textToFit) + TextCursor::defaultWidth);
+ setMinimumWidth(format.getFont()->getPixelWidth(textToFit) + getCursorDrawSpace());
}
}
@@ 387,7 387,7 @@ namespace gui
debug_text("--> START drawLines: {%" PRIu32 ", %" PRIu32 "}", w, h);
lines->draw(drawCursor,
- getSizeMinusPadding(Axis::X, Area::Max) - TextCursor::defaultWidth,
+ getSizeMinusPadding(Axis::X, Area::Max) - getCursorDrawSpace(),
getSizeMinusPadding(Axis::Y, Area::Max),
padding.top,
padding.left,
@@ 415,7 415,7 @@ namespace gui
if (format.getFont() != nullptr &&
padding.top + lines->linesHeight() < format.getFont()->info.line_height) {
hUsed = format.getFont()->info.line_height;
- wUsed = TextCursor::defaultWidth;
+ wUsed = getCursorDrawSpace();
debug_text("empty line height: %d", hUsed);
}
}
@@ 499,6 499,11 @@ namespace gui
cursor->setVisible(focus && isMode(EditMode::Edit));
}
+ unsigned int Text::getCursorDrawSpace()
+ {
+ return editMode == EditMode::Edit ? TextCursor::defaultWidth : 0;
+ }
+
auto Text::handleRotateInputMode(const InputEvent &inputEvent) -> bool
{
if (mode != nullptr && inputEvent.isShortRelease(gui::KeyCode::KEY_AST)) {
M module-gui/gui/widgets/text/Text.hpp => module-gui/gui/widgets/text/Text.hpp +1 -0
@@ 65,6 65,7 @@ namespace gui
/// show cursor if cursor should be visible
void showCursor(bool focus);
+ unsigned int getCursorDrawSpace();
public:
ExpandMode expandMode = ExpandMode::None;
M module-gui/gui/widgets/text/TextFixedSize.cpp => module-gui/gui/widgets/text/TextFixedSize.cpp +2 -2
@@ 1,5 1,5 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "TextFixedSize.hpp"
@@ 54,7 54,7 @@ namespace gui
cursor->getDocument(), startDrawBlockPosition, startDrawBlockNumber, getTextFormat().getFont());
lines->draw(drawCursor,
- getSizeMinusPadding(Axis::X, Area::Normal) - TextCursor::defaultWidth,
+ getSizeMinusPadding(Axis::X, Area::Normal) - getCursorDrawSpace(),
getSizeMinusPadding(Axis::Y, Area::Normal),
padding.top,
padding.left,
M module-gui/test/test-catch/test-gui-callbacks.cpp => module-gui/test/test-catch/test-gui-callbacks.cpp +4 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include <catch2/catch.hpp>
@@ 39,7 39,8 @@ TEST_CASE("gui::Item on input flow test")
}
}
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
+#include "mock/InitializedFontManager.hpp"
TEST_CASE("gui::Window on input flow test")
{
@@ 65,6 66,7 @@ TEST_CASE("gui::Window on input flow test")
REQUIRE(success == false);
}
+ mockup::fontManager();
auto l1 = new gui::Label(&win, 0, 0, 0, 0, "Test 1");
auto l2 = new gui::Label(&win, 0, 0, 0, 0, "Test 2");
M module-gui/test/test-catch/test-gui.cpp => module-gui/test/test-catch/test-gui.cpp +7 -6
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
/// These are random tests what could be salvaged from old tests
@@ 22,7 22,7 @@
#include <module-gui/gui/core/ImageManager.hpp>
#include <module-gui/gui/core/BoundingBox.hpp>
-#include <module-gui/gui/widgets/Label.hpp>
+#include <module-gui/gui/widgets/text/Label.hpp>
#include <module-gui/gui/widgets/BoxLayout.hpp>
#include <module-gui/gui/widgets/Image.hpp>
@@ 81,7 81,7 @@ TEST_CASE("Draw window with labels")
label = new gui::Label(win, 20, 480, 440, 120, "BOTTOM RIGHT");
label->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Right, gui::Alignment::Vertical::Bottom));
label->setRadius(15);
- label->setEllipsis(gui::Ellipsis::Right);
+ label->setTextEllipsisType(gui::TextEllipsis::Right);
label->setFont("gt_pressura_bold_65");
// vector with draw commands
@@ 93,6 93,7 @@ TEST_CASE("Draw window with labels")
TEST_CASE("Draw window with box layouts")
{
+ mockup::fontManager();
auto win_unique = make_unique<gui::TestWindow>("MAIN"); // make root gui element used unique to auto clean it
auto win = win_unique.get(); // get pointer to root element for ctros sake
win->setSize(480, 600);
@@ 104,9 105,9 @@ TEST_CASE("Draw window with box layouts")
maxW1->setFilled(true);
maxW1->setMaximumSize(50, 300);
- gui::Label *maxW4 = new gui::Label();
+ gui::Label *maxW4 = new gui::Label(nullptr);
maxW4->setText("Top Left corner");
- maxW4->setEllipsis(gui::Ellipsis::Right);
+ maxW4->setTextEllipsisType(gui::TextEllipsis::Right);
maxW4->setMaximumSize(275, 60);
gui::Rect *maxW2 = new gui::Rect();
@@ 134,7 135,7 @@ TEST_CASE("Draw window with box layouts")
gui::Rect *maxH3 = new gui::Rect();
maxH3->setMaximumSize(30, 300);
- gui::Label *maxH4 = new gui::Label();
+ gui::Label *maxH4 = new gui::Label(nullptr);
maxH4->setText("Hello Mudita");
maxH4->setRadius(20);
maxH4->setAlignment(gui::Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
M products/BellHybrid/apps/application-bell-main/widgets/SnoozeTimer.cpp => products/BellHybrid/apps/application-bell-main/widgets/SnoozeTimer.cpp +2 -2
@@ 1,10 1,10 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "SnoozeTimer.hpp"
#include <FontManager.hpp>
#include <RawFont.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
#include <gui/widgets/ImageBox.hpp>
#include <apps-common/widgets/TimeSetSpinner.hpp>
M products/BellHybrid/apps/application-bell-settings/widgets/TimeFormatSetListItem.cpp => products/BellHybrid/apps/application-bell-settings/widgets/TimeFormatSetListItem.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "TimeFormatSetListItem.hpp"
@@ 6,7 6,7 @@
#include <gui/core/FontManager.hpp>
#include <gui/core/RawFont.hpp>
-#include <gui/widgets/Label.hpp>
+#include <gui/widgets/text/Label.hpp>
#include <widgets/TimeSetFmtSpinner.hpp>