M module-apps/application-phonebook/models/ContactDetailsModel.cpp => module-apps/application-phonebook/models/ContactDetailsModel.cpp +3 -7
@@ 35,11 35,7 @@ auto ContactDetailsModel::getItem(gui::Order order) -> gui::ListItem *
void ContactDetailsModel::createData(bool showInformationWidget, bool showAddressWidget, bool showNoteWidget)
{
if (showInformationWidget) {
- auto temp = new gui::InformationWidget(application);
-
- temp->setMinimumSize(phonebookStyle::multiLineTextWithLabelItem::w,
- phonebookStyle::multiLineTextWithLabelItem::h * 3);
- internalData.push_back(temp);
+ internalData.push_back(new gui::InformationWidget(application));
}
if (showAddressWidget) {
@@ 68,11 64,11 @@ void ContactDetailsModel::loadData(std::shared_ptr<ContactRecord> contactRecord)
createData(isInformationDataExist(), isAddressDataExist(), isNoteDataExist());
- requestRecords(0, internalData.size());
-
for (auto item : internalData) {
if (item->onLoadCallback) {
item->onLoadCallback(contactRecord);
}
}
+
+ requestRecords(0, internalData.size());
}
M module-apps/application-phonebook/widgets/InformationWidget.cpp => module-apps/application-phonebook/widgets/InformationWidget.cpp +30 -9
@@ 13,6 13,7 @@ namespace gui
setMargins(gui::Margins(0, style::margins::very_big, 0, 0));
setMinimumSize(phonebookStyle::multiLineTextWithLabelItem::w, phonebookStyle::multiLineTextWithLabelItem::h);
+ setMaximumSize(phonebookStyle::multiLineTextWithLabelItem::w, phonebookStyle::multiLineTextWithLabelItem::h);
vBox = new VBox(this, 0, 0, 0, 0);
vBox->setEdges(RectangleEdgeFlags::GUI_RECT_ALL_EDGES);
@@ 21,7 22,7 @@ namespace gui
0,
0,
phonebookStyle::multiLineTextWithLabelItem::w,
- 40,
+ phonebookStyle::multiLineTextWithLabelItem::h,
utils::localize.get("app_phonebook_contact_information"));
titleLabel->setEdges(RectangleEdgeFlags::GUI_RECT_ALL_EDGES);
titleLabel->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Top));
@@ 32,35 33,43 @@ namespace gui
onLoadCallback = [&](std::shared_ptr<ContactRecord> contact) {
if (contact->numbers.size() > 0) {
+ setMinimumHeight(widgetMinimumArea.h + phonebookStyle::multiLineTextWithLabelItem::h);
+
primaryNumberHBox = new NumberWithIconsWidget(app,
contact->numbers[0].number,
nullptr,
0,
0,
- widgetArea.w,
+ phonebookStyle::multiLineTextWithLabelItem::w,
phonebookStyle::multiLineTextWithLabelItem::h);
vBox->addWidget(primaryNumberHBox);
}
- if (contact->numbers.size() > 1) {
+ if (contact->numbers.size() > 0) {
+ setMinimumHeight(widgetMinimumArea.h + phonebookStyle::multiLineTextWithLabelItem::h);
alternativeNumberHBox = new NumberWithIconsWidget(app,
- contact->numbers[1].number,
- this,
+ contact->numbers[0].number,
+ nullptr,
0,
0,
phonebookStyle::multiLineTextWithLabelItem::w,
phonebookStyle::multiLineTextWithLabelItem::h);
+
+ vBox->addWidget(alternativeNumberHBox);
}
if (contact->mail.length() > 0) {
+ setMinimumHeight(widgetMinimumArea.h + phonebookStyle::multiLineTextWithLabelItem::h);
+
emailText = new Text(nullptr, 0, 0, 0, 0);
- emailText->setMaximumSize(widgetArea.w, phonebookStyle::multiLineTextWithLabelItem::h);
- emailText->setEdges(RectangleEdgeFlags::GUI_RECT_ALL_EDGES);
- emailText->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
+ emailText->setMaximumSize(phonebookStyle::multiLineTextWithLabelItem::w,
+ phonebookStyle::multiLineTextWithLabelItem::h);
emailText->setFont(style::window::font::medium);
emailText->setPenFocusWidth(style::window::default_border_focus_w);
emailText->setPenWidth(style::window::default_border_no_focus_w);
emailText->setEditMode(EditMode::BROWSE);
- vBox->addWidget(emailText);
+ emailText->setEdges(RectangleEdgeFlags::GUI_RECT_ALL_EDGES);
+ emailText->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
emailText->setText(contact->mail);
+ vBox->addWidget(emailText);
}
};
@@ 84,8 93,20 @@ namespace gui
auto InformationWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) -> bool
{
+
+ LOG_INFO("Jaki nowy rozmiar %d, %d, %d, %d", newDim.x, newDim.y, newDim.w, newDim.h);
+
vBox->setPosition(0, 0);
vBox->setSize(newDim.w, newDim.h);
+ vBox->resizeItems();
+
+ LOG_INFO("Co do chuja z tym vBoxem %d, %d, %d, %d",
+ vBox->widgetArea.x,
+ vBox->widgetArea.y,
+ vBox->widgetArea.w,
+ vBox->widgetArea.h);
+
+ LOG_INFO("Co do chuja z tym vBoxem rozmiar %lu", vBox->children.size());
return true;
}
M module-apps/application-phonebook/widgets/NumberWithIconsWidget.cpp => module-apps/application-phonebook/widgets/NumberWithIconsWidget.cpp +6 -2
@@ 50,8 50,6 @@ namespace gui
numberText->setPenWidth(style::window::default_border_no_focus_w);
numberText->setEditMode(EditMode::BROWSE);
numberText->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
-
- this->resizeItems();
numberText->setText(number.getFormatted());
inputCallback = [&](gui::Item &item, const gui::InputEvent &event) {
@@ 65,4 63,10 @@ namespace gui
};
}
+ bool NumberWithIconsWidget::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim)
+ {
+ resizeItems();
+ return true;
+ }
+
} /* namespace gui */
M module-apps/application-phonebook/widgets/NumberWithIconsWidget.hpp => module-apps/application-phonebook/widgets/NumberWithIconsWidget.hpp +2 -0
@@ 24,6 24,8 @@ namespace gui
Text *numberText = nullptr;
ImageBox *phoneImage = nullptr;
ImageBox *smsImage = nullptr;
+
+ bool onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim) override;
};
} /* namespace gui */
M module-gui/gui/widgets/ListView.cpp => module-gui/gui/widgets/ListView.cpp +3 -3
@@ 116,13 116,13 @@ namespace gui
void ListView::setProvider(std::shared_ptr<ListItemProvider> prov)
{
- provider = prov;
- if (provider != nullptr) {
+ if (prov != nullptr) {
+ provider = prov;
provider->list = this;
setElementsCount(provider->getItemCount());
provider->requestRecords(0, calculateLimit());
+ refresh();
}
- refresh();
}
std::shared_ptr<ListItemProvider> ListView::getProvider()
M module-gui/gui/widgets/Text.cpp => module-gui/gui/widgets/Text.cpp +20 -19
@@ 224,6 224,7 @@ namespace gui
bool Text::onDimensionChanged(const BoundingBox &oldDim, const BoundingBox &newDim)
{
Rect::onDimensionChanged(oldDim, newDim);
+ drawLines();
return true;
}
@@ 342,25 343,25 @@ namespace gui
// silly case resize - there request space and all is nice
// need to at least erase last line if it wont fit
// should be done on each loop
- {
- uint16_t h_used = line_y_position + padding.bottom;
- uint16_t w_used = lines.maxWidth();
- if (lines.size() == 0) {
- debug_text("No lines to show, try to at least fit in cursor");
- if (font != nullptr) {
- h_used += font->info.line_height;
- w_used += TextCursor::default_width;
- debug_text("epty line height: %d", h_used);
- }
- }
- if (h_used != area(Area::Normal).size(Axis::Y) || w_used != area(Area::Normal).size(Axis::X)) {
- debug_text("size request: %d %d", w_used, h_used);
- auto [w, h] = requestSize(w_used, h_used);
- LOG_INFO("size granted: {%" PRIu32 ", %" PRIu32 "}", w, h);
- // if last wont fit lines.eraseLast();
- // break;
- }
- }
+ // {
+ // uint16_t h_used = line_y_position + padding.bottom;
+ // uint16_t w_used = lines.maxWidth();
+ // if (lines.size() == 0) {
+ // debug_text("No lines to show, try to at least fit in cursor");
+ // if (font != nullptr) {
+ // h_used += font->info.line_height;
+ // w_used += TextCursor::default_width;
+ // debug_text("epty line height: %d", h_used);
+ // }
+ // }
+ // if (h_used != area(Area::Normal).size(Axis::Y) || w_used != area(Area::Normal).size(Axis::X)) {
+ // debug_text("size request: %d %d", w_used, h_used);
+ // auto [w, h] = requestSize(w_used, h_used);
+ // LOG_INFO("size granted: {%" PRIu32 ", %" PRIu32 "}", w, h);
+ // // if last wont fit lines.eraseLast();
+ // // break;
+ // }
+ // }
lines.linesVAlign(sizeMinusPadding(Axis::Y, Area::Normal));