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
|
#pragma once
|
||||||
|
|
||||||
|
#include "models/chatroom.h"
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
@@ -17,6 +18,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::MainWindow *ui;
|
Ui::MainWindow *ui;
|
||||||
|
Chatroom m_chatroom;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void receiveMsg(QString &);
|
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) {
|
: QMainWindow(parent), ui(new Ui::MainWindow) {
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
|
||||||
connect(ui->sendButton, &QPushButton::clicked, this,
|
connect(ui->sendButton, &QPushButton::clicked, this, [this]() {
|
||||||
[]() { qDebug() << "Button clicked"; });
|
auto msg = ui->inputText->toPlainText();
|
||||||
|
receiveMsg(msg);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow() { delete ui; }
|
MainWindow::~MainWindow() { delete ui; }
|
||||||
|
|
||||||
void MainWindow::receiveMsg(QString &msg) {
|
void MainWindow::receiveMsg(QString &msg) {
|
||||||
auto messages = ui->outputText->text();
|
Message message(0, QDateTime::currentDateTime(), msg);
|
||||||
messages.append("\n");
|
m_chatroom.addMessage(message);
|
||||||
messages.append(msg);
|
ui->outputText->setText(m_chatroom.getMessagesString());
|
||||||
ui->outputText->setText(messages);
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user