From 4aa00894346f8515feeb3c37ff81a03d6a4b186b Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Sun, 16 Nov 2025 14:28:29 +0100 Subject: [PATCH] Refactor widget creation in app.cpp to use std::make_unique for Wt::WContainerWidget and Wt::WText, improving memory management and code clarity. --- src/app.cpp | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/src/app.cpp b/src/app.cpp index 11def03..75a628c 100644 --- a/src/app.cpp +++ b/src/app.cpp @@ -245,7 +245,7 @@ Wt::WVBoxLayout *App::createVerticalLayout() { } Wt::WHBoxLayout *App::createActionLayout(Wt::WVBoxLayout *verticalContainer) { - auto horizontalBox = verticalContainer->addNew(); + auto horizontalBox = verticalContainer->addWidget(std::make_unique()); horizontalBox->setStyleClass("horizontal-box"); auto horizontalContainer = horizontalBox->setLayout(std::make_unique()); horizontalContainer->setContentsMargins(0, 0, 0, 0); @@ -254,7 +254,7 @@ Wt::WHBoxLayout *App::createActionLayout(Wt::WVBoxLayout *verticalContainer) { } void App::createHeadContainer(Wt::WVBoxLayout *layout) { - auto header = layout->addNew(); + auto header = layout->addWidget(std::make_unique()); header->addNew("

ypChat

")->setInline(true); header->addNew((std::string)"" + @@ -272,7 +272,7 @@ void App::createHeadContainer(Wt::WVBoxLayout *layout) { } void App::createMenuContainer(Wt::WVBoxLayout *layout) { - menuContainer_ = layout->addNew(); + menuContainer_ = layout->addWidget(std::make_unique()); menuContainer_->setStyleClass("menu"); } @@ -438,7 +438,7 @@ void App::updateUserlist(Wt::Json::Array unsortedUserList, int size) { layout->setContentsMargins(0, 0, 0, 0); userListContainer_->setOverflow(Wt::Overflow::Auto, Wt::Orientation::Vertical); userListContainer_->setOverflow(Wt::Overflow::Hidden, Wt::Orientation::Horizontal); - layout->addNew(Wt::WString("Logged in: {1}").arg(size)); + layout->addWidget(std::make_unique(Wt::WString("Logged in: {1}").arg(size))); auto sortedUserList = sortUserList(unsortedUserList); for (Wt::Json::Object &user: sortedUserList) { addUserItemToLayout(layout, user); @@ -519,11 +519,12 @@ void App::setupConversationUI(Wt::Json::Object userData) { } Wt::WContainerWidget* App::createInfoWidget(Wt::WVBoxLayout *layout, Wt::Json::Object userData) { - auto infoWidget = layout->addNew(); + auto infoWidget = layout->addWidget(std::make_unique()); try { auto infoLayout = infoWidget->setLayout(std::make_unique()); infoWidget->setStyleClass(Wt::WString("user-conversation-info userlist-gender-{1}").arg((std::string)userData["gender"])); - auto flag = infoLayout->addNew(Wt::WLink(std::make_shared("../docroot/flags/" + (std::string)userData["isoCountryCode"] + ".png"))); + auto flag = infoLayout->addWidget(std::make_unique( + Wt::WLink(std::make_shared("../docroot/flags/" + (std::string)userData["isoCountryCode"] + ".png")))); flag->setToolTip(country); flag->setStyleClass("flag-icon"); infoLayout->addWidget(createInfoText(userData), 1); @@ -549,7 +550,7 @@ std::unique_ptr App::createBlockButton(Wt::Json::Object userDat } Wt::WContainerWidget* App::createInputContainer(Wt::WVBoxLayout* layout) { - auto inputContainer = layout->addNew(); + auto inputContainer = layout->addWidget(std::make_unique()); auto inputLayout = inputContainer->setLayout(std::make_unique()); auto inputLine = createInputLine(inputLayout); inputLine->setFocus(); @@ -574,7 +575,7 @@ Wt::WLineEdit* App::createInputLine(Wt::WHBoxLayout* inputLayout) { } Wt::WImage* App::createSendImageButton(Wt::WHBoxLayout* inputLayout) { - auto sendImageButton = inputLayout->addNew(Wt::WLink("/image.png")); + auto sendImageButton = inputLayout->addWidget(std::make_unique(Wt::WLink("/image.png"))); sendImageButton->setToolTip("Send an image"); sendImageButton->clicked().connect(this, &App::sendImage); return sendImageButton; @@ -583,14 +584,14 @@ Wt::WImage* App::createSendImageButton(Wt::WHBoxLayout* inputLayout) { void App::sendImage() { auto fileDialog = root()->addNew("Send Image to User"); auto layout = fileDialog->contents()->setLayout(std::make_unique()); - layout->addNew("Please select an immage"); - auto fileWidget = layout->addNew(); + layout->addWidget(std::make_unique("Please select an immage")); + auto fileWidget = layout->addWidget(std::make_unique()); fileWidget->setFilters("image/*"); - auto image = layout->addNew(); + auto image = layout->addWidget(std::make_unique()); image->setMaximumSize(Wt::WLength(100, Wt::LengthUnit::Pixel), Wt::WLength(100, Wt::LengthUnit::Pixel)); image->setHeight(Wt::WLength::Auto); auto localImage = std::make_shared(); - auto buttonsContainer = layout->addNew(); + auto buttonsContainer = layout->addWidget(std::make_unique()); auto okButton = buttonsContainer->addNew("Send image"); fileWidget->uploaded().connect([=, this]() mutable { imageUploaded(fileWidget, localImage, image, okButton); @@ -924,7 +925,7 @@ Wt::WWebWidget* App::createTextElement(const std::string& writer, const std::str } void App::createImprintContainer(Wt::WVBoxLayout *containerLayout) { - auto imprintContainer = containerLayout->addNew(); + auto imprintContainer = containerLayout->addWidget(std::make_unique()); imprintContainer->setContentAlignment(Wt::AlignmentFlag::Justify); imprintContainer->setPadding(Wt::WLength(0.5, Wt::LengthUnit::FontEm)); auto partnerPagesButton = imprintContainer->addNew("Partners"); @@ -1208,7 +1209,7 @@ Wt::WVBoxLayout *App::resetSearchFields() { contentContainer_->clear(); inboxOpen_ = false; auto contentLayout = contentContainer_->setLayout(std::make_unique()); - contentLayout->addNew("

Search

"); + contentLayout->addWidget(std::make_unique("

Search

")); return contentLayout; } @@ -1272,7 +1273,7 @@ void App::addItem(const std::string& country, Wt::WContainerWidget *dropDownCont void App::addUserItemToLayout(Wt::WVBoxLayout *layout, Wt::Json::Object userObject) { auto userName = (std::string)userObject["name"]; - auto line = layout->addNew(); + auto line = layout->addWidget(std::make_unique()); auto flag = line->addNew(Wt::WLink(std::make_shared("../docroot/flags/" + (std::string)userObject["isoCountryCode"] + ".png"))); flag->setMaximumSize(Wt::WLength(60, Wt::LengthUnit::Pixel), Wt::WLength(20, Wt::LengthUnit::Pixel)); flag->setHeight(Wt::WLength(2, Wt::LengthUnit::FontEm)); @@ -1578,12 +1579,12 @@ void App::startChat() { } void App::createUserListContainer(Wt::WHBoxLayout *layout) { - userListContainer_ = layout->addNew(); + userListContainer_ = layout->addWidget(std::make_unique()); userListContainer_->setStyleClass("userlist"); } void App::createContentContainer(Wt::WHBoxLayout *layout) { - contentContainer_ = layout->addNew(); + contentContainer_ = layout->addWidget(std::make_unique()); contentContainer_->setStyleClass("content"); } @@ -1672,13 +1673,14 @@ bool App::isNickAllowed(const std::string& nick) { template Class *App::addSearchItemLine(Wt::WVBoxLayout *layout, std::string label, std::unique_ptr additionalItem) { - auto lineContainer = layout->addNew(); + auto lineContainer = layout->addWidget(std::make_unique()); lineContainer->setStyleClass("search-line"); lineContainer->setPositionScheme(Wt::PositionScheme::Relative); auto lineLayout = lineContainer->setLayout(std::make_unique()); lineContainer->setPadding(Wt::WLength("0")); lineContainer->setMargin(Wt::WLength("0")); - lineLayout->addNew(label)->setWidth(Wt::WLength(9, Wt::LengthUnit::FontEm)); + auto labelWidget = lineLayout->addWidget(std::make_unique(label)); + labelWidget->setWidth(Wt::WLength(9, Wt::LengthUnit::FontEm)); lineLayout->setContentsMargins(0, 0, 0, 0); lineLayout->setSpacing(0); auto input = std::make_unique();