2017-06-11 09:31:45 +02:00
|
|
|
#include "messagebuilder.hpp"
|
|
|
|
#include "colorscheme.hpp"
|
|
|
|
#include "emotemanager.hpp"
|
|
|
|
#include "resources.hpp"
|
2017-04-12 17:46:44 +02:00
|
|
|
|
2017-04-14 17:52:22 +02:00
|
|
|
namespace chatterino {
|
|
|
|
namespace messages {
|
2017-04-12 17:46:44 +02:00
|
|
|
|
|
|
|
MessageBuilder::MessageBuilder()
|
2017-09-12 19:06:16 +02:00
|
|
|
: message(new Message)
|
2017-04-12 17:46:44 +02:00
|
|
|
{
|
|
|
|
_parseTime = std::chrono::system_clock::now();
|
|
|
|
}
|
|
|
|
|
2017-09-16 00:05:06 +02:00
|
|
|
SharedMessage MessageBuilder::getMessage()
|
2017-04-12 17:46:44 +02:00
|
|
|
{
|
2017-09-12 19:06:16 +02:00
|
|
|
return this->message;
|
2017-04-12 17:46:44 +02:00
|
|
|
}
|
|
|
|
|
2017-09-12 19:06:16 +02:00
|
|
|
void MessageBuilder::appendWord(const Word &&word)
|
2017-04-12 17:46:44 +02:00
|
|
|
{
|
2017-09-12 19:06:16 +02:00
|
|
|
this->message->getWords().push_back(word);
|
2017-04-12 17:46:44 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void MessageBuilder::appendTimestamp()
|
|
|
|
{
|
2017-09-24 18:43:24 +02:00
|
|
|
std::time_t t;
|
2017-04-12 17:46:44 +02:00
|
|
|
time(&t);
|
2017-09-24 18:43:24 +02:00
|
|
|
this->appendTimestamp(t);
|
2017-04-12 17:46:44 +02:00
|
|
|
}
|
|
|
|
|
2017-09-24 18:43:24 +02:00
|
|
|
void MessageBuilder::setHighlight(bool value)
|
2017-07-31 00:57:42 +02:00
|
|
|
{
|
2017-09-24 18:43:24 +02:00
|
|
|
this->message->setHighlight(value);
|
2017-07-31 00:37:22 +02:00
|
|
|
}
|
|
|
|
|
2017-04-12 17:46:44 +02:00
|
|
|
void MessageBuilder::appendTimestamp(time_t time)
|
|
|
|
{
|
|
|
|
char timeStampBuffer[69];
|
|
|
|
|
2017-06-11 21:01:08 +02:00
|
|
|
// Add word for timestamp with no seconds
|
2017-04-12 17:46:44 +02:00
|
|
|
strftime(timeStampBuffer, 69, "%H:%M", localtime(&time));
|
2017-06-11 21:01:08 +02:00
|
|
|
QString timestampNoSeconds(timeStampBuffer);
|
2017-09-24 18:43:24 +02:00
|
|
|
this->appendWord(Word(timestampNoSeconds, Word::TimestampNoSeconds,
|
|
|
|
MessageColor(MessageColor::System), QString(), QString()));
|
2017-04-12 17:46:44 +02:00
|
|
|
|
2017-06-11 21:01:08 +02:00
|
|
|
// Add word for timestamp with seconds
|
2017-04-12 17:46:44 +02:00
|
|
|
strftime(timeStampBuffer, 69, "%H:%M:%S", localtime(&time));
|
2017-06-11 21:01:08 +02:00
|
|
|
QString timestampWithSeconds(timeStampBuffer);
|
2017-09-24 18:43:24 +02:00
|
|
|
this->appendWord(Word(timestampWithSeconds, Word::TimestampWithSeconds,
|
|
|
|
MessageColor(MessageColor::System), QString(), QString()));
|
2017-04-12 17:46:44 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
QString MessageBuilder::matchLink(const QString &string)
|
|
|
|
{
|
2017-09-12 19:06:16 +02:00
|
|
|
static QRegularExpression linkRegex("[[:ascii:]]*\\.[a-zA-Z]+\\/?[[:ascii:]]*");
|
|
|
|
static QRegularExpression httpRegex("\\bhttps?://");
|
|
|
|
|
2017-08-05 18:44:14 +02:00
|
|
|
auto match = linkRegex.match(string);
|
2017-08-12 12:09:26 +02:00
|
|
|
|
|
|
|
if (!match.hasMatch()) {
|
|
|
|
return QString();
|
|
|
|
}
|
2017-08-05 18:44:14 +02:00
|
|
|
|
2017-07-31 14:23:23 +02:00
|
|
|
QString captured = match.captured();
|
|
|
|
|
2017-09-12 19:06:16 +02:00
|
|
|
if (!captured.contains(httpRegex)) {
|
2017-07-31 14:23:23 +02:00
|
|
|
captured.insert(0, "http://");
|
2017-07-26 12:01:23 +02:00
|
|
|
}
|
2017-09-24 18:43:24 +02:00
|
|
|
|
2017-07-31 14:23:23 +02:00
|
|
|
return captured;
|
2017-04-12 17:46:44 +02:00
|
|
|
}
|
2017-06-11 20:53:43 +02:00
|
|
|
|
|
|
|
} // namespace messages
|
|
|
|
} // namespace chatterino
|