Fixed problems with smileys

This commit is contained in:
Torsten Schulz
2024-02-18 12:05:46 +01:00
parent 38ab762794
commit ee522aa82e
2 changed files with 15 additions and 11 deletions

View File

@@ -3,7 +3,6 @@
#include <string> #include <string>
#include <regex> #include <regex>
#include <iomanip> #include <iomanip>
#include <fstream>
#include <rapidcsv.h> #include <rapidcsv.h>
#include <curl/curl.h> #include <curl/curl.h>
#include <libxml2/libxml/parser.h> #include <libxml2/libxml/parser.h>
@@ -412,9 +411,9 @@ Wt::WContainerWidget* App::createInputContainer(Wt::WVBoxLayout* layout) {
auto inputLine = createInputLine(inputLayout); auto inputLine = createInputLine(inputLayout);
inputLine->setFocus(); inputLine->setFocus();
createSendImageButton(inputLayout); createSendImageButton(inputLayout);
auto cursorPosition = std::make_shared<int>(0); messageCursorPosition_ = std::make_shared<int>(0);
createSmileyButton(inputLayout, inputLine, cursorPosition); createSmileyButton(inputLayout, inputLine, messageCursorPosition_);
createSmileyBar(inputContainer, inputLine, cursorPosition); createSmileyBar(inputContainer, inputLine, messageCursorPosition_);
createSendButton(inputLayout, inputLine); createSendButton(inputLayout, inputLine);
return inputContainer; return inputContainer;
} }
@@ -539,6 +538,7 @@ void App::sendMessage(Wt::WLineEdit *inputLine) {
} }
inputLine->setValueText(""); inputLine->setValueText("");
auto sendString = Wt::WString(utf8String.substr(0, 250)); auto sendString = Wt::WString(utf8String.substr(0, 250));
*messageCursorPosition_ = 0;
server_.addMessage(sessionId(), currentConversationWith_, Broadcast::Message(sessionId(), sendString)); server_.addMessage(sessionId(), currentConversationWith_, Broadcast::Message(sessionId(), sendString));
} }
@@ -762,11 +762,15 @@ std::unique_ptr<Wt::WContainerWidget> App::createSmileysBar(Wt::WLineEdit *input
auto item = smileyBar->addNew<Wt::WText>(code, Wt::TextFormat::UnsafeXHTML); auto item = smileyBar->addNew<Wt::WText>(code, Wt::TextFormat::UnsafeXHTML);
item->setToolTip(smiley.second.tooltip); item->setToolTip(smiley.second.tooltip);
item->clicked().connect([=]() { item->clicked().connect([=]() {
try {
auto currentText = inputLine->text().toUTF8(); auto currentText = inputLine->text().toUTF8();
currentText.insert(*cursorPosition, smiley.first); currentText.insert(*cursorPosition, smiley.first);
inputLine->setText(currentText); inputLine->setText(currentText);
inputLine->setFocus(); inputLine->setFocus();
*cursorPosition += currentText.length() - 1; *cursorPosition += smiley.first.length();
} catch (const std::exception &e) {
std::cout << e.what() << std::endl;
}
}); });
} }
smileyBar->setStyleClass("smiley-bar"); smileyBar->setStyleClass("smiley-bar");

View File

@@ -47,7 +47,7 @@ private:
{";p", Smiley("1F61C", "Twinkle tongue")}, {";p", Smiley("1F61C", "Twinkle tongue")},
{"O)", Smiley("1F607", "Angel")}, {"O)", Smiley("1F607", "Angel")},
{":*", Smiley("1F617", "Kiss")}, {":*", Smiley("1F617", "Kiss")},
{"<3", Smiley("1FA77", "Heart")}, {"(h)", Smiley("1FA77", "Heart")},
{"xD", Smiley("1F602", "Laughing hard")}, {"xD", Smiley("1F602", "Laughing hard")},
{":@", Smiley("1F635", "Confused")}, {":@", Smiley("1F635", "Confused")},
{":O", Smiley("1F632", "Surprised")}, {":O", Smiley("1F632", "Surprised")},
@@ -87,7 +87,7 @@ private:
std::vector<std::string> searchResults_; std::vector<std::string> searchResults_;
std::string currentConversationWith_{""}; std::string currentConversationWith_{""};
bool inboxOpen_{false}; bool inboxOpen_{false};
int messageCursorPosition_{-1}; std::shared_ptr<int> messageCursorPosition_;
std::unique_ptr<Wt::WSound> messageReceived_; std::unique_ptr<Wt::WSound> messageReceived_;
Search searchFields; Search searchFields;
Wt::WTimer *loginTimer_; Wt::WTimer *loginTimer_;