From 7fc64a03ad6d37bf515d84f190692cc613450839 Mon Sep 17 00:00:00 2001 From: Fabian Schmidt Date: Mon, 2 Feb 2026 20:44:37 +0100 Subject: [PATCH] Create chatroom and message classes to display messages --- client/inc/models/chatroom.h | 16 ++++++++++++++++ client/inc/models/message.h | 17 +++++++++++++++++ client/inc/ui/mainwindow.h | 2 ++ client/src/models/chatroom.cpp | 13 +++++++++++++ client/src/models/message.cpp | 11 +++++++++++ client/src/ui/mainwindow.cpp | 13 +++++++------ 6 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 client/inc/models/chatroom.h create mode 100644 client/inc/models/message.h create mode 100644 client/src/models/chatroom.cpp create mode 100644 client/src/models/message.cpp diff --git a/client/inc/models/chatroom.h b/client/inc/models/chatroom.h new file mode 100644 index 0000000..c04dad3 --- /dev/null +++ b/client/inc/models/chatroom.h @@ -0,0 +1,16 @@ +#pragma once + +#include "models/message.h" +#include +#include +class Chatroom { +public: + Chatroom() {} + ~Chatroom() {} + + void addMessage(Message message); + QString getMessagesString(); + +private: + std::vector m_messages; +}; diff --git a/client/inc/models/message.h b/client/inc/models/message.h new file mode 100644 index 0000000..4178437 --- /dev/null +++ b/client/inc/models/message.h @@ -0,0 +1,17 @@ +#pragma once + +#include +#include + +class Message { +public: + Message(int, QDateTime, QString); + ~Message() {} + + QString toString() const; + +private: + int m_userId; + QDateTime m_timestamp; + QString m_content; +}; diff --git a/client/inc/ui/mainwindow.h b/client/inc/ui/mainwindow.h index c969412..0fb9abf 100644 --- a/client/inc/ui/mainwindow.h +++ b/client/inc/ui/mainwindow.h @@ -1,5 +1,6 @@ #pragma once +#include "models/chatroom.h" #include QT_BEGIN_NAMESPACE @@ -17,6 +18,7 @@ public: private: Ui::MainWindow *ui; + Chatroom m_chatroom; public slots: void receiveMsg(QString &); diff --git a/client/src/models/chatroom.cpp b/client/src/models/chatroom.cpp new file mode 100644 index 0000000..2c39657 --- /dev/null +++ b/client/src/models/chatroom.cpp @@ -0,0 +1,13 @@ +#include "models/chatroom.h" +#include +#include + +void Chatroom::addMessage(Message message) { m_messages.push_back(message); } + +QString Chatroom::getMessagesString() { + std::vector 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"); +} diff --git a/client/src/models/message.cpp b/client/src/models/message.cpp new file mode 100644 index 0000000..7cc01c8 --- /dev/null +++ b/client/src/models/message.cpp @@ -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); +} diff --git a/client/src/ui/mainwindow.cpp b/client/src/ui/mainwindow.cpp index 0d9a107..7debe25 100644 --- a/client/src/ui/mainwindow.cpp +++ b/client/src/ui/mainwindow.cpp @@ -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()); }