1
0
Fork 0

Address review comments

This commit is contained in:
James Rowe 2018-04-09 11:00:56 -06:00
parent 3be7aa2cfc
commit 601fd81d5c
9 changed files with 58 additions and 72 deletions

View File

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

View File

@ -45,7 +45,7 @@ signals:
void ChatReceived(const Network::ChatEntry&);
private:
const u32 max_chat_lines = 1000;
static constexpr u32 max_chat_lines = 1000;
void AppendChatMessage(const QString&);
bool ValidateMessage(const std::string&);
QStandardItemModel* player_list;

View File

@ -19,7 +19,7 @@
#include "network/network.h"
#include "ui_direct_connect.h"
enum class ConnectionType : u8 { TRAVERSAL_SERVER, IP };
enum class ConnectionType : u8 { TraversalServer, IP };
DirectConnectWindow::DirectConnectWindow(QWidget* parent)
: QDialog(parent, Qt::WindowTitleHint | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint),
@ -44,38 +44,30 @@ DirectConnectWindow::DirectConnectWindow(QWidget* parent)
}
void DirectConnectWindow::Connect() {
ClearAllError();
bool isValid = true;
if (!ui->nickname->hasAcceptableInput()) {
isValid = false;
ShowError(NetworkMessage::USERNAME_NOT_VALID);
NetworkMessage::ShowError(NetworkMessage::USERNAME_NOT_VALID);
return;
}
if (const auto member = Network::GetRoomMember().lock()) {
if (member->IsConnected()) {
if (!NetworkMessage::WarnDisconnect()) {
return;
}
if (member->IsConnected() && !NetworkMessage::WarnDisconnect()) {
return;
}
}
switch (static_cast<ConnectionType>(ui->connection_type->currentIndex())) {
case ConnectionType::TRAVERSAL_SERVER:
case ConnectionType::TraversalServer:
break;
case ConnectionType::IP:
if (!ui->ip->hasAcceptableInput()) {
isValid = false;
NetworkMessage::ShowError(NetworkMessage::IP_ADDRESS_NOT_VALID);
return;
}
if (!ui->port->hasAcceptableInput()) {
isValid = false;
NetworkMessage::ShowError(NetworkMessage::PORT_NOT_VALID);
return;
}
break;
}
if (!isValid) {
return;
}
// Store settings
UISettings::values.nickname = ui->nickname->text();
UISettings::values.ip = ui->ip->text();
@ -98,8 +90,6 @@ void DirectConnectWindow::Connect() {
BeginConnecting();
}
void DirectConnectWindow::ClearAllError() {}
void DirectConnectWindow::BeginConnecting() {
ui->connect->setEnabled(false);
ui->connect->setText(tr("Connecting"));

View File

@ -30,7 +30,6 @@ private slots:
private:
void Connect();
void ClearAllError();
void BeginConnecting();
void EndConnecting();

View File

@ -4,10 +4,10 @@
#pragma once
#include <utility>
#include <QPixmap>
#include <QStandardItem>
#include <QStandardItemModel>
#include "common/common_types.h"
namespace Column {
@ -25,7 +25,7 @@ class LobbyItem : public QStandardItem {
public:
LobbyItem() = default;
explicit LobbyItem(const QString& string) : QStandardItem(string) {}
virtual ~LobbyItem() override {}
virtual ~LobbyItem() override = default;
};
class LobbyItemName : public LobbyItem {
@ -62,7 +62,7 @@ public:
static const int GameIconRole = Qt::UserRole + 3;
LobbyItemGame() = default;
explicit LobbyItemGame(u64 title_id, QString game_name, QPixmap smdh_icon) : LobbyItem() {
explicit LobbyItemGame(u64 title_id, QString game_name, QPixmap smdh_icon) {
setData(static_cast<unsigned long long>(title_id), TitleIDRole);
setData(game_name, GameNameRole);
if (!smdh_icon.isNull()) {
@ -97,7 +97,7 @@ public:
static const int HostPortRole = Qt::UserRole + 3;
LobbyItemHost() = default;
explicit LobbyItemHost(QString username, QString ip, u16 port) : LobbyItem() {
explicit LobbyItemHost(QString username, QString ip, u16 port) {
setData(username, HostUsernameRole);
setData(ip, HostIPRole);
setData(port, HostPortRole);
@ -120,13 +120,9 @@ public:
class LobbyMember {
public:
LobbyMember() = default;
LobbyMember(const LobbyMember& other) {
username = other.username;
title_id = other.title_id;
game_name = other.game_name;
}
explicit LobbyMember(const QString username, u64 title_id, const QString game_name)
: username(username), title_id(title_id), game_name(game_name) {}
LobbyMember(const LobbyMember& other) = default;
explicit LobbyMember(QString username, u64 title_id, QString game_name)
: username(std::move(username)), title_id(title_id), game_name(std::move(game_name)) {}
~LobbyMember() = default;
QString GetUsername() const {
@ -153,7 +149,7 @@ public:
static const int MaxPlayerRole = Qt::UserRole + 2;
LobbyItemMemberList() = default;
explicit LobbyItemMemberList(QList<QVariant> members, u32 max_players) : LobbyItem() {
explicit LobbyItemMemberList(QList<QVariant> members, u32 max_players) {
setData(members, MemberListRole);
setData(max_players, MaxPlayerRole);
}
@ -183,7 +179,7 @@ public:
static const int MemberListRole = Qt::UserRole + 1;
LobbyItemExpandedMemberList() = default;
explicit LobbyItemExpandedMemberList(QList<QVariant> members) : LobbyItem() {
explicit LobbyItemExpandedMemberList(QList<QVariant> members) {
setData(members, MemberListRole);
}

View File

@ -4,12 +4,14 @@
#pragma once
#include <utility>
namespace NetworkMessage {
class ConnectionError {
public:
explicit ConnectionError(const std::string& str) : err(str) {}
explicit ConnectionError(std::string str) : err(std::move(str)) {}
const std::string& GetString() const {
return err;
}

View File

@ -104,11 +104,12 @@ void MultiplayerState::OnCreateRoom() {
void MultiplayerState::OnCloseRoom() {
if (auto room = Network::GetRoom().lock()) {
if (room->GetState() == Network::Room::State::Open) {
if (NetworkMessage::WarnCloseRoom()) {
room->Destroy();
announce_multiplayer_session->Stop();
}
if (room->GetState() != Network::Room::State::Open) {
return;
}
if (NetworkMessage::WarnCloseRoom()) {
room->Destroy();
announce_multiplayer_session->Stop();
}
}
}

View File

@ -6,8 +6,6 @@
ClickableLabel::ClickableLabel(QWidget* parent, Qt::WindowFlags f) : QLabel(parent) {}
ClickableLabel::~ClickableLabel() {}
void ClickableLabel::mouseReleaseEvent(QMouseEvent* event) {
emit clicked();
}

View File

@ -6,14 +6,13 @@
#include <QLabel>
#include <QWidget>
#include <Qt>
class ClickableLabel : public QLabel {
Q_OBJECT
public:
explicit ClickableLabel(QWidget* parent = Q_NULLPTR, Qt::WindowFlags f = Qt::WindowFlags());
~ClickableLabel();
explicit ClickableLabel(QWidget* parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags());
~ClickableLabel() = default;
signals:
void clicked();