| | |
| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <memory> |
| | #include <QDialog> |
| | #include <QFutureWatcher> |
| | #include <QSortFilterProxyModel> |
| | #include <QStandardItemModel> |
| | #include "citra_qt/multiplayer/validation.h" |
| | #include "common/announce_multiplayer_room.h" |
| | #include "network/announce_multiplayer_session.h" |
| | #include "network/room_member.h" |
| |
|
| | namespace Ui { |
| | class Lobby; |
| | } |
| |
|
| | namespace Core { |
| | class System; |
| | } |
| |
|
| | class LobbyModel; |
| | class LobbyFilterProxyModel; |
| |
|
| | |
| | |
| | |
| | |
| | class Lobby : public QDialog { |
| | Q_OBJECT |
| |
|
| | public: |
| | explicit Lobby(Core::System& system, QWidget* parent, QStandardItemModel* list, |
| | std::shared_ptr<Network::AnnounceMultiplayerSession> session); |
| | ~Lobby() override; |
| |
|
| | |
| | |
| | |
| | |
| | void UpdateGameList(QStandardItemModel* list); |
| | void RetranslateUi(); |
| |
|
| | public slots: |
| | |
| | |
| | |
| | |
| | void RefreshLobby(); |
| |
|
| | private slots: |
| | |
| | |
| | |
| | void OnRefreshLobby(); |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | void OnExpandRoom(const QModelIndex&); |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | void OnJoinRoom(const QModelIndex&); |
| |
|
| | signals: |
| | void StateChanged(const Network::RoomMember::State&); |
| |
|
| | private: |
| | |
| | |
| | |
| | void ResetModel(); |
| |
|
| | |
| | |
| | |
| | |
| | QString PasswordPrompt(); |
| |
|
| | private: |
| | std::unique_ptr<Ui::Lobby> ui; |
| | Core::System& system; |
| |
|
| | QStandardItemModel* model{}; |
| | QStandardItemModel* game_list{}; |
| | LobbyFilterProxyModel* proxy{}; |
| |
|
| | QFutureWatcher<AnnounceMultiplayerRoom::RoomList> room_list_watcher; |
| | std::weak_ptr<Network::AnnounceMultiplayerSession> announce_multiplayer_session; |
| | QFutureWatcher<void>* watcher; |
| | Validation validation; |
| | }; |
| |
|
| | |
| | |
| | |
| | class LobbyFilterProxyModel : public QSortFilterProxyModel { |
| | Q_OBJECT; |
| |
|
| | public: |
| | explicit LobbyFilterProxyModel(QWidget* parent, QStandardItemModel* list); |
| |
|
| | |
| | |
| | |
| | |
| | void UpdateGameList(QStandardItemModel* list); |
| |
|
| | bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const override; |
| | void sort(int column, Qt::SortOrder order) override; |
| |
|
| | public slots: |
| | void SetFilterOwned(bool); |
| | void SetFilterEmpty(bool); |
| | void SetFilterFull(bool); |
| | void SetFilterSearch(const QString&); |
| |
|
| | private: |
| | QStandardItemModel* game_list; |
| | bool filter_owned = false; |
| | bool filter_empty = false; |
| | bool filter_full = false; |
| | QString filter_search; |
| | }; |
| |
|