Enhanced output
This commit is contained in:
20
src/app.cpp
20
src/app.cpp
@@ -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> ").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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user