aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/aoapplication.h3
-rw-r--r--include/aooptionsdialog.h2
-rw-r--r--include/courtroom.h2
-rw-r--r--src/aooptionsdialog.cpp14
-rw-r--r--src/evidence.cpp102
-rw-r--r--src/text_file_functions.cpp6
6 files changed, 79 insertions, 50 deletions
diff --git a/include/aoapplication.h b/include/aoapplication.h
index d9b9e89f..c69a0d31 100644
--- a/include/aoapplication.h
+++ b/include/aoapplication.h
@@ -538,6 +538,9 @@ public:
// Get whether to opt out of player count metrics sent to the master server
bool get_player_count_optout();
+ // Whether opening evidence requires a single or double click
+ bool get_evidence_double_click();
+
// Currently defined subtheme
QString subtheme;
diff --git a/include/aooptionsdialog.h b/include/aooptionsdialog.h
index cb9b71b0..a5b1e4da 100644
--- a/include/aooptionsdialog.h
+++ b/include/aooptionsdialog.h
@@ -51,6 +51,8 @@ private:
QLabel *ui_subtheme_label;
QComboBox *ui_subtheme_combobox;
QPushButton *ui_theme_reload_button;
+ QLabel *ui_evidence_double_click_lbl;
+ QCheckBox *ui_evidence_double_click_cb;
QLabel *ui_animated_theme_lbl;
QCheckBox *ui_animated_theme_cb;
QFrame *ui_theme_log_divider;
diff --git a/include/courtroom.h b/include/courtroom.h
index 0c53c959..88e60376 100644
--- a/include/courtroom.h
+++ b/include/courtroom.h
@@ -974,7 +974,7 @@ private slots:
void on_evidence_button_clicked();
void on_evidence_delete_clicked();
- void on_evidence_x_clicked();
+ bool on_evidence_x_clicked();
void on_evidence_ok_clicked();
void on_evidence_switch_clicked();
void on_evidence_transfer_clicked();
diff --git a/src/aooptionsdialog.cpp b/src/aooptionsdialog.cpp
index 18e2f716..4bb15cb5 100644
--- a/src/aooptionsdialog.cpp
+++ b/src/aooptionsdialog.cpp
@@ -465,6 +465,18 @@ AOOptionsDialog::AOOptionsDialog(QWidget *parent, AOApplication *p_ao_app)
ui_gameplay_form->setWidget(row, QFormLayout::FieldRole, ui_category_stop_cb);
+ row += 1;
+ ui_evidence_double_click_lbl = new QLabel(ui_form_layout_widget);
+ ui_evidence_double_click_lbl->setText(tr("Evidence Double Click:"));
+ ui_evidence_double_click_lbl->setToolTip(
+ tr("If ticked, Evidence needs a double-click to view rather than a single click."));
+
+ ui_gameplay_form->setWidget(row, QFormLayout::LabelRole, ui_evidence_double_click_lbl);
+
+ ui_evidence_double_click_cb = new QCheckBox(ui_form_layout_widget);
+
+ ui_gameplay_form->setWidget(row, QFormLayout::FieldRole, ui_evidence_double_click_cb);
+
// Finish gameplay tab
QScrollArea *scroll = new QScrollArea(this);
scroll->setWidget(ui_form_layout_widget);
@@ -1210,6 +1222,7 @@ void AOOptionsDialog::update_values() {
ui_suppress_audio_spinbox->setValue(ao_app->get_default_suppress_audio());
ui_bliprate_spinbox->setValue(ao_app->read_blip_rate());
ui_default_showname_textbox->setText(ao_app->get_default_showname());
+ ui_evidence_double_click_cb->setChecked(ao_app->get_evidence_double_click());
auto *defaultMount = new QListWidgetItem(tr("%1 (default)")
.arg(ao_app->get_base_path()));
@@ -1273,6 +1286,7 @@ void AOOptionsDialog::save_pressed()
configini->setValue("demo_logging_enabled", ui_log_demo_cb->isChecked());
configini->setValue("continuous_playback", ui_continuous_cb->isChecked());
configini->setValue("category_stop", ui_category_stop_cb->isChecked());
+ configini->setValue("evidence_double_click", ui_evidence_double_click_cb->isChecked());
QFile *callwordsini = new QFile(ao_app->get_base_path() + "callwords.ini");
if (callwordsini->open(QIODevice::WriteOnly | QIODevice::Truncate |
diff --git a/src/evidence.cpp b/src/evidence.cpp
index 3b38b414..34f09a6e 100644
--- a/src/evidence.cpp
+++ b/src/evidence.cpp
@@ -12,6 +12,7 @@ void Courtroom::initialize_evidence()
ui_evidence_name->setAlignment(Qt::AlignCenter);
ui_evidence_name->setFrame(false);
ui_evidence_name->setObjectName("ui_evidence_name");
+ ui_evidence_name->setReadOnly(true);
ui_evidence_buttons = new QWidget(ui_evidence);
ui_evidence_buttons->setObjectName("ui_evidence_buttons");
@@ -449,17 +450,22 @@ void Courtroom::on_evidence_clicked(int p_id)
}
else if (f_real_id > local_evidence_list.size())
return;
+
+ if (!ao_app->get_evidence_double_click()){
+ on_evidence_double_clicked(p_id);
+ return;
+ }
- ui_evidence_name->setText(local_evidence_list.at(f_real_id).name);
+ if (ui_evidence_overlay->isVisible()) {
+ return;
+ }
+ ui_evidence_name->setText(local_evidence_list.at(f_real_id).name);
for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list))
i_button->set_selected(false);
ui_evidence_list.at(p_id)->set_selected(true);
-
current_evidence = f_real_id;
-
- // ui_ic_chat_message->setFocus();
}
void Courtroom::on_evidence_double_clicked(int p_id)
@@ -469,6 +475,17 @@ void Courtroom::on_evidence_double_clicked(int p_id)
if (f_real_id >= local_evidence_list.size())
return;
+ if (ui_evidence_overlay->isVisible()) {
+ if (!on_evidence_x_clicked()) {
+ // We're told not to switch over to the other evidence ("cancel" clicked)
+ return;
+ }
+ }
+
+ for (AOEvidenceButton *i_button : qAsConst(ui_evidence_list))
+ i_button->set_selected(false);
+
+ ui_evidence_list.at(p_id)->set_selected(true);
current_evidence = f_real_id;
evi_type f_evi = local_evidence_list.at(f_real_id);
@@ -477,6 +494,7 @@ void Courtroom::on_evidence_double_clicked(int p_id)
ui_evidence_description->appendPlainText(f_evi.description);
ui_evidence_description->setReadOnly(false);
ui_evidence_description->setToolTip(tr("Click to edit..."));
+ ui_evidence_description->moveCursor(QTextCursor::Start);
ui_evidence_name->setText(f_evi.name);
ui_evidence_name->setReadOnly(false);
@@ -489,12 +507,15 @@ void Courtroom::on_evidence_double_clicked(int p_id)
ui_evidence->show();
ui_evidence_overlay->show();
ui_evidence_ok->hide();
-
- ui_ic_chat_message->setFocus();
}
void Courtroom::on_evidence_hover(int p_id, bool p_state)
{
+ if (ui_evidence_overlay->isVisible()) {
+ // Ignore hovering behavior if we're in the process of viewing a piece of evidence
+ return;
+ }
+
int final_id = p_id + max_evidence_on_page * current_evidence_page;
if (p_state) {
@@ -514,8 +535,6 @@ void Courtroom::on_evidence_left_clicked()
--current_evidence_page;
set_evidence_page();
-
- ui_ic_chat_message->setFocus();
}
void Courtroom::on_evidence_right_clicked()
@@ -523,8 +542,6 @@ void Courtroom::on_evidence_right_clicked()
++current_evidence_page;
set_evidence_page();
-
- ui_ic_chat_message->setFocus();
}
void Courtroom::on_evidence_present_clicked()
@@ -557,24 +574,18 @@ void Courtroom::on_evidence_delete_clicked()
}
current_evidence = 0;
-
- ui_ic_chat_message->setFocus();
}
-void Courtroom::on_evidence_x_clicked()
+bool Courtroom::on_evidence_x_clicked()
{
if (current_evidence >=
local_evidence_list.size()) // Should never happen but you never know.
- return;
+ return true;
- evi_type fake_evidence;
- fake_evidence.name = ui_evidence_name->text();
- fake_evidence.description = ui_evidence_description->toPlainText();
- fake_evidence.image = ui_evidence_image_name->text();
- if (!compare_evidence_changed(fake_evidence,
- local_evidence_list.at(current_evidence))) {
+ if (ui_evidence_ok->isHidden()) {
+ // Nothing was modified
evidence_close();
- return;
+ return true;
}
QMessageBox *msgBox = new QMessageBox;
msgBox->setAttribute(Qt::WA_DeleteOnClose);
@@ -588,16 +599,14 @@ void Courtroom::on_evidence_x_clicked()
case QMessageBox::Save:
evidence_close();
on_evidence_ok_clicked();
- break;
+ return true;
case QMessageBox::Discard:
evidence_close();
- break;
+ return true;
case QMessageBox::Cancel:
- // Cancel was clicked, do nothing
- break;
default:
- // should never be reached
- break;
+ // Cancel was clicked, report that.
+ return false;
}
}
@@ -629,28 +638,7 @@ void Courtroom::on_evidence_ok_clicked()
void Courtroom::on_evidence_switch_clicked()
{
- evidence_close();
evidence_switch(!current_evidence_global);
- if (current_evidence_global) {
- ui_evidence_switch->set_image("evidence_global");
- ui_evidence->set_image("evidence_background");
- ui_evidence_overlay->set_image("evidence_overlay");
- ui_evidence_transfer->set_image("evidence_transfer");
- ui_evidence_transfer->setToolTip(
- tr("Transfer evidence to private inventory."));
- ui_evidence_switch->setToolTip(
- tr("Current evidence is global. Click to switch to private."));
- }
- else {
- ui_evidence_switch->set_image("evidence_private");
- ui_evidence->set_image("evidence_background_private");
- ui_evidence_overlay->set_image("evidence_overlay_private");
- ui_evidence_transfer->set_image("evidence_transfer_private");
- ui_evidence_transfer->setToolTip(
- tr("Transfer evidence to global inventory."));
- ui_evidence_switch->setToolTip(
- tr("Current evidence is private. Click to switch to global."));
- }
}
void Courtroom::on_evidence_transfer_clicked()
@@ -708,11 +696,11 @@ void Courtroom::evidence_close()
ui_evidence_name->setReadOnly(true);
ui_evidence_image_name->setReadOnly(true);
ui_evidence_overlay->hide();
- ui_ic_chat_message->setFocus();
}
void Courtroom::evidence_switch(bool global)
{
+ evidence_close();
current_evidence_global = global;
is_presenting_evidence = false;
ui_evidence_present->set_image("present");
@@ -722,12 +710,28 @@ void Courtroom::evidence_switch(bool global)
ui_evidence_present->show();
ui_evidence_save->hide();
ui_evidence_load->hide();
+ ui_evidence_switch->set_image("evidence_global");
+ ui_evidence->set_image("evidence_background");
+ ui_evidence_overlay->set_image("evidence_overlay");
+ ui_evidence_transfer->set_image("evidence_transfer");
+ ui_evidence_transfer->setToolTip(
+ tr("Transfer evidence to private inventory."));
+ ui_evidence_switch->setToolTip(
+ tr("Current evidence is global. Click to switch to private."));
}
else {
local_evidence_list = private_evidence_list;
ui_evidence_present->hide();
ui_evidence_save->show();
ui_evidence_load->show();
+ ui_evidence_switch->set_image("evidence_private");
+ ui_evidence->set_image("evidence_background_private");
+ ui_evidence_overlay->set_image("evidence_overlay_private");
+ ui_evidence_transfer->set_image("evidence_transfer_private");
+ ui_evidence_transfer->setToolTip(
+ tr("Transfer evidence to global inventory."));
+ ui_evidence_switch->setToolTip(
+ tr("Current evidence is private. Click to switch to global."));
}
current_evidence_page = 0;
set_evidence_page();
diff --git a/src/text_file_functions.cpp b/src/text_file_functions.cpp
index f1e1fbba..bfb72f72 100644
--- a/src/text_file_functions.cpp
+++ b/src/text_file_functions.cpp
@@ -1232,3 +1232,9 @@ bool AOApplication::get_player_count_optout()
return configini->value("player_count_optout", "false").value<QString>()
.startsWith("true");
}
+
+bool AOApplication::get_evidence_double_click()
+{
+ return configini->value("evidence_double_click", "true").value<QString>()
+ .startsWith("true");
+}