diff --git a/data/ui/options_dialog.ui b/data/ui/options_dialog.ui
index 882092e..0441867 100644
--- a/data/ui/options_dialog.ui
+++ b/data/ui/options_dialog.ui
@@ -11,7 +11,7 @@
- Qt::NoContextMenu
+ Qt::ContextMenuPolicy::NoContextMenu
Settings
@@ -20,7 +20,7 @@
-
- Qt::NoFocus
+ Qt::FocusPolicy::NoFocus
0
@@ -39,9 +39,9 @@
0
- -385
+ -585
394
- 878
+ 902
@@ -131,10 +131,10 @@
-
- QFrame::HLine
+ QFrame::Shape::HLine
- QFrame::Sunken
+ QFrame::Shadow::Sunken
@@ -198,7 +198,7 @@
Chat Rate Limit:
- Qt::AutoText
+ Qt::TextFormat::AutoText
@@ -215,10 +215,10 @@
-
- QFrame::HLine
+ QFrame::Shape::HLine
- QFrame::Sunken
+ QFrame::Shadow::Sunken
@@ -272,10 +272,10 @@
-
- QFrame::HLine
+ QFrame::Shape::HLine
- QFrame::Sunken
+ QFrame::Shadow::Sunken
@@ -560,23 +560,6 @@
- -
-
-
-
-
-
-
- -
-
-
- If ticked, some windows restore their last known position where they were closed.
-
-
- Restore Window Position
-
-
-
-
@@ -609,6 +592,33 @@
+ -
+
+
+ If ticked, some windows restore their last known position where they were closed.
+
+
+ Restore Window Position
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Playerlist Format:
+
+
+
+ -
+
+
@@ -653,10 +663,10 @@
-
- QFrame::HLine
+ QFrame::Shape::HLine
- QFrame::Sunken
+ QFrame::Shadow::Sunken
@@ -683,10 +693,10 @@
-
- QFrame::HLine
+ QFrame::Shape::HLine
- QFrame::Sunken
+ QFrame::Shadow::Sunken
@@ -819,7 +829,7 @@
-
- Qt::Horizontal
+ Qt::Orientation::Horizontal
@@ -858,10 +868,10 @@
-
- Qt::Horizontal
+ Qt::Orientation::Horizontal
- QSizePolicy::Expanding
+ QSizePolicy::Policy::Expanding
@@ -1116,10 +1126,10 @@ Default: 0.
-
- QFrame::HLine
+ QFrame::Shape::HLine
- QFrame::Sunken
+ QFrame::Shadow::Sunken
diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp
index 2547008..696d35d 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 5c53a5d..a865146 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 f96f994..58b0225 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 2c7b4e2..4ff9dc1 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("theme_scaling_factor_sb", &Options::themeScalingFactor, &Options::setThemeScalingFactor);
registerOption("animated_theme_cb", &Options::animatedThemeEnabled, &Options::setAnimatedThemeEnabled);
@@ -410,6 +410,7 @@ void AOOptionsDialog::setupUI()
registerOption("evidence_double_click_cb", &Options::evidenceDoubleClickEdit, &Options::setEvidenceDoubleClickEdit);
registerOption("slides_cb", &Options::slidesEnabled, &Options::setSlidesEnabled);
registerOption("restoreposition_cb", &Options::restoreWindowPositionEnabled, &Options::setRestoreWindowPositionEnabled);
+ registerOption("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 20c95a3..4409c9e 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 1dabe15..7691378 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 217c9f9..7886e28 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);