Create chatroom and message classes to display messages

This commit is contained in:
2026-02-02 20:44:37 +01:00
parent 3b6727a808
commit 7fc64a03ad
6 changed files with 66 additions and 6 deletions

View File

@@ -0,0 +1,13 @@
#include "models/chatroom.h"
#include <QStringList>
#include <algorithm>
void Chatroom::addMessage(Message message) { m_messages.push_back(message); }
QString Chatroom::getMessagesString() {
std::vector<QString> messageStrings(m_messages.size());
std::transform(m_messages.begin(), m_messages.end(), messageStrings.begin(),
[](const Message &msg) { return msg.toString(); });
QStringList messageList(messageStrings.begin(), messageStrings.end());
return messageList.join("\n");
}

View File

@@ -0,0 +1,11 @@
#include "models/message.h"
Message::Message(int userId, QDateTime timestamp, QString content)
: m_userId(userId), m_timestamp(timestamp), m_content(content) {}
QString Message::toString() const {
return QString("(%1)[%2] %3")
.arg(m_userId)
.arg(m_timestamp.toString())
.arg(m_content);
}

View File

@@ -5,15 +5,16 @@ MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow) {
ui->setupUi(this);
connect(ui->sendButton, &QPushButton::clicked, this,
[]() { qDebug() << "Button clicked"; });
connect(ui->sendButton, &QPushButton::clicked, this, [this]() {
auto msg = ui->inputText->toPlainText();
receiveMsg(msg);
});
}
MainWindow::~MainWindow() { delete ui; }
void MainWindow::receiveMsg(QString &msg) {
auto messages = ui->outputText->text();
messages.append("\n");
messages.append(msg);
ui->outputText->setText(messages);
Message message(0, QDateTime::currentDateTime(), msg);
m_chatroom.addMessage(message);
ui->outputText->setText(m_chatroom.getMessagesString());
}