Create chatroom and message classes to display messages
This commit is contained in:
16
client/inc/models/chatroom.h
Normal file
16
client/inc/models/chatroom.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "models/message.h"
|
||||
#include <QStringList>
|
||||
#include <vector>
|
||||
class Chatroom {
|
||||
public:
|
||||
Chatroom() {}
|
||||
~Chatroom() {}
|
||||
|
||||
void addMessage(Message message);
|
||||
QString getMessagesString();
|
||||
|
||||
private:
|
||||
std::vector<Message> m_messages;
|
||||
};
|
||||
17
client/inc/models/message.h
Normal file
17
client/inc/models/message.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
#include <QDateTime>
|
||||
#include <QString>
|
||||
|
||||
class Message {
|
||||
public:
|
||||
Message(int, QDateTime, QString);
|
||||
~Message() {}
|
||||
|
||||
QString toString() const;
|
||||
|
||||
private:
|
||||
int m_userId;
|
||||
QDateTime m_timestamp;
|
||||
QString m_content;
|
||||
};
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "models/chatroom.h"
|
||||
#include <QMainWindow>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
@@ -17,6 +18,7 @@ public:
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
Chatroom m_chatroom;
|
||||
|
||||
public slots:
|
||||
void receiveMsg(QString &);
|
||||
|
||||
13
client/src/models/chatroom.cpp
Normal file
13
client/src/models/chatroom.cpp
Normal 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");
|
||||
}
|
||||
11
client/src/models/message.cpp
Normal file
11
client/src/models/message.cpp
Normal 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);
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user