From 312d4a07a6ca90f3ef4045b6bbafa947e775e743 Mon Sep 17 00:00:00 2001 From: Przemyslaw Brudny Date: Mon, 15 Feb 2021 10:32:22 +0100 Subject: [PATCH] [EGD-3756] Created generic ListItemWithCallbacks Added generic template for ListItemWithCallbacks. Replaced onDimensionsChange with callbacks. --- .../widgets/AlarmInternalListItem.hpp | 9 +-------- .../widgets/AlarmItem.cpp | 10 ++++------ .../widgets/AlarmItem.hpp | 2 -- .../widgets/AlarmOptionsItem.cpp | 10 ++++------ .../widgets/AlarmOptionsItem.hpp | 2 -- .../widgets/AlarmTimeItem.cpp | 12 +++++------ .../widgets/AlarmTimeItem.hpp | 3 --- .../widgets/CustomCheckBoxWithLabel.cpp | 11 +++++----- .../widgets/CustomCheckBoxWithLabel.hpp | 2 -- .../models/CustomRepeatModel.cpp | 2 +- .../widgets/AllEventsItem.cpp | 10 ++++------ .../widgets/AllEventsItem.hpp | 3 --- .../widgets/CalendarListItem.hpp | 9 +-------- .../widgets/CheckBoxWithLabelItem.cpp | 16 +++++++-------- .../widgets/CheckBoxWithLabelItem.hpp | 3 --- .../widgets/DayEventsItem.cpp | 13 +++++------- .../widgets/DayEventsItem.hpp | 1 - .../application-calendar/widgets/DayLabel.cpp | 11 +++++----- .../application-calendar/widgets/DayLabel.hpp | 1 - .../widgets/EventDateItem.cpp | 10 ++++------ .../widgets/EventDateItem.hpp | 2 -- .../widgets/EventDetailDescriptionItem.cpp | 12 +++++------ .../widgets/EventDetailDescriptionItem.hpp | 2 -- .../widgets/EventTimeItem.cpp | 12 +++++------ .../widgets/EventTimeItem.hpp | 2 -- .../widgets/RepeatAndReminderItem.cpp | 12 +++++------ .../widgets/RepeatAndReminderItem.hpp | 1 - .../widgets/SeveralOptionsItem.cpp | 11 ++++------ .../widgets/SeveralOptionsItem.hpp | 3 --- .../widgets/TextWithLabelItem.cpp | 11 ++++------ .../widgets/TextWithLabelItem.hpp | 3 --- .../widgets/CalllogItem.cpp | 11 ++++------ .../widgets/CalllogItem.hpp | 3 --- .../widgets/DesktopInputWidget.cpp | 11 ++++------ .../widgets/DesktopInputWidget.hpp | 1 - .../widgets/SMSInputWidget.cpp | 13 +++++------- .../widgets/SMSInputWidget.hpp | 1 - .../widgets/SMSOutputWidget.cpp | 20 +++++++++---------- .../widgets/SMSOutputWidget.hpp | 1 - .../widgets/SMSTemplateItem.cpp | 11 ++++------ .../widgets/SMSTemplateItem.hpp | 3 --- .../widgets/SongItem.cpp | 12 ++++------- .../widgets/SongItem.hpp | 1 - .../widgets/ContactListItem.hpp | 9 +-------- .../widgets/InformationWidget.cpp | 12 +++++------ .../widgets/InformationWidget.hpp | 1 - .../InputBoxWithLabelAndIconWidget.cpp | 12 ++++------- .../InputBoxWithLabelAndIconWidget.hpp | 1 - .../widgets/InputLinesWithLabelIWidget.cpp | 12 +++++------ .../widgets/InputLinesWithLabelIWidget.hpp | 1 - .../OutputLinesTextWithLabelWidget.cpp | 14 +++++-------- .../OutputLinesTextWithLabelWidget.hpp | 1 - .../widgets/PhonebookItem.cpp | 10 ++++------ .../widgets/PhonebookItem.hpp | 1 - .../widgets/ApnInputWidget.cpp | 12 +++++------ .../widgets/ApnInputWidget.hpp | 1 - .../widgets/ApnListItem.hpp | 9 +-------- .../widgets/QuoteWidget.cpp | 14 +++++-------- .../widgets/QuoteWidget.hpp | 2 -- .../widgets/ColorTestListItem.cpp | 10 ++++------ .../widgets/ColorTestListItem.hpp | 1 - .../widgets/SpecialInputTableWidget.cpp | 11 +++++----- .../widgets/SpecialInputTableWidget.hpp | 1 - module-gui/gui/widgets/BoxLayout.cpp | 1 + module-gui/gui/widgets/ListItem.hpp | 8 ++++++++ 65 files changed, 152 insertions(+), 291 deletions(-) diff --git a/module-apps/application-alarm-clock/widgets/AlarmInternalListItem.hpp b/module-apps/application-alarm-clock/widgets/AlarmInternalListItem.hpp index 62e2f7a5fa04cf35d8e0b60284de40ec9f5679e5..59827a9768ccd7c2bdfeccf312bba6a3c2a7b2a9 100644 --- a/module-apps/application-alarm-clock/widgets/AlarmInternalListItem.hpp +++ b/module-apps/application-alarm-clock/widgets/AlarmInternalListItem.hpp @@ -7,12 +7,5 @@ namespace gui { - class AlarmInternalListItem : public ListItem - { - public: - std::function event)> onSaveCallback = nullptr; - std::function event)> onLoadCallback = nullptr; - std::function onContentChangedCallback = nullptr; - }; - + using AlarmInternalListItem = ListItemWithCallbacks; } /* namespace gui */ diff --git a/module-apps/application-alarm-clock/widgets/AlarmItem.cpp b/module-apps/application-alarm-clock/widgets/AlarmItem.cpp index ae62242a7079c3c96ebb7fdbd136291ea1517fae..5f3755bbe9d48d92370f9f1bd0064fe30eef1e60 100644 --- a/module-apps/application-alarm-clock/widgets/AlarmItem.cpp +++ b/module-apps/application-alarm-clock/widgets/AlarmItem.cpp @@ -43,13 +43,11 @@ namespace gui onOffImage->setMargins(gui::Margins(style::alarmClock::window::item::imageMargin, 0, 0, 0)); setAlarm(); - } - bool AlarmItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void AlarmItem::setAlarm() diff --git a/module-apps/application-alarm-clock/widgets/AlarmItem.hpp b/module-apps/application-alarm-clock/widgets/AlarmItem.hpp index 529296c1396479d57dd0228880f7ae6dd48df3b5..7012dec593a2cef6376a7e9991fda5ab4adc93b2 100644 --- a/module-apps/application-alarm-clock/widgets/AlarmItem.hpp +++ b/module-apps/application-alarm-clock/widgets/AlarmItem.hpp @@ -24,7 +24,5 @@ namespace gui public: explicit AlarmItem(std::shared_ptr record); - - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } // namespace gui diff --git a/module-apps/application-alarm-clock/widgets/AlarmOptionsItem.cpp b/module-apps/application-alarm-clock/widgets/AlarmOptionsItem.cpp index 564af088c6dafa69871e31da01cef2991a7c3109..2e646b8da6e444e316bbe87298858a705639f59b 100644 --- a/module-apps/application-alarm-clock/widgets/AlarmOptionsItem.cpp +++ b/module-apps/application-alarm-clock/widgets/AlarmOptionsItem.cpp @@ -284,13 +284,11 @@ namespace gui } optionLabel->setText(optionsNames[actualVectorIndex]); }; - } - bool AlarmOptionsItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } std::vector AlarmOptionsItem::getMusicFilesList() diff --git a/module-apps/application-alarm-clock/widgets/AlarmOptionsItem.hpp b/module-apps/application-alarm-clock/widgets/AlarmOptionsItem.hpp index 4891a19c725f9979d67ab3afd064bc980e12c41c..5216c5541d912d54550fd52afb072939cf01444c 100644 --- a/module-apps/application-alarm-clock/widgets/AlarmOptionsItem.hpp +++ b/module-apps/application-alarm-clock/widgets/AlarmOptionsItem.hpp @@ -47,8 +47,6 @@ namespace gui AlarmOptionItemName itemName, std::function bottomBarTemporaryMode = nullptr, std::function bottomBarRestoreFromTemporaryMode = nullptr); - - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-alarm-clock/widgets/AlarmTimeItem.cpp b/module-apps/application-alarm-clock/widgets/AlarmTimeItem.cpp index 61b9f3ca5e1204ff78d55cba20b36b5bfb0ad7ec..26c6593ed41cfccf3b9b45ed25d4fa396166a9a6 100644 --- a/module-apps/application-alarm-clock/widgets/AlarmTimeItem.cpp +++ b/module-apps/application-alarm-clock/widgets/AlarmTimeItem.cpp @@ -123,6 +123,11 @@ namespace gui onInputCallback(*hourInput); onInputCallback(*minuteInput); + + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void AlarmTimeItem::onInputCallback(gui::Text &textItem) @@ -203,13 +208,6 @@ namespace gui } } - bool AlarmTimeItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); - return true; - } - bool AlarmTimeItem::isPm(const std::string &text) const { return !(text == utils::localize.get(utils::time::Locale::getAM())); diff --git a/module-apps/application-alarm-clock/widgets/AlarmTimeItem.hpp b/module-apps/application-alarm-clock/widgets/AlarmTimeItem.hpp index a31b3ad1a4f1a67e16c23f78bec3ca67e852627f..6ebbb3b08bbad2b2d70e0218d208c877166b00f5 100644 --- a/module-apps/application-alarm-clock/widgets/AlarmTimeItem.hpp +++ b/module-apps/application-alarm-clock/widgets/AlarmTimeItem.hpp @@ -31,9 +31,6 @@ namespace gui AlarmTimeItem(bool mode24H, std::function bottomBarTemporaryMode = nullptr, std::function bottomBarRestoreFromTemporaryMode = nullptr); - - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-alarm-clock/widgets/CustomCheckBoxWithLabel.cpp b/module-apps/application-alarm-clock/widgets/CustomCheckBoxWithLabel.cpp index 29883e7bc6a4db90d726053b7ed76056e86e9739..8d897c788135e1cc81d7dc1c367df86a579b536f 100644 --- a/module-apps/application-alarm-clock/widgets/CustomCheckBoxWithLabel.cpp +++ b/module-apps/application-alarm-clock/widgets/CustomCheckBoxWithLabel.cpp @@ -80,6 +80,11 @@ namespace gui return false; }; onContentChangedCallback = [&]() { return checkBox->isChecked(); }; + + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void CustomCheckBoxWithLabel::setCheckBoxes() @@ -91,10 +96,4 @@ namespace gui } } - bool CustomCheckBoxWithLabel::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); - return true; - } } // namespace gui diff --git a/module-apps/application-alarm-clock/widgets/CustomCheckBoxWithLabel.hpp b/module-apps/application-alarm-clock/widgets/CustomCheckBoxWithLabel.hpp index bac4c3a4e74fb547baa19ff29746d3c12951a4dc..fc5a0015775e974feaaa8ec35bc9a805fdd43682 100644 --- a/module-apps/application-alarm-clock/widgets/CustomCheckBoxWithLabel.hpp +++ b/module-apps/application-alarm-clock/widgets/CustomCheckBoxWithLabel.hpp @@ -26,8 +26,6 @@ namespace gui public: CustomCheckBoxWithLabel(app::Application *app, const std::string &description, const WeekDaysRepeatData &data); - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; - static const std::map weekDays; }; } // namespace gui diff --git a/module-apps/application-calendar/models/CustomRepeatModel.cpp b/module-apps/application-calendar/models/CustomRepeatModel.cpp index 570953172bc82c2402a5d61396c294e054d9d574..7d07d3cfe46cd732c9396012f689fb8b2e8b36f4 100644 --- a/module-apps/application-calendar/models/CustomRepeatModel.cpp +++ b/module-apps/application-calendar/models/CustomRepeatModel.cpp @@ -66,7 +66,7 @@ std::vector CustomRepeatModel::getIsCheckedData() { std::vector isCheckedData; for (auto item : internalData) { - if (item->onContentChangeCallback && item->onContentChangeCallback()) { + if (item->onContentChangedCallback && item->onContentChangedCallback()) { isCheckedData.push_back(true); } else { diff --git a/module-apps/application-calendar/widgets/AllEventsItem.cpp b/module-apps/application-calendar/widgets/AllEventsItem.cpp index 9082e0babd40c5e7247d697be9b54288447d29e2..5134819abe56ef3e60552eb281c6bfb876dd4824 100644 --- a/module-apps/application-calendar/widgets/AllEventsItem.cpp +++ b/module-apps/application-calendar/widgets/AllEventsItem.cpp @@ -34,13 +34,11 @@ namespace gui description->setEdges(gui::RectangleEdge::None); description->setFont(style::window::font::bigbold); description->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center}); - } - bool AllEventsItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void AllEventsItem::setMarkerItem(UTF8 text) diff --git a/module-apps/application-calendar/widgets/AllEventsItem.hpp b/module-apps/application-calendar/widgets/AllEventsItem.hpp index 1e64a0cb1c7ec378aba6259366c03e7e583c63fe..65d7d5aecc6a5fc9699787723975aebc8361c978 100644 --- a/module-apps/application-calendar/widgets/AllEventsItem.hpp +++ b/module-apps/application-calendar/widgets/AllEventsItem.hpp @@ -24,9 +24,6 @@ namespace gui void setMarkerItem(UTF8 text); [[nodiscard]] UTF8 getLabelMarker() const; void setEvent(std::shared_ptr record); - - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/CalendarListItem.hpp b/module-apps/application-calendar/widgets/CalendarListItem.hpp index e2e8f995887dfc10d51a2b174d5f76dd2ad2352b..9363dbbead78a6f720fcaaa43506cad38a021493 100644 --- a/module-apps/application-calendar/widgets/CalendarListItem.hpp +++ b/module-apps/application-calendar/widgets/CalendarListItem.hpp @@ -7,12 +7,5 @@ namespace gui { - class CalendarListItem : public ListItem - { - public: - std::function event)> onSaveCallback = nullptr; - std::function event)> onLoadCallback = nullptr; - std::function onContentChangeCallback = nullptr; - }; - + using CalendarListItem = ListItemWithCallbacks; } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/CheckBoxWithLabelItem.cpp b/module-apps/application-calendar/widgets/CheckBoxWithLabelItem.cpp index a53b0701b0f1d177ca56c652a52042ae7d9b50f6..436075bef5209d29bf6bb19ca13c68d131e18cfc 100644 --- a/module-apps/application-calendar/widgets/CheckBoxWithLabelItem.cpp +++ b/module-apps/application-calendar/widgets/CheckBoxWithLabelItem.cpp @@ -57,7 +57,7 @@ namespace gui if (checkBoxData != nullptr) { setCheckBoxes(); } - onContentChangeCallback = [&]() { return checkBox->isChecked(); }; + onContentChangedCallback = [&]() { return checkBox->isChecked(); }; } void CheckBoxWithLabelItem::applyCallbacks() @@ -76,11 +76,16 @@ namespace gui inputCallback = [&](gui::Item &item, const gui::InputEvent &event) { if (checkBox->onInput(event)) { checkBox->resizeItems(); - onContentChangeCallback = [&]() { return checkBox->isChecked(); }; + onContentChangedCallback = [&]() { return checkBox->isChecked(); }; return true; } return false; }; + + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void CheckBoxWithLabelItem::setCheckBoxes() @@ -108,11 +113,4 @@ namespace gui } } - bool CheckBoxWithLabelItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); - return true; - } - } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/CheckBoxWithLabelItem.hpp b/module-apps/application-calendar/widgets/CheckBoxWithLabelItem.hpp index 6048216a3edd80b7b368939e34728261b5241b5c..c7f643970e60df0cf89bf3703089e257f02ff0bd 100644 --- a/module-apps/application-calendar/widgets/CheckBoxWithLabelItem.hpp +++ b/module-apps/application-calendar/widgets/CheckBoxWithLabelItem.hpp @@ -30,9 +30,6 @@ namespace gui gui::Label *descriptionLabel = nullptr; gui::CheckBox *checkBox = nullptr; - - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/DayEventsItem.cpp b/module-apps/application-calendar/widgets/DayEventsItem.cpp index a46aac754d635cad2d87eba294f77aff54e63c31..2ab342d0b025876fdd3a494c02b2b3d618418f45 100644 --- a/module-apps/application-calendar/widgets/DayEventsItem.cpp +++ b/module-apps/application-calendar/widgets/DayEventsItem.cpp @@ -41,6 +41,11 @@ namespace gui description->setEdges(gui::RectangleEdge::None); description->setFont(style::window::font::medium); description->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center}); + + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void DayEventsItem::setEvent(std::shared_ptr rec) @@ -55,12 +60,4 @@ namespace gui } } } - - bool DayEventsItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; - } - } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/DayEventsItem.hpp b/module-apps/application-calendar/widgets/DayEventsItem.hpp index 577166b1317a66d4078bb9d9d7dbacc043ae15ba..17a714bebd1c8b0ea2b245fe8f7c3fbac5ae6733 100644 --- a/module-apps/application-calendar/widgets/DayEventsItem.hpp +++ b/module-apps/application-calendar/widgets/DayEventsItem.hpp @@ -27,7 +27,6 @@ namespace gui // virtual methods from Item void setEvent(std::shared_ptr record); - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/DayLabel.cpp b/module-apps/application-calendar/widgets/DayLabel.cpp index 604c3b54be03da8824d3c162816c748634da3e02..9ef1349b4931d76c0f75372f1ee38480cb71db2f 100644 --- a/module-apps/application-calendar/widgets/DayLabel.cpp +++ b/module-apps/application-calendar/widgets/DayLabel.cpp @@ -86,6 +86,11 @@ namespace gui this->setPenFocusWidth(style::window::default_border_focus_w); this->setEdges(RectangleEdge::Top | RectangleEdge::Bottom); } + + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } uint32_t DayLabel::getDayNumber() @@ -105,10 +110,4 @@ namespace gui } } - bool DayLabel::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - this->vBox->setPosition(0, 0); - this->vBox->setSize(newDim.w, newDim.h); - return true; - } } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/DayLabel.hpp b/module-apps/application-calendar/widgets/DayLabel.hpp index 71cf74c341a8d62f322053d18f8566b827560e30..eb69c863342f93fab7489f613c61e1bb436a4316 100644 --- a/module-apps/application-calendar/widgets/DayLabel.hpp +++ b/module-apps/application-calendar/widgets/DayLabel.hpp @@ -25,7 +25,6 @@ namespace gui bool isDayEmpty); ~DayLabel() override = default; - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; uint32_t getDayNumber(); }; diff --git a/module-apps/application-calendar/widgets/EventDateItem.cpp b/module-apps/application-calendar/widgets/EventDateItem.cpp index a12d09cf6347d3126d3d3b218263ed41b78a3186..4222a2f27bab663b2c784fbe8172097114983bc3 100644 --- a/module-apps/application-calendar/widgets/EventDateItem.cpp +++ b/module-apps/application-calendar/widgets/EventDateItem.cpp @@ -132,13 +132,11 @@ namespace gui setOnInputCallback(*dayInput); setOnInputCallback(*monthInput); setOnInputCallback(*yearInput); - } - bool EventDateItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } calendar::YearMonthDay EventDateItem::validateDate() diff --git a/module-apps/application-calendar/widgets/EventDateItem.hpp b/module-apps/application-calendar/widgets/EventDateItem.hpp index d7af52adaceb4ab7ef8fe7d73e12587d04b4c12b..940245ae0ed7f2db57d4123b11d8ff0db84e7364 100644 --- a/module-apps/application-calendar/widgets/EventDateItem.hpp +++ b/module-apps/application-calendar/widgets/EventDateItem.hpp @@ -34,8 +34,6 @@ namespace gui EventDateItem(); const calendar::YearMonthDay getChosenDate(); - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/EventDetailDescriptionItem.cpp b/module-apps/application-calendar/widgets/EventDetailDescriptionItem.cpp index 807ed3f575e78c5be0feb03614f18c3dbaf210dd..9658cca74e856a272a171d8389f753f377006246 100644 --- a/module-apps/application-calendar/widgets/EventDetailDescriptionItem.cpp +++ b/module-apps/application-calendar/widgets/EventDetailDescriptionItem.cpp @@ -64,14 +64,12 @@ namespace gui return true; }; - descriptionHandler(); - } + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; - bool EventDetailDescriptionItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; + descriptionHandler(); } void EventDetailDescriptionItem::descriptionHandler() diff --git a/module-apps/application-calendar/widgets/EventDetailDescriptionItem.hpp b/module-apps/application-calendar/widgets/EventDetailDescriptionItem.hpp index 8f5800c19004f3ba9e70aeffd2c2448499cb87fe..f01853d5ea5f5ed22fbfd8cf4b129ea8d8d0914f 100644 --- a/module-apps/application-calendar/widgets/EventDetailDescriptionItem.hpp +++ b/module-apps/application-calendar/widgets/EventDetailDescriptionItem.hpp @@ -23,8 +23,6 @@ namespace gui virtual ~EventDetailDescriptionItem() override = default; void descriptionHandler(); - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/EventTimeItem.cpp b/module-apps/application-calendar/widgets/EventTimeItem.cpp index ce663e2a3c3903d4cbfebc87f6066aa35a2e8cef..a12fbd3c4b22eb450b8eff8e17de783d2b1a3db3 100644 --- a/module-apps/application-calendar/widgets/EventTimeItem.cpp +++ b/module-apps/application-calendar/widgets/EventTimeItem.cpp @@ -73,6 +73,11 @@ namespace gui return true; }; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; + applyInputCallbacks(); prepareForTimeMode(); } @@ -253,13 +258,6 @@ namespace gui } } - bool EventTimeItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; - } - void EventTimeItem::setConnectionToSecondItem(gui::EventTimeItem *item) { this->secondItem = item; diff --git a/module-apps/application-calendar/widgets/EventTimeItem.hpp b/module-apps/application-calendar/widgets/EventTimeItem.hpp index 641d5e3a922713093aa06cda4953b52b3dd30eee..6b89b5c1b52fc66001ded942759fdb1acdc9e5fe 100644 --- a/module-apps/application-calendar/widgets/EventTimeItem.hpp +++ b/module-apps/application-calendar/widgets/EventTimeItem.hpp @@ -59,8 +59,6 @@ namespace gui void setConnectionToSecondItem(gui::EventTimeItem *item); void setConnectionToDateItem(gui::EventDateItem *item); - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/RepeatAndReminderItem.cpp b/module-apps/application-calendar/widgets/RepeatAndReminderItem.cpp index 4cccfdc7276ffc903f289374877a0b4a74f2556a..d8b437a487f6ba134c60350051064deb9804ad57 100644 --- a/module-apps/application-calendar/widgets/RepeatAndReminderItem.cpp +++ b/module-apps/application-calendar/widgets/RepeatAndReminderItem.cpp @@ -89,14 +89,12 @@ namespace gui reminder->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center}); reminder->activeItem = false; - descriptionHandler(); - } + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; - bool RepeatAndReminderItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); - return true; + descriptionHandler(); } void RepeatAndReminderItem::descriptionHandler() diff --git a/module-apps/application-calendar/widgets/RepeatAndReminderItem.hpp b/module-apps/application-calendar/widgets/RepeatAndReminderItem.hpp index b7be9305f52add83bb1e10b54dad468fd7dedd35..5e82499209c680ae40dcb5844c582047c582bb6e 100644 --- a/module-apps/application-calendar/widgets/RepeatAndReminderItem.hpp +++ b/module-apps/application-calendar/widgets/RepeatAndReminderItem.hpp @@ -30,7 +30,6 @@ namespace gui virtual ~RepeatAndReminderItem() = default; void descriptionHandler(); - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/SeveralOptionsItem.cpp b/module-apps/application-calendar/widgets/SeveralOptionsItem.cpp index 38faf970f29150744f829a54b94af771d1c1fdbc..78a4003dd91a284143be226bd207af3b8be0d0a1 100644 --- a/module-apps/application-calendar/widgets/SeveralOptionsItem.cpp +++ b/module-apps/application-calendar/widgets/SeveralOptionsItem.cpp @@ -218,13 +218,10 @@ namespace gui optionLabel->setText(optionsNames[actualVectorIndex]); } }; - } - bool SeveralOptionsItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } - } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/SeveralOptionsItem.hpp b/module-apps/application-calendar/widgets/SeveralOptionsItem.hpp index 81b00bb3f5c48a4bfa6cff1cd3f207b88275dd40..4d2a3212d4a04b07575ce79d605887314db719fd 100644 --- a/module-apps/application-calendar/widgets/SeveralOptionsItem.hpp +++ b/module-apps/application-calendar/widgets/SeveralOptionsItem.hpp @@ -49,9 +49,6 @@ namespace gui void prepareOptionsNames(); void applyCallbacks(); uint32_t repeatOptionValue = 0; - - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/TextWithLabelItem.cpp b/module-apps/application-calendar/widgets/TextWithLabelItem.cpp index 2be8f60fb51e9af1d130bf71de8ad9d28616a0df..7f7ca4bc3fe409ac40e5bd3bb132764a14178e39 100644 --- a/module-apps/application-calendar/widgets/TextWithLabelItem.cpp +++ b/module-apps/application-calendar/widgets/TextWithLabelItem.cpp @@ -63,13 +63,10 @@ namespace gui }; onLoadCallback = [&](std::shared_ptr event) { textInput->setText(event->title); }; - } - bool TextWithLabelItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } - } /* namespace gui */ diff --git a/module-apps/application-calendar/widgets/TextWithLabelItem.hpp b/module-apps/application-calendar/widgets/TextWithLabelItem.hpp index 4cfcfdf7549a8714d5a12b41070904e1d5303bc8..a4d6aad91ff51129c07d79bae121fcc09ed5acf4 100644 --- a/module-apps/application-calendar/widgets/TextWithLabelItem.hpp +++ b/module-apps/application-calendar/widgets/TextWithLabelItem.hpp @@ -21,9 +21,6 @@ namespace gui std::function bottomBarRestoreFromTemporaryMode = nullptr, std::function selectSpecialCharacter = nullptr); virtual ~TextWithLabelItem() override = default; - - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-calllog/widgets/CalllogItem.cpp b/module-apps/application-calllog/widgets/CalllogItem.cpp index 5ba5a8b6c22b0730a45d4cdaacfd724e7f9a3150..a7a3cc774b5d21c8d68b32ccdb264b8657e43392 100644 --- a/module-apps/application-calllog/widgets/CalllogItem.cpp +++ b/module-apps/application-calllog/widgets/CalllogItem.cpp @@ -50,14 +50,11 @@ namespace gui timestamp->setEdges(gui::RectangleEdge::None); timestamp->setFont(style::window::font::small); timestamp->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Right, gui::Alignment::Vertical::Center}); - } - - bool CalllogItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void CalllogItem::setCall(std::shared_ptr &call) diff --git a/module-apps/application-calllog/widgets/CalllogItem.hpp b/module-apps/application-calllog/widgets/CalllogItem.hpp index bff1b0eeafa752019c8d25f920f07fce3da657e1..2d94d3252b05dc46583e2a3bd10fbeb3f0b5717d 100644 --- a/module-apps/application-calllog/widgets/CalllogItem.hpp +++ b/module-apps/application-calllog/widgets/CalllogItem.hpp @@ -50,9 +50,6 @@ namespace gui { return call != nullptr ? *call : CalllogRecord(); }; - - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-desktop/widgets/DesktopInputWidget.cpp b/module-apps/application-desktop/widgets/DesktopInputWidget.cpp index ae50619c4f520c8856761c80d0e45020cff2fe8b..7e375920945913ef22863a78281ea81e12a0d59e 100644 --- a/module-apps/application-desktop/widgets/DesktopInputWidget.cpp +++ b/module-apps/application-desktop/widgets/DesktopInputWidget.cpp @@ -75,14 +75,11 @@ namespace gui replyImage->setAlignment(Alignment(gui::Alignment::Vertical::Center)); replyImage->setMargins(Margins(0, 0, 0, 0)); replyImage->activeItem = false; - } - - auto DesktopInputWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool - { - body->setPosition(0, 0); - body->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + body->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } auto DesktopInputWidget::handleRequestResize([[maybe_unused]] const Item *child, diff --git a/module-apps/application-desktop/widgets/DesktopInputWidget.hpp b/module-apps/application-desktop/widgets/DesktopInputWidget.hpp index 6984828c5e3a59c9d0fc54bb4104563484684f93..e2953bc89a48d93c6d3917bb19a0f26f427def24 100644 --- a/module-apps/application-desktop/widgets/DesktopInputWidget.hpp +++ b/module-apps/application-desktop/widgets/DesktopInputWidget.hpp @@ -27,7 +27,6 @@ namespace gui DesktopInputWidget(app::Application *application, Item *parent, uint32_t x, uint32_t y, uint32_t w, uint32_t h); ~DesktopInputWidget() override = default; - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; auto handleRequestResize(const Item *, unsigned short request_w, unsigned short request_h) -> Size override; }; diff --git a/module-apps/application-messages/widgets/SMSInputWidget.cpp b/module-apps/application-messages/widgets/SMSInputWidget.cpp index f4bc7276e33e77fd4e01c96db69609f100a40a6b..418def57689e778684ad25bdec4b6f42ff9e5ae0 100644 --- a/module-apps/application-messages/widgets/SMSInputWidget.cpp +++ b/module-apps/application-messages/widgets/SMSInputWidget.cpp @@ -97,6 +97,11 @@ namespace gui return true; }; + + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + body->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void SMSInputWidget::handleDraftMessage() @@ -151,14 +156,6 @@ namespace gui } } - auto SMSInputWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool - { - body->setPosition(0, 0); - body->setSize(newDim.w, newDim.h); - - return true; - } - auto SMSInputWidget::handleRequestResize([[maybe_unused]] const Item *child, unsigned short request_w, unsigned short request_h) -> Size diff --git a/module-apps/application-messages/widgets/SMSInputWidget.hpp b/module-apps/application-messages/widgets/SMSInputWidget.hpp index 186fa5212059bfe070dd972589df67dd933e35d4..8340e4c8703f97498e9ee2af9b7f9fb5386d3b0b 100644 --- a/module-apps/application-messages/widgets/SMSInputWidget.hpp +++ b/module-apps/application-messages/widgets/SMSInputWidget.hpp @@ -33,7 +33,6 @@ namespace gui void updateDraftMessage(const UTF8 &inputText); void displayDraftMessage() const; - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; auto handleRequestResize(const Item *, unsigned short request_w, unsigned short request_h) -> Size override; }; diff --git a/module-apps/application-messages/widgets/SMSOutputWidget.cpp b/module-apps/application-messages/widgets/SMSOutputWidget.cpp index 2d2c557349c494ebb727843a45c447562d56f592..f3f5af56a28407f23735e0976b1e21a81774b047 100644 --- a/module-apps/application-messages/widgets/SMSOutputWidget.cpp +++ b/module-apps/application-messages/widgets/SMSOutputWidget.cpp @@ -93,6 +93,15 @@ namespace gui } return false; }; + + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + body->setArea({0, 0, newDim.w, newDim.h}); + + // We need to calculate margin between sms and timeLabel and we can do it only after sizes are set. + positionTimeLabel(); + + return true; + }; } void SMSOutputWidget::positionTimeLabel() const @@ -136,17 +145,6 @@ namespace gui body->addWidget(errorIcon); } - auto SMSOutputWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool - { - body->setPosition(0, 0); - body->setSize(newDim.w, newDim.h); - - // We need to calculate margin between sms and timeLabel and we can do it only after sizes are set. - positionTimeLabel(); - - return true; - } - auto SMSOutputWidget::handleRequestResize([[maybe_unused]] const Item *child, unsigned short request_w, unsigned short request_h) -> Size diff --git a/module-apps/application-messages/widgets/SMSOutputWidget.hpp b/module-apps/application-messages/widgets/SMSOutputWidget.hpp index ebce622d2437bbd0d6ff32297cecdb3d6c9dc68c..532b3a68f5a584b5199407215382c5d249d6e60e 100644 --- a/module-apps/application-messages/widgets/SMSOutputWidget.hpp +++ b/module-apps/application-messages/widgets/SMSOutputWidget.hpp @@ -31,7 +31,6 @@ namespace gui SMSOutputWidget(app::Application *application, const std::shared_ptr &record); virtual ~SMSOutputWidget() = default; - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; auto handleRequestResize(const Item *, unsigned short request_w, unsigned short request_h) -> Size override; }; diff --git a/module-apps/application-messages/widgets/SMSTemplateItem.cpp b/module-apps/application-messages/widgets/SMSTemplateItem.cpp index 192a6231d2d78c4d10f7a57caa96a19ca21914cf..e8ea2e7473035b7a29a72f0ea363153d8b405e72 100644 --- a/module-apps/application-messages/widgets/SMSTemplateItem.cpp +++ b/module-apps/application-messages/widgets/SMSTemplateItem.cpp @@ -17,14 +17,11 @@ namespace gui text = new gui::Label(this, 0, 0, 0, 0); style::window::decorateOption(text); text->setEllipsis(gui::Ellipsis::Right); - } - - bool SMSTemplateItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - text->setPosition(0, 0); - text->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + text->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void SMSTemplateItem::setTemplate(std::shared_ptr templ) diff --git a/module-apps/application-messages/widgets/SMSTemplateItem.hpp b/module-apps/application-messages/widgets/SMSTemplateItem.hpp index f431ce87968a38c6b197906151cfaee72f49b2e8..23afbb014c53be8672e79d4b1030026bf7050b20 100644 --- a/module-apps/application-messages/widgets/SMSTemplateItem.hpp +++ b/module-apps/application-messages/widgets/SMSTemplateItem.hpp @@ -25,9 +25,6 @@ namespace gui SMSTemplateItem(); virtual ~SMSTemplateItem() = default; void setTemplate(std::shared_ptr); - - // virtual methods from Item - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; }; } /* namespace gui */ diff --git a/module-apps/application-music-player/widgets/SongItem.cpp b/module-apps/application-music-player/widgets/SongItem.cpp index 4fc48426b06a0cbc53571b02007ad9789f96dbd9..2b5e10760a4e10fc5a188121ef567a1648847886 100644 --- a/module-apps/application-music-player/widgets/SongItem.cpp +++ b/module-apps/application-music-player/widgets/SongItem.cpp @@ -63,14 +63,10 @@ namespace gui authorText->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center)); authorText->setEditMode(EditMode::Browse); authorText->setText(authorName); - } - - auto SongItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } - } /* namespace gui */ diff --git a/module-apps/application-music-player/widgets/SongItem.hpp b/module-apps/application-music-player/widgets/SongItem.hpp index 5cdcf3ea9658eb26f2c409105c06bd061d006e13..e362e33b0019a07fb721facecde36c2c82e31338 100644 --- a/module-apps/application-music-player/widgets/SongItem.hpp +++ b/module-apps/application-music-player/widgets/SongItem.hpp @@ -19,7 +19,6 @@ namespace gui SongItem(std::string authorName, std::string songName, std::string duration); ~SongItem() override = default; - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; VBox *vBox = nullptr; HBox *firstHBox = nullptr; HBox *secondHBox = nullptr; diff --git a/module-apps/application-phonebook/widgets/ContactListItem.hpp b/module-apps/application-phonebook/widgets/ContactListItem.hpp index 836060cc945d606c42392420f67df0a837ff3836..8f892e044d483a9bcf19bbd75ab6428d1234d123 100644 --- a/module-apps/application-phonebook/widgets/ContactListItem.hpp +++ b/module-apps/application-phonebook/widgets/ContactListItem.hpp @@ -7,12 +7,5 @@ namespace gui { - class ContactListItem : public ListItem - { - public: - std::function contact)> onSaveCallback = nullptr; - std::function contact)> onLoadCallback = nullptr; - std::function onEmptyCallback = nullptr; - }; - + using ContactListItem = ListItemWithCallbacks; } /* namespace gui */ diff --git a/module-apps/application-phonebook/widgets/InformationWidget.cpp b/module-apps/application-phonebook/widgets/InformationWidget.cpp index 73ba023de575cb4a23bec1a1f88f53f5372f354b..d8fd02ed3f911e5b711441cfe8708262a5a3f475 100644 --- a/module-apps/application-phonebook/widgets/InformationWidget.cpp +++ b/module-apps/application-phonebook/widgets/InformationWidget.cpp @@ -106,13 +106,11 @@ namespace gui return vBox->onInput(event); }; - setEdges(RectangleEdge::None); - } + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; - auto InformationWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; + setEdges(RectangleEdge::None); } } /* namespace gui */ diff --git a/module-apps/application-phonebook/widgets/InformationWidget.hpp b/module-apps/application-phonebook/widgets/InformationWidget.hpp index d4781afdaca49edee87fd76c9c40055ff58d0325..8d69f0f19861fc0630d8bfb3459b0e31c45b2776 100644 --- a/module-apps/application-phonebook/widgets/InformationWidget.hpp +++ b/module-apps/application-phonebook/widgets/InformationWidget.hpp @@ -19,7 +19,6 @@ namespace gui public: InformationWidget(app::Application *app); ~InformationWidget() override = default; - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; VBox *vBox = nullptr; Label *titleLabel = nullptr; TextWithIconsWidget *primaryNumberHBox = nullptr; diff --git a/module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.cpp b/module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.cpp index b46c79938302861bec91d1fb9ea520466cddaf98..c4007c9d6d199970f213ad3d709be077600d13c6 100644 --- a/module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.cpp +++ b/module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.cpp @@ -66,15 +66,11 @@ namespace gui applyItemNameSpecificSettings(); setEdges(gui::RectangleEdge::None); - } - - auto InputBoxWithLabelAndIconWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - -> bool - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } void InputBoxWithLabelAndIconWidget::applyItemNameSpecificSettings() diff --git a/module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.hpp b/module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.hpp index f6b4efea3fe4219206df2772d77401fb3410fc60..61a55670e57cb4054ef3baa0f5b48b427b13c5a7 100644 --- a/module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.hpp +++ b/module-apps/application-phonebook/widgets/InputBoxWithLabelAndIconWidget.hpp @@ -24,7 +24,6 @@ namespace gui std::function bottomBarTemporaryMode = nullptr, std::function bottomBarRestoreFromTemporaryMode = nullptr); ~InputBoxWithLabelAndIconWidget() override = default; - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; gui::HBox *hBox = nullptr; gui::Label *inputBoxLabel = nullptr; gui::Label *descriptionLabel = nullptr; diff --git a/module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.cpp b/module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.cpp index cbd0415f07d4f3c83c2b248719dd12d3ee4d9fcc..dd334295291481842d4fbf96d492fa181240a361 100644 --- a/module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.cpp +++ b/module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.cpp @@ -80,15 +80,13 @@ namespace gui } return result; }; - setEdges(RectangleEdge::None); - } - auto InputLinesWithLabelIWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; - return true; + setEdges(RectangleEdge::None); } void InputLinesWithLabelIWidget::applyItemNameSpecificSettings() diff --git a/module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.hpp b/module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.hpp index e02575681c453c0350391b71501543c930c11875..f1380a23ed39cf5639569aea871ea6bcf0e5e3eb 100644 --- a/module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.hpp +++ b/module-apps/application-phonebook/widgets/InputLinesWithLabelIWidget.hpp @@ -26,7 +26,6 @@ namespace gui unsigned int lines = 1); ~InputLinesWithLabelIWidget() override = default; - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; VBox *vBox = nullptr; Label *titleLabel = nullptr; TextFixedSize *inputText = nullptr; diff --git a/module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.cpp b/module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.cpp index 586651b313b313fbd4c2cd6c4fc242dfb933c52d..9104733eb04f75516ba7e38d805e6630896a24bc 100644 --- a/module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.cpp +++ b/module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.cpp @@ -46,19 +46,15 @@ namespace gui return true; }; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; + this->activeItem = false; setEdges(RectangleEdge::All); } - auto OutputLinesTextWithLabelWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - -> bool - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - - return true; - } - void OutputLinesTextWithLabelWidget::applyItemNameSpecificSettings() { switch (listItemName) { diff --git a/module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.hpp b/module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.hpp index fea12783abbcc44e77ce9ca5f7610cb50f1bdf73..f42d48ec80dcab03c00d85e675291a262529d814 100644 --- a/module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.hpp +++ b/module-apps/application-phonebook/widgets/OutputLinesTextWithLabelWidget.hpp @@ -20,7 +20,6 @@ namespace gui OutputLinesTextWithLabelWidget(phonebookInternals::ListItemName listItemName); ~OutputLinesTextWithLabelWidget() override = default; - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; VBox *vBox = nullptr; Label *titleLabel = nullptr; Text *multilineText = nullptr; diff --git a/module-apps/application-phonebook/widgets/PhonebookItem.cpp b/module-apps/application-phonebook/widgets/PhonebookItem.cpp index d484ec462e574c032925b91cf701a1133d7382e5..80fd50d842ff3b812b4bba2a871f18677f5215ab 100644 --- a/module-apps/application-phonebook/widgets/PhonebookItem.cpp +++ b/module-apps/application-phonebook/widgets/PhonebookItem.cpp @@ -29,13 +29,11 @@ namespace gui contactName->setAlignment(gui::Alignment{gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center}); contactName->setMinimumHeight(phonebookStyle::contactItem::h); contactName->setMaximumWidth(phonebookStyle::contactItem::w); - } - bool PhonebookItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } // sets copy of alarm's diff --git a/module-apps/application-phonebook/widgets/PhonebookItem.hpp b/module-apps/application-phonebook/widgets/PhonebookItem.hpp index 6103f172c5e3b5cdab9651d533bfcdebbf79fb43..a021848f0217f4400d945984844bcd6725319109 100644 --- a/module-apps/application-phonebook/widgets/PhonebookItem.hpp +++ b/module-apps/application-phonebook/widgets/PhonebookItem.hpp @@ -34,7 +34,6 @@ namespace gui void setMarkerItem(UTF8 text); UTF8 getLabelMarker(); - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; void setLabelMarkerDisplayMode(LabelMarkerDisplayMode mode); }; diff --git a/module-apps/application-settings-new/widgets/ApnInputWidget.cpp b/module-apps/application-settings-new/widgets/ApnInputWidget.cpp index 6da063663b35576cfdb54421dcccf4962488cf8e..1c3f05eab88c9c8d13cf6a30bb3df39f397cf29b 100644 --- a/module-apps/application-settings-new/widgets/ApnInputWidget.cpp +++ b/module-apps/application-settings-new/widgets/ApnInputWidget.cpp @@ -79,15 +79,13 @@ namespace gui } return result; }; - setEdges(RectangleEdge::None); - } - auto ApnInputWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; - return true; + setEdges(RectangleEdge::None); } void ApnInputWidget::applyItemNameSpecificSettings() diff --git a/module-apps/application-settings-new/widgets/ApnInputWidget.hpp b/module-apps/application-settings-new/widgets/ApnInputWidget.hpp index e7f26ec4e0852641583e1ca8483680ad9250c156..824fad5cbb678ded19ad2b54b4a3f82542fefeb4 100644 --- a/module-apps/application-settings-new/widgets/ApnInputWidget.hpp +++ b/module-apps/application-settings-new/widgets/ApnInputWidget.hpp @@ -31,7 +31,6 @@ namespace gui std::function checkTextContent = nullptr; void applyItemNameSpecificSettings(); - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; void nameHandler(); void apnHandler(); void usernameHandler(); diff --git a/module-apps/application-settings-new/widgets/ApnListItem.hpp b/module-apps/application-settings-new/widgets/ApnListItem.hpp index 81ce435589f00c8f442d92b24ba3d6547c149f64..455d19038ee836ac3a158ac9a2069db8dcd8c851 100644 --- a/module-apps/application-settings-new/widgets/ApnListItem.hpp +++ b/module-apps/application-settings-new/widgets/ApnListItem.hpp @@ -7,12 +7,5 @@ namespace gui { - class ApnListItem : public ListItem - { - public: - std::function apnRecord)> onSaveCallback = nullptr; - std::function apnRecord)> onLoadCallback = nullptr; - std::function onEmptyCallback = nullptr; - }; - + using ApnListItem = ListItemWithCallbacks; } /* namespace gui */ diff --git a/module-apps/application-settings-new/widgets/QuoteWidget.cpp b/module-apps/application-settings-new/widgets/QuoteWidget.cpp index 2e4586cd523132095878323ffdd6dba648630b36..9ebdbd4707666d5bb141705534c970673f2970fa 100644 --- a/module-apps/application-settings-new/widgets/QuoteWidget.cpp +++ b/module-apps/application-settings-new/widgets/QuoteWidget.cpp @@ -103,15 +103,11 @@ namespace gui return true; }; - setEdges(gui::RectangleEdge::None); - } - - auto QuoteWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool - { - hBox->setPosition(0, 0); - hBox->setSize(newDim.w, newDim.h); + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + hBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; - return true; + setEdges(gui::RectangleEdge::None); } - } /* namespace gui */ diff --git a/module-apps/application-settings-new/widgets/QuoteWidget.hpp b/module-apps/application-settings-new/widgets/QuoteWidget.hpp index c2ed8eafacb2723aa7bf6bb831e0c8b03262b2c5..59fb37bd3d13d03da6123d7de094fbc2c3097071 100644 --- a/module-apps/application-settings-new/widgets/QuoteWidget.hpp +++ b/module-apps/application-settings-new/widgets/QuoteWidget.hpp @@ -20,8 +20,6 @@ namespace gui std::function bottomBarTemporaryMode = nullptr, std::function bottomBarRestoreFromTemporaryMode = nullptr); - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; - [[nodiscard]] auto getQuoteData() const -> app::QuoteRecord { return quote; diff --git a/module-apps/application-settings/widgets/ColorTestListItem.cpp b/module-apps/application-settings/widgets/ColorTestListItem.cpp index f2defc35ea8d445165f6721541c2db7c6b90d8ad..9e1b48628a24ba0b3305584dada2686eb6c19394 100644 --- a/module-apps/application-settings/widgets/ColorTestListItem.cpp +++ b/module-apps/application-settings/widgets/ColorTestListItem.cpp @@ -31,13 +31,11 @@ namespace gui else { colorLabel->setTextColor(ColorFullWhite); } - } - bool ColorTestListItem::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) - { - vBox->setPosition(0, 0); - vBox->setSize(newDim.w, newDim.h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + vBox->setArea({0, 0, newDim.w, newDim.h}); + return true; + }; } bool ColorTestListItem::onInput(const InputEvent &inputEvent) diff --git a/module-apps/application-settings/widgets/ColorTestListItem.hpp b/module-apps/application-settings/widgets/ColorTestListItem.hpp index a469d097f4b9fc5240ba928154efbd0e918bbf1c..5ab2e6a1fbfcbe7cab8311f02098376e9d329f65 100644 --- a/module-apps/application-settings/widgets/ColorTestListItem.hpp +++ b/module-apps/application-settings/widgets/ColorTestListItem.hpp @@ -25,7 +25,6 @@ namespace gui explicit ColorTestListItem(app::Application *app, const Color color); bool onInput(const InputEvent &inputEvent) override; - bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override; [[nodiscard]] uint8_t getColorIntensity(); }; } /* namespace gui */ diff --git a/module-apps/application-special-input/widgets/SpecialInputTableWidget.cpp b/module-apps/application-special-input/widgets/SpecialInputTableWidget.cpp index c24328a4b8a3a3301136facbb856e6736aed6d2e..412306f78db7b06194bb18f5a4a3a842dec3f917 100644 --- a/module-apps/application-special-input/widgets/SpecialInputTableWidget.cpp +++ b/module-apps/application-special-input/widgets/SpecialInputTableWidget.cpp @@ -61,13 +61,12 @@ namespace gui } return true; }; - } - auto SpecialInputTableWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool - { - box->setPosition(0, 0); - box->setSize(specialCharacterTableWidget::window_grid_w, specialCharacterTableWidget::window_grid_h); - return true; + dimensionChangedCallback = [&](gui::Item &, const BoundingBox &newDim) -> bool { + box->setArea( + {0, 0, specialCharacterTableWidget::window_grid_w, specialCharacterTableWidget::window_grid_h}); + return true; + }; } void SpecialInputTableWidget::decorateActionActivated(Item *it, const std::string &str) diff --git a/module-apps/application-special-input/widgets/SpecialInputTableWidget.hpp b/module-apps/application-special-input/widgets/SpecialInputTableWidget.hpp index fb3f496ea0b2e867bed2498a18b0ebc51e20bf87..09409b79def241e1d0f78579327b31beb7aba7b6 100644 --- a/module-apps/application-special-input/widgets/SpecialInputTableWidget.hpp +++ b/module-apps/application-special-input/widgets/SpecialInputTableWidget.hpp @@ -33,7 +33,6 @@ namespace gui public: SpecialInputTableWidget(app::Application *app, std::list &&carier); - auto onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool override; }; } /* namespace gui */ diff --git a/module-gui/gui/widgets/BoxLayout.cpp b/module-gui/gui/widgets/BoxLayout.cpp index 4387d7f2583222ff1e9b453409de35f88a176893..2034f2c1581ea5b1ca10007a0bfda98947a3f75c 100644 --- a/module-gui/gui/widgets/BoxLayout.cpp +++ b/module-gui/gui/widgets/BoxLayout.cpp @@ -551,6 +551,7 @@ namespace gui { type = ItemType::HBOX; } + HBox::HBox(Item *parent, const uint32_t &x, const uint32_t &y, const uint32_t &w, const uint32_t &h) : BoxLayout(parent, x, y, w, h) { diff --git a/module-gui/gui/widgets/ListItem.hpp b/module-gui/gui/widgets/ListItem.hpp index 0277026a14a875cd6860e3960c52cc7a36d5bb3d..c63ca6281e331895790c477f0c0abc5b97ffe111 100644 --- a/module-gui/gui/widgets/ListItem.hpp +++ b/module-gui/gui/widgets/ListItem.hpp @@ -17,4 +17,12 @@ namespace gui ListItem(); }; + template class ListItemWithCallbacks : public ListItem + { + public: + std::function onEmptyCallback = nullptr; + std::function onContentChangedCallback = nullptr; + std::function contact)> onSaveCallback = nullptr; + std::function contact)> onLoadCallback = nullptr; + }; } /* namespace gui */