diff options
| -rw-r--r-- | src/yuzu/multiplayer/lobby.cpp | 16 | ||||
| -rw-r--r-- | src/yuzu/multiplayer/lobby.h | 2 | ||||
| -rw-r--r-- | src/yuzu/multiplayer/lobby.ui | 7 | 
3 files changed, 25 insertions, 0 deletions
| diff --git a/src/yuzu/multiplayer/lobby.cpp b/src/yuzu/multiplayer/lobby.cpp index 08c275696..6c93e3511 100644 --- a/src/yuzu/multiplayer/lobby.cpp +++ b/src/yuzu/multiplayer/lobby.cpp @@ -77,6 +77,7 @@ Lobby::Lobby(QWidget* parent, QStandardItemModel* list,      // UI Buttons      connect(ui->refresh_list, &QPushButton::clicked, this, &Lobby::RefreshLobby);      connect(ui->games_owned, &QCheckBox::toggled, proxy, &LobbyFilterProxyModel::SetFilterOwned); +    connect(ui->hide_empty, &QCheckBox::toggled, proxy, &LobbyFilterProxyModel::SetFilterEmpty);      connect(ui->hide_full, &QCheckBox::toggled, proxy, &LobbyFilterProxyModel::SetFilterFull);      connect(ui->search, &QLineEdit::textChanged, proxy, &LobbyFilterProxyModel::SetFilterSearch);      connect(ui->room_list, &QTreeView::doubleClicked, this, &Lobby::OnJoinRoom); @@ -329,6 +330,16 @@ bool LobbyFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex& s          return true;      } +    // filter by empty rooms +    if (filter_empty) { +        QModelIndex member_list = sourceModel()->index(sourceRow, Column::MEMBER, sourceParent); +        int player_count = +            sourceModel()->data(member_list, LobbyItemMemberList::MemberListRole).toList().size(); +        if (player_count == 0) { +            return false; +        } +    } +      // filter by filled rooms      if (filter_full) {          QModelIndex member_list = sourceModel()->index(sourceRow, Column::MEMBER, sourceParent); @@ -399,6 +410,11 @@ void LobbyFilterProxyModel::SetFilterOwned(bool filter) {      invalidate();  } +void LobbyFilterProxyModel::SetFilterEmpty(bool filter) { +    filter_empty = filter; +    invalidate(); +} +  void LobbyFilterProxyModel::SetFilterFull(bool filter) {      filter_full = filter;      invalidate(); diff --git a/src/yuzu/multiplayer/lobby.h b/src/yuzu/multiplayer/lobby.h index 300dad13e..2674ae7c3 100644 --- a/src/yuzu/multiplayer/lobby.h +++ b/src/yuzu/multiplayer/lobby.h @@ -130,12 +130,14 @@ public:  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;  }; diff --git a/src/yuzu/multiplayer/lobby.ui b/src/yuzu/multiplayer/lobby.ui index 4c9901c9a..0ef0ef762 100644 --- a/src/yuzu/multiplayer/lobby.ui +++ b/src/yuzu/multiplayer/lobby.ui @@ -78,6 +78,13 @@            </widget>           </item>           <item> +          <widget class="QCheckBox" name="hide_empty"> +           <property name="text"> +            <string>Hide Empty Rooms</string> +           </property> +          </widget> +         </item> +         <item>            <widget class="QCheckBox" name="hide_full">             <property name="text">              <string>Hide Full Rooms</string> | 
