mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-04-21 16:48:58 +02:00
This is adapted from kleidis old PR to Azahar. Changes from it: - Fixed inconsistent button styling in the dialog for connection - Allowed to hide both empty and full rooms. - Proper serving of preferred games - Enables web service for android by default - Better implementation of multiplayer.cpp that works with oop Also fixes the room network class and turns it into a static namespace in network Signed-off-by: Aleksandr Popovich <alekpopo@pm.me> Co-authored-by: swurl <swurl@swurl.xyz> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/125 Co-authored-by: Aleksandr Popovich <alekpopo@pm.me> Co-committed-by: Aleksandr Popovich <alekpopo@pm.me>
82 lines
2 KiB
C++
82 lines
2 KiB
C++
// SPDX-FileCopyrightText: Copyright 2017 Citra Emulator Project
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
#pragma once
|
|
|
|
#include <memory>
|
|
#include <QDialog>
|
|
#include <QSortFilterProxyModel>
|
|
#include <QStandardItemModel>
|
|
#include <QVariant>
|
|
#include "network/network.h"
|
|
#include "yuzu/multiplayer/chat_room.h"
|
|
#include "yuzu/multiplayer/validation.h"
|
|
|
|
namespace Ui {
|
|
class HostRoom;
|
|
}
|
|
|
|
namespace Core {
|
|
class System;
|
|
class AnnounceMultiplayerSession;
|
|
} // namespace Core
|
|
|
|
class ConnectionError;
|
|
class ComboBoxProxyModel;
|
|
|
|
class ChatMessage;
|
|
|
|
namespace Network::VerifyUser {
|
|
class Backend;
|
|
};
|
|
|
|
class HostRoomWindow : public QDialog {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit HostRoomWindow(QWidget* parent, QStandardItemModel* list,
|
|
std::shared_ptr<Core::AnnounceMultiplayerSession> session,
|
|
Core::System& system_);
|
|
~HostRoomWindow();
|
|
|
|
/**
|
|
* Updates the dialog with a new game list model.
|
|
* This model should be the original model of the game list.
|
|
*/
|
|
void UpdateGameList(QStandardItemModel* list);
|
|
void RetranslateUi();
|
|
|
|
signals:
|
|
void SaveConfig();
|
|
|
|
private:
|
|
void Host();
|
|
std::unique_ptr<Network::VerifyUser::Backend> CreateVerifyBackend(bool use_validation) const;
|
|
|
|
std::unique_ptr<Ui::HostRoom> ui;
|
|
std::weak_ptr<Core::AnnounceMultiplayerSession> announce_multiplayer_session;
|
|
QStandardItemModel* game_list;
|
|
ComboBoxProxyModel* proxy;
|
|
Validation validation;
|
|
Core::System& system;
|
|
};
|
|
|
|
/**
|
|
* Proxy Model for the game list combo box so we can reuse the game list model while still
|
|
* displaying the fields slightly differently
|
|
*/
|
|
class ComboBoxProxyModel : public QSortFilterProxyModel {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
int columnCount(const QModelIndex& idx) const override {
|
|
return 1;
|
|
}
|
|
|
|
QVariant data(const QModelIndex& idx, int role) const override;
|
|
|
|
bool lessThan(const QModelIndex& left, const QModelIndex& right) const override;
|
|
};
|