From 4d0fbc1a873c04c82189cc639b91a67e930da7c2 Mon Sep 17 00:00:00 2001 From: Nayla Hanegan Date: Mon, 16 Dec 2024 01:46:54 -0500 Subject: [PATCH] fix browser --- .../Core/DolphinQt/NetPlay/NetPlayBrowser.cpp | 79 ++++++++++++++++--- .../DolphinQt/NetPlay/NetPlaySetupDialog.cpp | 2 +- 2 files changed, 69 insertions(+), 12 deletions(-) diff --git a/Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp b/Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp index 67454e9c9e..835c4837b9 100644 --- a/Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp +++ b/Source/Core/DolphinQt/NetPlay/NetPlayBrowser.cpp @@ -64,7 +64,61 @@ void NetPlayBrowser::CreateWidgets() { auto* layout = new QVBoxLayout; + m_table_widget = new QTableWidget; + m_table_widget->setTabKeyNavigation(false); + + m_table_widget->setSelectionBehavior(QAbstractItemView::SelectRows); + m_table_widget->setSelectionMode(QAbstractItemView::SingleSelection); + m_table_widget->setWordWrap(false); + + m_region_combo = new QComboBox; + + m_region_combo->addItem(tr("Any Region")); + + for (const auto& region : NetPlayIndex::GetRegions()) + { + m_region_combo->addItem( + tr("%1 (%2)").arg(tr(region.second.c_str())).arg(QString::fromStdString(region.first)), + QString::fromStdString(region.first)); + } + + m_region_combo->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + + m_status_label = new QLabel; + m_button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); + m_button_refresh = new NonDefaultQPushButton(tr("Refresh")); + m_edit_name = new QLineEdit; + m_edit_game_id = new QLineEdit; + m_check_hide_incompatible = new QCheckBox(tr("Hide Incompatible Sessions")); + m_check_hide_ingame = new QCheckBox(tr("Hide In-Game Sessions")); + + m_check_hide_incompatible->setChecked(true); + + m_radio_all = new QRadioButton(tr("Private and Public")); + m_radio_private = new QRadioButton(tr("Private")); + m_radio_public = new QRadioButton(tr("Public")); + + m_radio_all->setChecked(true); + + auto* filter_box = new QGroupBox(tr("Filters")); + auto* filter_layout = new QGridLayout; + filter_box->setLayout(filter_layout); + + filter_layout->addWidget(new QLabel(tr("Region:")), 0, 0); + filter_layout->addWidget(m_region_combo, 0, 1, 1, -1); + filter_layout->addWidget(new QLabel(tr("Name:")), 1, 0); + filter_layout->addWidget(m_edit_name, 1, 1, 1, -1); + filter_layout->addWidget(new QLabel(tr("Game ID:")), 2, 0); + filter_layout->addWidget(m_edit_game_id, 2, 1, 1, -1); + filter_layout->addWidget(m_radio_all, 3, 1); + filter_layout->addWidget(m_radio_public, 3, 2); + filter_layout->addWidget(m_radio_private, 3, 3); + filter_layout->addItem(new QSpacerItem(4, 1, QSizePolicy::Expanding), 3, 4); + filter_layout->addWidget(m_check_hide_incompatible, 4, 1, 1, -1); + filter_layout->addWidget(m_check_hide_ingame, 5, 1, 1, -1); + layout->addWidget(m_table_widget); + layout->addWidget(filter_box); layout->addWidget(m_status_label); layout->addWidget(m_button_box); @@ -166,7 +220,7 @@ void NetPlayBrowser::UpdateList() m_table_widget->clear(); m_table_widget->setColumnCount(7); - m_table_widget->setHorizontalHeaderLabels({tr("Name"), tr("Password?"), + m_table_widget->setHorizontalHeaderLabels({tr("Region"), tr("Name"), tr("Password?"), tr("In-Game?"), tr("Game"), tr("Players"), tr("Version")}); @@ -185,20 +239,26 @@ void NetPlayBrowser::UpdateList() { const auto& entry = m_sessions[i]; + auto* region = new QTableWidgetItem(QString::fromStdString(entry.region)); auto* name = new QTableWidgetItem(QString::fromStdString(entry.name)); + auto* password = new QTableWidgetItem(entry.has_password ? tr("Yes") : tr("No")); auto* in_game = new QTableWidgetItem(entry.in_game ? tr("Yes") : tr("No")); auto* game_id = new QTableWidgetItem(QString::fromStdString(entry.game_id)); auto* player_count = new QTableWidgetItem(QStringLiteral("%1").arg(entry.player_count)); + auto* version = new QTableWidgetItem(QString::fromStdString(entry.version)); - const bool enabled = Common::GetScmDescStr() == entry.version; + const bool enabled = true; - for (const auto& item : {name, in_game, game_id, player_count}) + for (const auto& item : {region, name, password, in_game, game_id, player_count, version}) item->setFlags(enabled ? Qt::ItemIsEnabled | Qt::ItemIsSelectable : Qt::NoItemFlags); + m_table_widget->setItem(i, 0, region); m_table_widget->setItem(i, 1, name); - m_table_widget->setItem(i, 2, in_game); - m_table_widget->setItem(i, 3, game_id); - m_table_widget->setItem(i, 4, player_count); + m_table_widget->setItem(i, 2, password); + m_table_widget->setItem(i, 3, in_game); + m_table_widget->setItem(i, 4, game_id); + m_table_widget->setItem(i, 5, player_count); + m_table_widget->setItem(i, 6, version); } m_status_label->setText( @@ -318,11 +378,8 @@ void NetPlayBrowser::RestoreSettings() else if (visibility == QStringLiteral("private")) m_radio_private->setChecked(true); - m_check_hide_incompatible->setChecked(true); - m_check_hide_ingame->setChecked(true); - - /* m_check_hide_incompatible->setChecked( + m_check_hide_incompatible->setChecked( settings.value(QStringLiteral("netplaybrowser/hide_incompatible"), true).toBool()); m_check_hide_ingame->setChecked( - settings.value(QStringLiteral("netplaybrowser/hide_ingame")).toBool());*/ + settings.value(QStringLiteral("netplaybrowser/hide_ingame")).toBool()); } diff --git a/Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp b/Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp index 9a1601cc4b..8c896c9048 100644 --- a/Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp +++ b/Source/Core/DolphinQt/NetPlay/NetPlaySetupDialog.cpp @@ -605,5 +605,5 @@ void NetPlaySetupDialog::acceptBrowser() else Config::SetBaseOrCurrent(Config::NETPLAY_ADDRESS, server_id); - emit JoinBrowser(); + emit Join(); }