// Copyright 2017 Citra Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include #include #include #include #include "citra_qt/multiplayer/chat_room.h" #include "citra_qt/multiplayer/validation.h" #include "network/network.h" namespace Ui { class HostRoom; } namespace Core { class AnnounceMultiplayerSession; } 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 session); ~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(); private: void Host(); std::unique_ptr CreateVerifyBackend(bool use_validation) const; std::unique_ptr ui; std::weak_ptr announce_multiplayer_session; QStandardItemModel* game_list; ComboBoxProxyModel* proxy; Validation validation; }; /** * 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; };