|
|
@ -2,6 +2,7 @@
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
// Licensed under GPLv2 or any later version
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
// Refer to the license.txt file included.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <array>
|
|
|
|
#include <future>
|
|
|
|
#include <future>
|
|
|
|
#include <QColor>
|
|
|
|
#include <QColor>
|
|
|
|
#include <QImage>
|
|
|
|
#include <QImage>
|
|
|
@ -10,7 +11,6 @@
|
|
|
|
#include <QMetaType>
|
|
|
|
#include <QMetaType>
|
|
|
|
#include <QTime>
|
|
|
|
#include <QTime>
|
|
|
|
#include <QtConcurrent/QtConcurrentRun>
|
|
|
|
#include <QtConcurrent/QtConcurrentRun>
|
|
|
|
|
|
|
|
|
|
|
|
#include "citra_qt/game_list_p.h"
|
|
|
|
#include "citra_qt/game_list_p.h"
|
|
|
|
#include "citra_qt/multiplayer/chat_room.h"
|
|
|
|
#include "citra_qt/multiplayer/chat_room.h"
|
|
|
|
#include "citra_qt/multiplayer/message.h"
|
|
|
|
#include "citra_qt/multiplayer/message.h"
|
|
|
@ -36,10 +36,10 @@ public:
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
private:
|
|
|
|
ChatMessage() {}
|
|
|
|
static constexpr std::array<const char*, 16> player_color = {
|
|
|
|
const QList<QString> player_color = {
|
|
|
|
|
|
|
|
{"#0000FF", "#FF0000", "#8A2BE2", "#FF69B4", "#1E90FF", "#008000", "#00FF7F", "#B22222",
|
|
|
|
{"#0000FF", "#FF0000", "#8A2BE2", "#FF69B4", "#1E90FF", "#008000", "#00FF7F", "#B22222",
|
|
|
|
"#DAA520", "#FF4500", "#2E8B57", "#5F9EA0", "#D2691E", "#9ACD32", "#FF7F50", "FFFF00"}};
|
|
|
|
"#DAA520", "#FF4500", "#2E8B57", "#5F9EA0", "#D2691E", "#9ACD32", "#FF7F50", "FFFF00"}};
|
|
|
|
|
|
|
|
|
|
|
|
QString timestamp;
|
|
|
|
QString timestamp;
|
|
|
|
QString nickname;
|
|
|
|
QString nickname;
|
|
|
|
QString message;
|
|
|
|
QString message;
|
|
|
@ -49,7 +49,7 @@ class StatusMessage {
|
|
|
|
public:
|
|
|
|
public:
|
|
|
|
explicit StatusMessage(const QString& msg, QTime ts = {}) {
|
|
|
|
explicit StatusMessage(const QString& msg, QTime ts = {}) {
|
|
|
|
/// Convert the time to their default locale defined format
|
|
|
|
/// Convert the time to their default locale defined format
|
|
|
|
static QLocale locale;
|
|
|
|
QLocale locale;
|
|
|
|
timestamp = locale.toString(ts.isValid() ? ts : QTime::currentTime(), QLocale::ShortFormat);
|
|
|
|
timestamp = locale.toString(ts.isValid() ? ts : QTime::currentTime(), QLocale::ShortFormat);
|
|
|
|
message = msg;
|
|
|
|
message = msg;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -65,7 +65,7 @@ private:
|
|
|
|
QString message;
|
|
|
|
QString message;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
ChatRoom::ChatRoom(QWidget* parent) : ui(new Ui::ChatRoom) {
|
|
|
|
ChatRoom::ChatRoom(QWidget* parent) : QWidget(parent), ui(new Ui::ChatRoom) {
|
|
|
|
ui->setupUi(this);
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
|
|
|
|
|
|
// set the item_model for player_view
|
|
|
|
// set the item_model for player_view
|
|
|
@ -159,7 +159,9 @@ void ChatRoom::OnChatReceive(const Network::ChatEntry& chat) {
|
|
|
|
|
|
|
|
|
|
|
|
void ChatRoom::OnSendChat() {
|
|
|
|
void ChatRoom::OnSendChat() {
|
|
|
|
if (auto room = Network::GetRoomMember().lock()) {
|
|
|
|
if (auto room = Network::GetRoomMember().lock()) {
|
|
|
|
if (room->GetState() == Network::RoomMember::State::Joined) {
|
|
|
|
if (room->GetState() != Network::RoomMember::State::Joined) {
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
auto message = ui->chat_message->text().toStdString();
|
|
|
|
auto message = ui->chat_message->text().toStdString();
|
|
|
|
if (!ValidateMessage(message)) {
|
|
|
|
if (!ValidateMessage(message)) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
@ -181,18 +183,17 @@ void ChatRoom::OnSendChat() {
|
|
|
|
AppendChatMessage(m.GetPlayerChatMessage(player));
|
|
|
|
AppendChatMessage(m.GetPlayerChatMessage(player));
|
|
|
|
ui->chat_message->clear();
|
|
|
|
ui->chat_message->clear();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ChatRoom::SetPlayerList(const Network::RoomMember::MemberList& member_list) {
|
|
|
|
void ChatRoom::SetPlayerList(const Network::RoomMember::MemberList& member_list) {
|
|
|
|
// TODO(B3N30): Remember which row is selected
|
|
|
|
// TODO(B3N30): Remember which row is selected
|
|
|
|
player_list->removeRows(0, player_list->rowCount());
|
|
|
|
player_list->removeRows(0, player_list->rowCount());
|
|
|
|
for (const auto& member : member_list) {
|
|
|
|
for (const auto& member : member_list) {
|
|
|
|
if (member.nickname == "")
|
|
|
|
if (member.nickname.empty())
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
QList<QStandardItem*> l;
|
|
|
|
QList<QStandardItem*> l;
|
|
|
|
std::vector<std::string> elements = {member.nickname, member.game_info.name};
|
|
|
|
std::vector<std::string> elements = {member.nickname, member.game_info.name};
|
|
|
|
for (auto& item : elements) {
|
|
|
|
for (const auto& item : elements) {
|
|
|
|
QStandardItem* child = new QStandardItem(QString::fromStdString(item));
|
|
|
|
QStandardItem* child = new QStandardItem(QString::fromStdString(item));
|
|
|
|
child->setEditable(false);
|
|
|
|
child->setEditable(false);
|
|
|
|
l.append(child);
|
|
|
|
l.append(child);
|
|
|
|