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) {
|
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");
|
horizontalBox->setStyleClass("horizontal-box");
|
||||||
auto horizontalContainer = horizontalBox->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
auto horizontalContainer = horizontalBox->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
||||||
horizontalContainer->setContentsMargins(0, 0, 0, 0);
|
horizontalContainer->setContentsMargins(0, 0, 0, 0);
|
||||||
@@ -254,7 +254,7 @@ Wt::WHBoxLayout *App::createActionLayout(Wt::WVBoxLayout *verticalContainer) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void App::createHeadContainer(Wt::WVBoxLayout *layout) {
|
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>("<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"" " +
|
header->addNew<Wt::WText>((std::string)"<script async src=""https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-1104166651501135"" " +
|
||||||
" crossorigin=""anonymous""></script>" +
|
" crossorigin=""anonymous""></script>" +
|
||||||
@@ -272,7 +272,7 @@ void App::createHeadContainer(Wt::WVBoxLayout *layout) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void App::createMenuContainer(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");
|
menuContainer_->setStyleClass("menu");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -438,7 +438,7 @@ void App::updateUserlist(Wt::Json::Array unsortedUserList, int size) {
|
|||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
userListContainer_->setOverflow(Wt::Overflow::Auto, Wt::Orientation::Vertical);
|
userListContainer_->setOverflow(Wt::Overflow::Auto, Wt::Orientation::Vertical);
|
||||||
userListContainer_->setOverflow(Wt::Overflow::Hidden, Wt::Orientation::Horizontal);
|
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);
|
auto sortedUserList = sortUserList(unsortedUserList);
|
||||||
for (Wt::Json::Object &user: sortedUserList) {
|
for (Wt::Json::Object &user: sortedUserList) {
|
||||||
addUserItemToLayout(layout, user);
|
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) {
|
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 {
|
try {
|
||||||
auto infoLayout = infoWidget->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
auto infoLayout = infoWidget->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
||||||
infoWidget->setStyleClass(Wt::WString("user-conversation-info userlist-gender-{1}").arg((std::string)userData["gender"]));
|
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->setToolTip(country);
|
||||||
flag->setStyleClass("flag-icon");
|
flag->setStyleClass("flag-icon");
|
||||||
infoLayout->addWidget(createInfoText(userData), 1);
|
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) {
|
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 inputLayout = inputContainer->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
||||||
auto inputLine = createInputLine(inputLayout);
|
auto inputLine = createInputLine(inputLayout);
|
||||||
inputLine->setFocus();
|
inputLine->setFocus();
|
||||||
@@ -574,7 +575,7 @@ Wt::WLineEdit* App::createInputLine(Wt::WHBoxLayout* inputLayout) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Wt::WImage* App::createSendImageButton(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->setToolTip("Send an image");
|
||||||
sendImageButton->clicked().connect(this, &App::sendImage);
|
sendImageButton->clicked().connect(this, &App::sendImage);
|
||||||
return sendImageButton;
|
return sendImageButton;
|
||||||
@@ -583,14 +584,14 @@ Wt::WImage* App::createSendImageButton(Wt::WHBoxLayout* inputLayout) {
|
|||||||
void App::sendImage() {
|
void App::sendImage() {
|
||||||
auto fileDialog = root()->addNew<Wt::WDialog>("Send Image to User");
|
auto fileDialog = root()->addNew<Wt::WDialog>("Send Image to User");
|
||||||
auto layout = fileDialog->contents()->setLayout(std::make_unique<Wt::WVBoxLayout>());
|
auto layout = fileDialog->contents()->setLayout(std::make_unique<Wt::WVBoxLayout>());
|
||||||
layout->addNew<Wt::WText>("Please select an immage");
|
layout->addWidget(std::make_unique<Wt::WText>("Please select an immage"));
|
||||||
auto fileWidget = layout->addNew<Wt::WFileUpload>();
|
auto fileWidget = layout->addWidget(std::make_unique<Wt::WFileUpload>());
|
||||||
fileWidget->setFilters("image/*");
|
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->setMaximumSize(Wt::WLength(100, Wt::LengthUnit::Pixel), Wt::WLength(100, Wt::LengthUnit::Pixel));
|
||||||
image->setHeight(Wt::WLength::Auto);
|
image->setHeight(Wt::WLength::Auto);
|
||||||
auto localImage = std::make_shared<Magick::Blob>();
|
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");
|
auto okButton = buttonsContainer->addNew<Wt::WPushButton>("Send image");
|
||||||
fileWidget->uploaded().connect([=, this]() mutable {
|
fileWidget->uploaded().connect([=, this]() mutable {
|
||||||
imageUploaded(fileWidget, localImage, image, okButton);
|
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) {
|
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->setContentAlignment(Wt::AlignmentFlag::Justify);
|
||||||
imprintContainer->setPadding(Wt::WLength(0.5, Wt::LengthUnit::FontEm));
|
imprintContainer->setPadding(Wt::WLength(0.5, Wt::LengthUnit::FontEm));
|
||||||
auto partnerPagesButton = imprintContainer->addNew<Wt::WText>("Partners");
|
auto partnerPagesButton = imprintContainer->addNew<Wt::WText>("Partners");
|
||||||
@@ -1208,7 +1209,7 @@ Wt::WVBoxLayout *App::resetSearchFields() {
|
|||||||
contentContainer_->clear();
|
contentContainer_->clear();
|
||||||
inboxOpen_ = false;
|
inboxOpen_ = false;
|
||||||
auto contentLayout = contentContainer_->setLayout(std::make_unique<Wt::WVBoxLayout>());
|
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;
|
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) {
|
void App::addUserItemToLayout(Wt::WVBoxLayout *layout, Wt::Json::Object userObject) {
|
||||||
auto userName = (std::string)userObject["name"];
|
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")));
|
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->setMaximumSize(Wt::WLength(60, Wt::LengthUnit::Pixel), Wt::WLength(20, Wt::LengthUnit::Pixel));
|
||||||
flag->setHeight(Wt::WLength(2, Wt::LengthUnit::FontEm));
|
flag->setHeight(Wt::WLength(2, Wt::LengthUnit::FontEm));
|
||||||
@@ -1578,12 +1579,12 @@ void App::startChat() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void App::createUserListContainer(Wt::WHBoxLayout *layout) {
|
void App::createUserListContainer(Wt::WHBoxLayout *layout) {
|
||||||
userListContainer_ = layout->addNew<Wt::WContainerWidget>();
|
userListContainer_ = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||||
userListContainer_->setStyleClass("userlist");
|
userListContainer_->setStyleClass("userlist");
|
||||||
}
|
}
|
||||||
|
|
||||||
void App::createContentContainer(Wt::WHBoxLayout *layout) {
|
void App::createContentContainer(Wt::WHBoxLayout *layout) {
|
||||||
contentContainer_ = layout->addNew<Wt::WContainerWidget>();
|
contentContainer_ = layout->addWidget(std::make_unique<Wt::WContainerWidget>());
|
||||||
contentContainer_->setStyleClass("content");
|
contentContainer_->setStyleClass("content");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1672,13 +1673,14 @@ bool App::isNickAllowed(const std::string& nick) {
|
|||||||
|
|
||||||
template<class Class>
|
template<class Class>
|
||||||
Class *App::addSearchItemLine(Wt::WVBoxLayout *layout, std::string label, std::unique_ptr<Wt::WContainerWidget> additionalItem) {
|
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->setStyleClass("search-line");
|
||||||
lineContainer->setPositionScheme(Wt::PositionScheme::Relative);
|
lineContainer->setPositionScheme(Wt::PositionScheme::Relative);
|
||||||
auto lineLayout = lineContainer->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
auto lineLayout = lineContainer->setLayout(std::make_unique<Wt::WHBoxLayout>());
|
||||||
lineContainer->setPadding(Wt::WLength("0"));
|
lineContainer->setPadding(Wt::WLength("0"));
|
||||||
lineContainer->setMargin(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->setContentsMargins(0, 0, 0, 0);
|
||||||
lineLayout->setSpacing(0);
|
lineLayout->setSpacing(0);
|
||||||
auto input = std::make_unique<Class>();
|
auto input = std::make_unique<Class>();
|
||||||
|
|||||||
Reference in New Issue
Block a user