mirror-chatterino2/src/messages/messagebuilder.cpp

75 lines
1.9 KiB
C++
Raw Normal View History

2017-06-11 09:31:45 +02:00
#include "messagebuilder.hpp"
2017-12-31 00:50:07 +01:00
#include "singletons/thememanager.hpp"
#include "singletons/emotemanager.hpp"
2017-06-11 09:31:45 +02:00
#include "resources.hpp"
2017-04-12 17:46:44 +02:00
#include <QDateTime>
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();
}
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()
{
QDateTime t = QDateTime::currentDateTime();
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);
}
void MessageBuilder::appendTimestamp(QDateTime &time)
2017-04-12 17:46:44 +02:00
{
2017-06-11 21:01:08 +02:00
// Add word for timestamp with no seconds
QString timestampNoSeconds(time.toString("hh:mm"));
2017-09-24 18:43:24 +02:00
this->appendWord(Word(timestampNoSeconds, Word::TimestampNoSeconds,
MessageColor(MessageColor::System), FontManager::Medium, QString(),
QString()));
2017-04-12 17:46:44 +02:00
2017-06-11 21:01:08 +02:00
// Add word for timestamp with seconds
QString timestampWithSeconds(time.toString("hh:mm:ss"));
2017-09-24 18:43:24 +02:00
this->appendWord(Word(timestampWithSeconds, Word::TimestampWithSeconds,
MessageColor(MessageColor::System), FontManager::Medium, 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
QString captured = match.captured();
2017-09-12 19:06:16 +02:00
if (!captured.contains(httpRegex)) {
captured.insert(0, "http://");
}
2017-09-24 18:43:24 +02:00
return captured;
2017-04-12 17:46:44 +02:00
}
} // namespace messages
} // namespace chatterino