mirror-chatterino2/src/messages/messagebuilder.cpp

73 lines
1.9 KiB
C++
Raw Normal View History

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()
: _words()
{
_parseTime = std::chrono::system_clock::now();
2017-07-31 22:26:48 +02:00
regex.setPattern("[[:ascii:]]*\.[A-Z]+\\/?[[:ascii:]]*");
2017-07-26 09:08:19 +02:00
regex.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
2017-04-12 17:46:44 +02:00
}
SharedMessage MessageBuilder::build()
{
2017-07-31 00:57:42 +02:00
return SharedMessage(new Message(this->originalMessage, _words, highlight));
2017-04-12 17:46:44 +02:00
}
void MessageBuilder::appendWord(const Word &word)
{
_words.push_back(word);
}
void MessageBuilder::appendTimestamp()
{
time_t t;
time(&t);
appendTimestamp(t);
}
2017-07-31 00:57:42 +02:00
void MessageBuilder::setHighlight(const bool &value)
{
highlight = value;
}
2017-04-12 17:46:44 +02:00
void MessageBuilder::appendTimestamp(time_t time)
{
char timeStampBuffer[69];
// TODO(pajlada): Fix this
QColor systemMessageColor(140, 127, 127);
// QColor &systemMessageColor = ColorScheme::getInstance().SystemMessageColor;
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);
appendWord(Word(timestampNoSeconds, Word::TimestampNoSeconds, systemMessageColor, 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);
appendWord(Word(timestampWithSeconds, Word::TimestampWithSeconds, systemMessageColor, QString(),
QString()));
2017-04-12 17:46:44 +02:00
}
QString MessageBuilder::matchLink(const QString &string)
{
auto match = regex.match(string);
QString captured = match.captured();
if (!captured.contains(QRegularExpression("\\bhttps?:\/\/")) && match.hasMatch()) {
captured.insert(0, "http://");
}
return captured;
2017-04-12 17:46:44 +02:00
}
} // namespace messages
} // namespace chatterino