diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/aoapplication.cpp | 6 | ||||
| -rw-r--r-- | src/options.cpp | 10 | ||||
| -rw-r--r-- | src/options.h | 3 | ||||
| -rw-r--r-- | src/widgets/aooptionsdialog.cpp | 3 | ||||
| -rw-r--r-- | src/widgets/aooptionsdialog.h | 3 | ||||
| -rw-r--r-- | src/widgets/playerlistwidget.cpp | 18 | ||||
| -rw-r--r-- | src/widgets/playerlistwidget.h | 1 |
7 files changed, 36 insertions, 8 deletions
diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 25470086..696d35db 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -166,6 +166,12 @@ void AOApplication::call_settings_menu() if (is_lobby_constructed()) {} l_dialog->exec(); + + if (is_courtroom_constructed()) + { + w_courtroom->playerList()->reloadPlayers(); + } + delete l_dialog; } diff --git a/src/options.cpp b/src/options.cpp index 5c53a5d7..a865146c 100644 --- a/src/options.cpp +++ b/src/options.cpp @@ -638,6 +638,16 @@ void Options::setCallwords(QStringList value) config.setValue("callwords", value); } +QString Options::playerlistFormatString() const +{ + return config.value("visuals/playerlist_format", "[{id}] {character} {displayname} {username}").toString(); +} + +void Options::setPlayerlistFormatString(QString value) +{ + config.setValue("visuals/playerlist_format", value); +} + void Options::clearConfig() { config.clear(); diff --git a/src/options.h b/src/options.h index f96f994b..58b02253 100644 --- a/src/options.h +++ b/src/options.h @@ -257,6 +257,9 @@ public: QStringList callwords() const; void setCallwords(QStringList value); + QString playerlistFormatString() const; + void setPlayerlistFormatString(QString value); + // Clears the configuration file. Essentially restoring it to default. void clearConfig(); diff --git a/src/widgets/aooptionsdialog.cpp b/src/widgets/aooptionsdialog.cpp index 2c7b4e28..4ff9dc18 100644 --- a/src/widgets/aooptionsdialog.cpp +++ b/src/widgets/aooptionsdialog.cpp @@ -309,7 +309,6 @@ void AOOptionsDialog::setupUI() qWarning() << "Unable to open file " << l_uiFile.fileName(); return; } - ui_settings_widget = l_loader.load(&l_uiFile, this); auto l_layout = new QVBoxLayout(this); @@ -372,6 +371,7 @@ void AOOptionsDialog::setupUI() FROM_UI(QCheckBox, evidence_double_click_cb); FROM_UI(QCheckBox, slides_cb); FROM_UI(QCheckBox, restoreposition_cb); + FROM_UI(QLineEdit, playerlist_format_edit); registerOption<QSpinBox, int>("theme_scaling_factor_sb", &Options::themeScalingFactor, &Options::setThemeScalingFactor); registerOption<QCheckBox, bool>("animated_theme_cb", &Options::animatedThemeEnabled, &Options::setAnimatedThemeEnabled); @@ -410,6 +410,7 @@ void AOOptionsDialog::setupUI() registerOption<QCheckBox, bool>("evidence_double_click_cb", &Options::evidenceDoubleClickEdit, &Options::setEvidenceDoubleClickEdit); registerOption<QCheckBox, bool>("slides_cb", &Options::slidesEnabled, &Options::setSlidesEnabled); registerOption<QCheckBox, bool>("restoreposition_cb", &Options::restoreWindowPositionEnabled, &Options::setRestoreWindowPositionEnabled); + registerOption<QLineEdit, QString>("playerlist_format_edit", &Options::playerlistFormatString, &Options::setPlayerlistFormatString); // Callwords tab. This could just be a QLineEdit, but no, we decided to allow // people to put a billion entries in. diff --git a/src/widgets/aooptionsdialog.h b/src/widgets/aooptionsdialog.h index 20c95a3f..4409c9ef 100644 --- a/src/widgets/aooptionsdialog.h +++ b/src/widgets/aooptionsdialog.h @@ -48,7 +48,6 @@ private: QPushButton *ui_theme_folder_button; QCheckBox *ui_evidence_double_click_cb; QCheckBox *ui_slides_cb; - QCheckBox *ui_restoreposition_cb; QCheckBox *ui_animated_theme_cb; QSpinBox *ui_stay_time_spinbox; QCheckBox *ui_instant_objection_cb; @@ -76,6 +75,8 @@ private: QCheckBox *ui_continuous_cb; QCheckBox *ui_category_stop_cb; QCheckBox *ui_sfx_on_idle_cb; + QCheckBox *ui_restoreposition_cb; + QLineEdit *ui_playerlist_format_edit; // The callwords tab QPlainTextEdit *ui_callwords_textbox; diff --git a/src/widgets/playerlistwidget.cpp b/src/widgets/playerlistwidget.cpp index 1dabe157..76913781 100644 --- a/src/widgets/playerlistwidget.cpp +++ b/src/widgets/playerlistwidget.cpp @@ -70,12 +70,21 @@ void PlayerListWidget::updatePlayer(const PlayerUpdate &update) filterPlayerList(); } +void PlayerListWidget::reloadPlayers() +{ + for (const PlayerData &player : qAsConst(m_player_map)) + { + updatePlayer(player.id, false); + } +} + void PlayerListWidget::setAuthenticated(bool f_state) { m_is_authenticated = f_state; for (const PlayerData &data : qAsConst(m_player_map)) { updatePlayer(data.id, false); + filterPlayerList(); } } @@ -148,7 +157,7 @@ void PlayerListWidget::filterPlayerList() qWarning() << "Trying to filter item that does not exist. This indicates either a broken server-implementation or a bad demo file."; break; } - item->setHidden(m_player_map[item->data(Qt::UserRole).toInt()].area_id != area_id); + item->setHidden(m_player_map[item->data(Qt::UserRole).toInt()].area_id != area_id && !m_is_authenticated); } } @@ -186,9 +195,6 @@ void PlayerListWidget::updatePlayer(int playerId, bool updateIcon) QString PlayerListWidget::formatLabel(const PlayerData &data) { - if (m_is_authenticated) - { - return QString("%1 %2 %3").arg(data.character, data.character_name, data.name).simplified(); - } - return QString("%1 %2").arg(data.character, data.character_name).simplified(); + QString format = Options::getInstance().playerlistFormatString(); + return format.replace("{id}", QString::number(data.id)).replace("{character}", data.character).replace("{displayname}", data.character_name.isEmpty() ? "No Data" : data.character_name).replace("{username}", m_is_authenticated ? data.name : "").simplified(); } diff --git a/src/widgets/playerlistwidget.h b/src/widgets/playerlistwidget.h index 217c9f92..7886e28a 100644 --- a/src/widgets/playerlistwidget.h +++ b/src/widgets/playerlistwidget.h @@ -16,6 +16,7 @@ public: void registerPlayer(const PlayerRegister &update); void updatePlayer(const PlayerUpdate &update); + void reloadPlayers(); void setAuthenticated(bool f_state); |
