Enhanced output

This commit is contained in:
Torsten Schulz
2024-02-18 12:34:51 +01:00
parent 5a7ddeacf7
commit 48d78d39a8
4 changed files with 29 additions and 8 deletions

View File

@@ -555,7 +555,6 @@ void App::updateOutputContainer(Wt::Json::Object conversation) {
auto containerLayout = (Wt::WVBoxLayout*)contentContainer_->layout();
auto outputLayoutItem = containerLayout->itemAt(1);
auto outputContainer = (Wt::WContainerWidget*)outputLayoutItem->widget();
outputContainer->clear();
outputContainer->setOverflow(Wt::Overflow::Auto);
renderChatLines(conversation, outputContainer);
}
@@ -574,20 +573,28 @@ void App::renderChatLines(Wt::Json::Object conversation, Wt::WContainerWidget* o
void App::renderChatLine(Wt::Json::Object &line, Wt::Json::Object conversation, Wt::WContainerWidget* outputContainer) {
std::string writer = getChatLineWriter(line, conversation);
Wt::WWebWidget* item;
auto id = (std::string)line["id"];
for (const auto widget: outputContainer->children()) {
if (widget->attributeValue("dummy") == id) {
return;
}
}
if ((std::string)line["type"] == "text") {
item = createTextElement(writer, (std::string)line["string"], outputContainer);
item = createTextElement(writer, (std::string)line["string"], outputContainer, id);
} else if ((std::string)line["type"] == "image") {
item = createImageElement(line, writer, outputContainer);
item = createImageElement(line, writer, outputContainer, id);
} else {
item = new Wt::WText("");
}
item->setInline(false);
}
Wt::WWebWidget* App::createTextElement(const std::string& writer, const std::string& text, Wt::WContainerWidget* outputContainer) {
Wt::WWebWidget* App::createTextElement(const std::string& writer, const std::string& text, Wt::WContainerWidget* outputContainer, std::string id) {
std::string outputText = replaceSmileys(text);
Wt::WString output = Wt::WString("<b>{1}</b>: {2}").arg(writer).arg(outputText);
return outputContainer->addNew<Wt::WText>(output);
auto line = outputContainer->addNew<Wt::WText>(output);
line->setAttributeValue("dummy", id);
return line;
}
void App::createImprintContainer(Wt::WVBoxLayout *containerLayout) {
@@ -637,7 +644,7 @@ void App::createImprintContainer(Wt::WVBoxLayout *containerLayout) {
});
}
Wt::WWebWidget* App::createImageElement(Wt::Json::Object& line, const std::string& writer, Wt::WContainerWidget* outputContainer) {
Wt::WWebWidget* App::createImageElement(Wt::Json::Object& line, const std::string& writer, Wt::WContainerWidget* outputContainer, std::string id) {
Wt::Json::Object imageDescription = line["image"];
auto imageLineItem = outputContainer->addNew<Wt::WContainerWidget>();
auto outputText = Wt::WString("<b>{1}:</b>&nbsp;").arg(writer);
@@ -649,6 +656,7 @@ Wt::WWebWidget* App::createImageElement(Wt::Json::Object& line, const std::strin
std::vector<unsigned char>(imageBlob.begin(), imageBlob.end()));
image->setImageLink(Wt::WLink(imageResource));
image->resize(Wt::WLength((int)imageDescription["width"], Wt::LengthUnit::Pixel), Wt::WLength((int)imageDescription["height"], Wt::LengthUnit::Pixel));
imageLineItem->setAttributeValue("dummy", id);
return imageLineItem;
}