Refactor widget creation in app.cpp to use std::make_unique for Wt::WContainerWidget and Wt::WText, improving memory management and code clarity.
This commit is contained in:
40
src/app.cpp
40
src/app.cpp
@@ -245,7 +245,7 @@ Wt::WVBoxLayout *App::createVerticalLayout() {
|
||||
}
|
||||
|
||||
Wt::WHBoxLayout *App::createActionLayout(Wt::WVBoxLayout *verticalContainer) {
|
||||
auto horizontalBox = verticalContainer->addNew<Wt::WContainerWidget>();
|
||||
auto horizontalBox = verticalContainer->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
horizontalBox->setStyleClass("horizontal-box");
|
||||
auto horizontalContainer = horizontalBox->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
||||
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<Wt::WContainerWidget>();
|
||||
auto header = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
header->addNew<Wt::WText>("<h1>ypChat</h1>")->setInline(true);
|
||||
header->addNew<Wt::WText>((std::string)"<script async src=""https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1104166651501135"" " +
|
||||
" crossorigin=""anonymous""></script>" +
|
||||
@@ -272,7 +272,7 @@ void App::createHeadContainer(Wt::WVBoxLayout *layout) {
|
||||
}
|
||||
|
||||
void App::createMenuContainer(Wt::WVBoxLayout *layout) {
|
||||
menuContainer_ = layout->addNew<Wt::WContainerWidget>();
|
||||
menuContainer_ = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
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::WText>(Wt::WString("Logged in: {1}").arg(size));
|
||||
layout->addWidget(std::make_unique<Wt::WText>(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<Wt::WContainerWidget>();
|
||||
auto infoWidget = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
try {
|
||||
auto infoLayout = infoWidget->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
||||
infoWidget->setStyleClass(Wt::WString("user-conversation-info userlist-gender-{1}").arg((std::string)userData["gender"]));
|
||||
auto flag = infoLayout->addNew<Wt::WImage>(Wt::WLink(std::make_shared<Wt::WFileResource>("../docroot/flags/" + (std::string)userData["isoCountryCode"] + ".png")));
|
||||
auto flag = infoLayout->addWidget(std::make_unique<Wt::WImage>(
|
||||
Wt::WLink(std::make_shared<Wt::WFileResource>("../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<Wt::WPushButton> App::createBlockButton(Wt::Json::Object userDat
|
||||
}
|
||||
|
||||
Wt::WContainerWidget* App::createInputContainer(Wt::WVBoxLayout* layout) {
|
||||
auto inputContainer = layout->addNew<Wt::WContainerWidget>();
|
||||
auto inputContainer = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
auto inputLayout = inputContainer->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
||||
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::WImage>(Wt::WLink("/image.png"));
|
||||
auto sendImageButton = inputLayout->addWidget(std::make_unique<Wt::WImage>(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<Wt::WDialog>("Send Image to User");
|
||||
auto layout = fileDialog->contents()->setLayout(std::make_unique<Wt::WVBoxLayout>());
|
||||
layout->addNew<Wt::WText>("Please select an immage");
|
||||
auto fileWidget = layout->addNew<Wt::WFileUpload>();
|
||||
layout->addWidget(std::make_unique<Wt::WText>("Please select an immage"));
|
||||
auto fileWidget = layout->addWidget(std::make_unique<Wt::WFileUpload>());
|
||||
fileWidget->setFilters("image/*");
|
||||
auto image = layout->addNew<Wt::WImage>();
|
||||
auto image = layout->addWidget(std::make_unique<Wt::WImage>());
|
||||
image->setMaximumSize(Wt::WLength(100, Wt::LengthUnit::Pixel), Wt::WLength(100, Wt::LengthUnit::Pixel));
|
||||
image->setHeight(Wt::WLength::Auto);
|
||||
auto localImage = std::make_shared<Magick::Blob>();
|
||||
auto buttonsContainer = layout->addNew<Wt::WContainerWidget>();
|
||||
auto buttonsContainer = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
auto okButton = buttonsContainer->addNew<Wt::WPushButton>("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<Wt::WContainerWidget>();
|
||||
auto imprintContainer = containerLayout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
imprintContainer->setContentAlignment(Wt::AlignmentFlag::Justify);
|
||||
imprintContainer->setPadding(Wt::WLength(0.5, Wt::LengthUnit::FontEm));
|
||||
auto partnerPagesButton = imprintContainer->addNew<Wt::WText>("Partners");
|
||||
@@ -1208,7 +1209,7 @@ Wt::WVBoxLayout *App::resetSearchFields() {
|
||||
contentContainer_->clear();
|
||||
inboxOpen_ = false;
|
||||
auto contentLayout = contentContainer_->setLayout(std::make_unique<Wt::WVBoxLayout>());
|
||||
contentLayout->addNew<Wt::WText>("<h2>Search</h2>");
|
||||
contentLayout->addWidget(std::make_unique<Wt::WText>("<h2>Search</h2>"));
|
||||
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<Wt::WContainerWidget>();
|
||||
auto line = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
auto flag = line->addNew<Wt::WImage>(Wt::WLink(std::make_shared<Wt::WFileResource>("../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<Wt::WContainerWidget>();
|
||||
userListContainer_ = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
userListContainer_->setStyleClass("userlist");
|
||||
}
|
||||
|
||||
void App::createContentContainer(Wt::WHBoxLayout *layout) {
|
||||
contentContainer_ = layout->addNew<Wt::WContainerWidget>();
|
||||
contentContainer_ = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
contentContainer_->setStyleClass("content");
|
||||
}
|
||||
|
||||
@@ -1672,13 +1673,14 @@ bool App::isNickAllowed(const std::string& nick) {
|
||||
|
||||
template<class Class>
|
||||
Class *App::addSearchItemLine(Wt::WVBoxLayout *layout, std::string label, std::unique_ptr<Wt::WContainerWidget> additionalItem) {
|
||||
auto lineContainer = layout->addNew<Wt::WContainerWidget>();
|
||||
auto lineContainer = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||
lineContainer->setStyleClass("search-line");
|
||||
lineContainer->setPositionScheme(Wt::PositionScheme::Relative);
|
||||
auto lineLayout = lineContainer->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
||||
lineContainer->setPadding(Wt::WLength("0"));
|
||||
lineContainer->setMargin(Wt::WLength("0"));
|
||||
lineLayout->addNew<Wt::WText>(label)->setWidth(Wt::WLength(9, Wt::LengthUnit::FontEm));
|
||||
auto labelWidget = lineLayout->addWidget(std::make_unique<Wt::WText>(label));
|
||||
labelWidget->setWidth(Wt::WLength(9, Wt::LengthUnit::FontEm));
|
||||
lineLayout->setContentsMargins(0, 0, 0, 0);
|
||||
lineLayout->setSpacing(0);
|
||||
auto input = std::make_unique<Class>();
|
||||
|
||||
Reference in New Issue
Block a user