Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 27 additions & 42 deletions src/courtroom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,8 @@ Courtroom::Courtroom(AOApplication *p_ao_app)
log_timestamp = Options::getInstance().logTimestampEnabled();
log_timestamp_format = Options::getInstance().logTimestampFormat();

custom_shownames = Options::getInstance().customShownameEnabled();

ui_debug_log = new AOTextArea(Options::getInstance().maxLogSize(), this);
ui_debug_log->setReadOnly(true);
ui_debug_log->setOpenExternalLinks(true);
Expand Down Expand Up @@ -320,11 +322,6 @@ Courtroom::Courtroom(AOApplication *p_ao_app)
ui_additive->hide();
ui_additive->setObjectName("ui_additive");

ui_showname_enable = new QCheckBox(this);
ui_showname_enable->setChecked(Options::getInstance().customShownameEnabled());
ui_showname_enable->setText(tr("Shownames"));
ui_showname_enable->setObjectName("ui_showname_enable");

ui_slide_enable = new QCheckBox(this);
ui_slide_enable->setChecked(false);
ui_slide_enable->setText(tr("Slide"));
Expand Down Expand Up @@ -507,8 +504,6 @@ Courtroom::Courtroom(AOApplication *p_ao_app)
connect(ui_guard, &AOButton::clicked, this, &Courtroom::focus_ic_input);
connect(ui_slide_enable, &AOButton::clicked, this, &Courtroom::focus_ic_input);

connect(ui_showname_enable, &AOButton::clicked, this, &Courtroom::on_showname_enable_clicked);

connect(ui_pair_button, &AOButton::clicked, this, &Courtroom::on_pair_clicked);
connect(ui_pair_list, &QListWidget::clicked, this, &Courtroom::on_pair_list_clicked);
connect(ui_pair_offset_spinbox, QOverload<int>::of(&QSpinBox::valueChanged), this, &Courtroom::on_pair_offset_changed);
Expand Down Expand Up @@ -750,15 +745,13 @@ void Courtroom::set_widgets()
{
ui_pair_button->show();
ui_immediate->show();
ui_showname_enable->show();
ui_ic_chat_name->show();
ui_ic_chat_name->setEnabled(true);
}
else
{
ui_pair_button->hide();
ui_immediate->hide();
ui_showname_enable->hide();
ui_ic_chat_name->hide();
ui_ic_chat_name->setEnabled(false);
}
Expand Down Expand Up @@ -814,13 +807,15 @@ void Courtroom::set_widgets()

log_maximum_blocks = Options::getInstance().maxLogSize();

bool regenerate = log_goes_downwards != Options::getInstance().logDirectionDownwards() || log_colors != Options::getInstance().colorLogEnabled() || log_newline != Options::getInstance().logNewline() || log_margin != Options::getInstance().logMargin() || log_timestamp != Options::getInstance().logTimestampEnabled() || log_timestamp_format != Options::getInstance().logTimestampFormat();
bool regenerate = log_goes_downwards != Options::getInstance().logDirectionDownwards() || log_colors != Options::getInstance().colorLogEnabled() || log_newline != Options::getInstance().logNewline() || log_margin != Options::getInstance().logMargin() || log_timestamp != Options::getInstance().logTimestampEnabled() || log_timestamp_format != Options::getInstance().logTimestampFormat() || custom_shownames != Options::getInstance().customShownameEnabled();
log_goes_downwards = Options::getInstance().logDirectionDownwards();
log_colors = Options::getInstance().colorLogEnabled();
log_newline = Options::getInstance().logNewline();
log_margin = Options::getInstance().logMargin();
log_timestamp = Options::getInstance().logTimestampEnabled();
log_timestamp_format = Options::getInstance().logTimestampFormat();

custom_shownames = Options::getInstance().customShownameEnabled();
if (regenerate)
{
regenerate_ic_chatlog();
Expand Down Expand Up @@ -1095,9 +1090,6 @@ void Courtroom::set_widgets()
ui_guard->setToolTip(tr("Do not listen to mod calls when checked, preventing them from "
"playing sounds or focusing attention on the window."));

set_size_and_pos(ui_showname_enable, "showname_enable");
ui_showname_enable->setToolTip(tr("Display customized shownames for all users when checked."));

set_size_and_pos(ui_slide_enable, "slide_enable");
ui_slide_enable->setToolTip(tr("Allow your messages to trigger slide animations when checked."));
ui_slide_enable->show();
Expand Down Expand Up @@ -1172,7 +1164,6 @@ void Courtroom::set_widgets()
truncate_label_text(ui_guard, "guard");
truncate_label_text(ui_pre, "pre");
truncate_label_text(ui_flip, "flip");
truncate_label_text(ui_showname_enable, "showname_enable");
truncate_label_text(ui_slide_enable, "slide_enable");

// QLabel
Expand Down Expand Up @@ -2397,7 +2388,7 @@ void Courtroom::chatmessage_enqueue(QStringList p_contents)
if (sender || Options::getInstance().desynchronisedLogsEnabled())
{
// Initialize operation "message queue ghost"
log_chatmessage(p_contents[MESSAGE], p_contents[CHAR_ID].toInt(), p_contents[SHOWNAME], p_contents[CHAR_NAME], p_contents[OBJECTION_MOD], p_contents[EVIDENCE_ID].toInt(), p_contents[TEXT_COLOR].toInt(), QUEUED, sender || Options::getInstance().desynchronisedLogsEnabled());
log_chatmessage(p_contents[MESSAGE], f_char_id, p_contents[SHOWNAME], p_contents[CHAR_NAME], p_contents[OBJECTION_MOD], p_contents[EVIDENCE_ID].toInt(), p_contents[TEXT_COLOR].toInt(), QUEUED, sender || Options::getInstance().desynchronisedLogsEnabled());
}

bool is_objection = false;
Expand All @@ -2414,7 +2405,7 @@ void Courtroom::chatmessage_enqueue(QStringList p_contents)
}
}
// Log the IO file
log_chatmessage(p_contents[MESSAGE], f_char_id, showname, p_contents[CHAR_NAME], p_contents[OBJECTION_MOD], p_contents[EVIDENCE_ID].toInt(), p_contents[TEXT_COLOR].toInt(), log_mode, sender);
log_chatmessage(p_contents[MESSAGE], f_char_id, p_contents[SHOWNAME], p_contents[CHAR_NAME], p_contents[OBJECTION_MOD], p_contents[EVIDENCE_ID].toInt(), p_contents[TEXT_COLOR].toInt(), log_mode, sender);

// Send this boi into the queue
chatmessage_queue.enqueue(p_contents);
Expand Down Expand Up @@ -2482,7 +2473,7 @@ void Courtroom::unpack_chatmessage(QStringList p_contents)
bool sender = Options::getInstance().desynchronisedLogsEnabled() || m_chatmessage[CHAR_ID].toInt() == m_cid;

// We have logs displaying as soon as we reach the message in our queue, which is a less confusing but also less accurate experience for the user.
log_chatmessage(m_chatmessage[MESSAGE], m_chatmessage[CHAR_ID].toInt(), m_chatmessage[SHOWNAME], m_chatmessage[CHAR_NAME], m_chatmessage[OBJECTION_MOD], m_chatmessage[EVIDENCE_ID].toInt(), m_chatmessage[TEXT_COLOR].toInt(), DISPLAY_ONLY, sender);
log_chatmessage(m_chatmessage[MESSAGE], m_chatmessage[CHAR_ID].toInt(), p_contents[SHOWNAME], m_chatmessage[CHAR_NAME], m_chatmessage[OBJECTION_MOD], m_chatmessage[EVIDENCE_ID].toInt(), m_chatmessage[TEXT_COLOR].toInt(), DISPLAY_ONLY, sender);

// Process the callwords for this message
handle_callwords();
Expand Down Expand Up @@ -2597,15 +2588,15 @@ void Courtroom::log_chatmessage(QString f_message, int f_char_id, QString f_show
break;
case DISPLAY_AND_IO:
log_ic_text(f_char, f_displayname, shout_message, tr("shouts"));
append_ic_text(shout_message, f_displayname, tr("shouts"), 0, selfname, QDateTime::currentDateTime(), false);
append_ic_text(shout_message, f_displayname, f_char, tr("shouts"), 0, selfname, QDateTime::currentDateTime(), false);
break;
case DISPLAY_ONLY:
case QUEUED:
if (!ghost && sender)
{
pop_ic_ghost();
}
append_ic_text(shout_message, f_displayname, tr("shouts"), 0, selfname, QDateTime::currentDateTime(), ghost);
append_ic_text(shout_message, f_displayname, f_char, tr("shouts"), 0, selfname, QDateTime::currentDateTime(), ghost);
break;
}
}
Expand All @@ -2619,19 +2610,19 @@ void Courtroom::log_chatmessage(QString f_message, int f_char_id, QString f_show
switch (f_log_mode)
{
case IO_ONLY:
log_ic_text(f_showname, f_displayname, f_evi_name, tr("has presented evidence"), 0, selfname);
log_ic_text(f_char, f_displayname, f_evi_name, tr("has presented evidence"), 0, selfname);
break;
case DISPLAY_AND_IO:
log_ic_text(f_showname, f_displayname, f_evi_name, tr("has presented evidence"));
append_ic_text(f_evi_name, f_displayname, tr("has presented evidence"), 0, selfname, QDateTime::currentDateTime(), false);
log_ic_text(f_char, f_displayname, f_evi_name, tr("has presented evidence"));
append_ic_text(f_evi_name, f_displayname, f_char, tr("has presented evidence"), 0, selfname, QDateTime::currentDateTime(), false);
break;
case DISPLAY_ONLY:
case QUEUED:
if (!ghost && sender)
{
pop_ic_ghost();
}
append_ic_text(f_evi_name, f_displayname, tr("has presented evidence"), 0, selfname, QDateTime::currentDateTime(), ghost);
append_ic_text(f_evi_name, f_displayname, f_char, tr("has presented evidence"), 0, selfname, QDateTime::currentDateTime(), ghost);
break;
}
}
Expand All @@ -2651,19 +2642,19 @@ void Courtroom::log_chatmessage(QString f_message, int f_char_id, QString f_show
switch (f_log_mode)
{
case IO_ONLY:
log_ic_text(f_showname, f_displayname, f_message, "", f_color, selfname);
log_ic_text(f_char, f_displayname, f_message, "", f_color, selfname);
break;
case DISPLAY_AND_IO:
log_ic_text(f_showname, f_displayname, f_message, "", f_color, selfname);
append_ic_text(f_message, f_displayname, "", f_color, selfname, QDateTime::currentDateTime(), false);
log_ic_text(f_char, f_displayname, f_message, "", f_color, selfname);
append_ic_text(f_message, f_displayname, f_char, "", f_color, selfname, QDateTime::currentDateTime(), false);
break;
case DISPLAY_ONLY:
case QUEUED:
if (!ghost && sender)
{
pop_ic_ghost();
}
append_ic_text(f_message, f_displayname, "", f_color, selfname, QDateTime::currentDateTime(), ghost);
append_ic_text(f_message, f_displayname, f_char, "", f_color, selfname, QDateTime::currentDateTime(), ghost);
break;
}
}
Expand Down Expand Up @@ -3261,7 +3252,7 @@ void Courtroom::play_char_sfx(QString sfx_name)
void Courtroom::initialize_chatbox()
{
int f_charid = m_chatmessage[CHAR_ID].toInt();
if (f_charid >= 0 && f_charid < char_list.size() && (m_chatmessage[SHOWNAME].isEmpty() || !ui_showname_enable->isChecked()))
if (f_charid >= 0 && f_charid < char_list.size() && (m_chatmessage[SHOWNAME].isEmpty() || !custom_shownames))
{
QString real_name = char_list.at(f_charid).name;
QString f_showname = ao_app->get_showname(real_name);
Expand Down Expand Up @@ -3790,7 +3781,7 @@ void Courtroom::log_ic_text(QString p_name, QString p_showname, QString p_messag
}
}

void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_action, int color, bool selfname, QDateTime timestamp, bool ghost)
void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_char, QString p_action, int color, bool selfname, QDateTime timestamp, bool ghost)
{
QColor chatlog_color = ao_app->get_color("ic_chatlog_color", "courtroom_fonts.ini");
QTextCharFormat bold;
Expand All @@ -3816,6 +3807,8 @@ void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_action,
const bool need_newline = !ui_ic_chatlog->document()->isEmpty();
const int scrollbar_target_value = log_goes_downwards ? ui_ic_chatlog->verticalScrollBar()->maximum() : ui_ic_chatlog->verticalScrollBar()->minimum();

QString displayname = custom_shownames ? p_name : ao_app->get_showname(p_char);

if (ghost)
{
ghost_blocks++;
Expand All @@ -3826,7 +3819,7 @@ void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_action,
}
else
{
last_ic_message = p_name + ":" + p_text;
last_ic_message = displayname + ":" + p_text;
}

ui_ic_chatlog->moveCursor(log_goes_downwards ? QTextCursor::End : QTextCursor::Start);
Expand Down Expand Up @@ -3863,7 +3856,7 @@ void Courtroom::append_ic_text(QString p_text, QString p_name, QString p_action,

// Format the name of the actor
QTextCharFormat name_format = selfname ? own_name : other_name;
ui_ic_chatlog->textCursor().insertText(p_name, name_format);
ui_ic_chatlog->textCursor().insertText(displayname, name_format);
// Special case for stopping the music
if (p_action == tr("has stopped the music"))
{
Expand Down Expand Up @@ -4756,12 +4749,12 @@ void Courtroom::handle_song(QStringList *p_contents)
if (is_stop)
{
log_ic_text(str_char, str_show, "", tr("has stopped the music"), 0, selfname);
append_ic_text("", str_show, tr("has stopped the music"), 0, selfname);
append_ic_text("", str_show, str_char, tr("has stopped the music"), 0, selfname);
}
else
{
log_ic_text(str_char, str_show, f_song, tr("has played a song"), 0, selfname);
append_ic_text(f_song_clear, str_show, tr("has played a song"), 0, selfname);
append_ic_text(f_song_clear, str_show, str_char, tr("has played a song"), 0, selfname);
}
}
}
Expand Down Expand Up @@ -6503,21 +6496,13 @@ void Courtroom::focus_ic_input()
ui_ic_chat_message->setFocus();
}

void Courtroom::on_showname_enable_clicked()
{
regenerate_ic_chatlog();
focus_ic_input();
}

void Courtroom::regenerate_ic_chatlog()
{
ui_ic_chatlog->clear();
last_ic_message = "";
foreach (ChatLogPiece item, ic_chatlog_history)
{
QString message = item.message;
QString name = ui_showname_enable->isChecked() ? item.character_name : item.character;
append_ic_text(message, name, item.action, item.color, item.local_player, item.timestamp.toLocalTime());
append_ic_text(item.message, item.character_name, item.character, item.action, item.color, item.local_player, item.timestamp.toLocalTime());
}
}

Expand Down
7 changes: 4 additions & 3 deletions src/courtroom.h
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ class Courtroom : public QMainWindow
// this function keeps the chatlog scrolled to the top unless there's text
// selected
// or the user isn't already scrolled to the top
void append_ic_text(QString p_text, QString p_name = QString(), QString action = QString(), int color = 0, bool selfname = false, QDateTime timestamp = QDateTime::currentDateTime(), bool ghost = false);
void append_ic_text(QString p_text, QString p_name = QString(), QString p_char = QString(), QString action = QString(), int color = 0, bool selfname = false, QDateTime timestamp = QDateTime::currentDateTime(), bool ghost = false);

// clear sent messages that appear on the IC log but haven't been delivered
// yet to other players
Expand Down Expand Up @@ -409,6 +409,9 @@ class Courtroom : public QMainWindow
// format string for aforementioned log timestamp
QString log_timestamp_format;

// True, if the log and in-character display should use custom shownames.
bool custom_shownames = true;

// How long in miliseconds should the objection wait before appearing.
int objection_threshold = 1500;

Expand Down Expand Up @@ -939,8 +942,6 @@ private Q_SLOTS:
void focus_ic_input();
void on_additive_clicked();

void on_showname_enable_clicked();

void on_evidence_button_clicked();
void on_evidence_context_menu_requested(const QPoint &pos);

Expand Down
4 changes: 0 additions & 4 deletions src/options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,6 @@ Options::Options()
/*! Migrate old configuration keys/values to a relevant format. */
void Options::migrate()
{
if (config.contains("show_custom_shownames"))
{
config.remove("show_custom_shownames");
}
if (QFile::exists(get_base_path() + "callwords.ini"))
{
migrateCallwords();
Expand Down