Fixed problems with smileys
This commit is contained in:
14
src/app.cpp
14
src/app.cpp
@@ -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");
|
||||||
|
|||||||
@@ -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_;
|
||||||
|
|||||||
Reference in New Issue
Block a user