aboutsummaryrefslogtreecommitdiff
path: root/src/evidence.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/evidence.cpp')
-rw-r--r--src/evidence.cpp566
1 files changed, 495 insertions, 71 deletions
diff --git a/src/evidence.cpp b/src/evidence.cpp
index 502fae76..a8f59135 100644
--- a/src/evidence.cpp
+++ b/src/evidence.cpp
@@ -1,45 +1,194 @@
#include "courtroom.h"
-void Courtroom::construct_evidence()
+void Courtroom::initialize_evidence()
{
ui_evidence = new AOImage(this, ao_app);
// ui_evidence_name = new QLabel(ui_evidence);
ui_evidence_name = new AOLineEdit(ui_evidence);
ui_evidence_name->setAlignment(Qt::AlignCenter);
- ui_evidence_name->setFont(QFont("Arial", 14, QFont::Bold));
- ui_evidence_name->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
- "color: rgba(255, 128, 0, 255);");
+ ui_evidence_name->setFrame(false);
ui_evidence_buttons = new QWidget(ui_evidence);
ui_evidence_left = new AOButton(ui_evidence, ao_app);
ui_evidence_right = new AOButton(ui_evidence, ao_app);
ui_evidence_present = new AOButton(ui_evidence, ao_app);
+ ui_evidence_present->setToolTip(tr("Present this piece of evidence to "
+ "everyone on your next spoken message"));
+
+ ui_evidence_switch = new AOButton(ui_evidence, ao_app);
+ ui_evidence_transfer = new AOButton(ui_evidence, ao_app);
+
+ ui_evidence_save = new AOButton(ui_evidence, ao_app);
+ ui_evidence_save->setToolTip(tr("Save evidence to an .ini file."));
+ ui_evidence_load = new AOButton(ui_evidence, ao_app);
+ ui_evidence_load->setToolTip(tr("Load evidence from an .ini file."));
ui_evidence_overlay = new AOImage(ui_evidence, ao_app);
ui_evidence_delete = new AOButton(ui_evidence_overlay, ao_app);
+ ui_evidence_delete->setToolTip(tr("Destroy this piece of evidence"));
ui_evidence_image_name = new AOLineEdit(ui_evidence_overlay);
ui_evidence_image_button = new AOButton(ui_evidence_overlay, ao_app);
- ui_evidence_image_button->setText(tr("Choose..."));
+ ui_evidence_image_button->setText(tr("Choose.."));
ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app);
+ ui_evidence_x->setToolTip(
+ tr("Close the evidence display/editing overlay.\n"
+ "You will be prompted if there's any unsaved changes."));
+ ui_evidence_ok = new AOButton(ui_evidence_overlay, ao_app);
+ ui_evidence_ok->setToolTip(tr("Save any changes made to this piece of "
+ "evidence and send them to server."));
ui_evidence_description = new AOTextEdit(ui_evidence_overlay);
ui_evidence_description->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
"color: white;");
+ ui_evidence_description->setFrameStyle(QFrame::NoFrame);
+ ui_evidence_description->setToolTip(
+ tr("Double-click to edit. Press [X] to update your changes."));
+
+ connect(ui_evidence_name, SIGNAL(returnPressed()), this,
+ SLOT(on_evidence_name_edited()));
+ connect(ui_evidence_name, SIGNAL(double_clicked()), this,
+ SLOT(on_evidence_name_double_clicked()));
+ connect(ui_evidence_left, SIGNAL(clicked()), this,
+ SLOT(on_evidence_left_clicked()));
+ connect(ui_evidence_right, SIGNAL(clicked()), this,
+ SLOT(on_evidence_right_clicked()));
+ connect(ui_evidence_present, SIGNAL(clicked()), this,
+ SLOT(on_evidence_present_clicked()));
+ connect(ui_evidence_switch, SIGNAL(clicked()), this,
+ SLOT(on_evidence_switch_clicked()));
+ connect(ui_evidence_transfer, SIGNAL(clicked()), this,
+ SLOT(on_evidence_transfer_clicked()));
+ connect(ui_evidence_save, SIGNAL(clicked()), this,
+ SLOT(on_evidence_save_clicked()));
+ connect(ui_evidence_load, SIGNAL(clicked()), this,
+ SLOT(on_evidence_load_clicked()));
+
+ connect(ui_evidence_delete, SIGNAL(clicked()), this,
+ SLOT(on_evidence_delete_clicked()));
+ connect(ui_evidence_image_name, SIGNAL(returnPressed()), this,
+ SLOT(on_evidence_image_name_edited()));
+ connect(ui_evidence_image_name, SIGNAL(double_clicked()), this,
+ SLOT(on_evidence_image_name_double_clicked()));
+ connect(ui_evidence_image_button, SIGNAL(clicked()), this,
+ SLOT(on_evidence_image_button_clicked()));
+ connect(ui_evidence_x, SIGNAL(clicked()), this,
+ SLOT(on_evidence_x_clicked()));
+ connect(ui_evidence_ok, SIGNAL(clicked()), this,
+ SLOT(on_evidence_ok_clicked()));
+
+ connect(ui_evidence_name, SIGNAL(textChanged(QString)), this,
+ SLOT(on_evidence_edited()));
+ connect(ui_evidence_image_name, SIGNAL(textChanged(QString)), this,
+ SLOT(on_evidence_edited()));
+ connect(ui_evidence_description, SIGNAL(textChanged()), this,
+ SLOT(on_evidence_edited()));
+
+ ui_evidence->hide();
+}
+
+void Courtroom::refresh_evidence()
+{
+ set_font(ui_evidence_name, "", "evidence_name");
+ set_font(ui_evidence_image_name, "", "evidence_image_name");
+ set_font(ui_evidence_description, "", "evidence_description");
+
+ // Should properly refresh the evidence list
+ qDeleteAll(ui_evidence_list.begin(), ui_evidence_list.end());
+ ui_evidence_list.clear();
+
+ set_size_and_pos(ui_evidence_button, "evidence_button");
+ ui_evidence_button->set_image("evidence_button");
+ ui_evidence_button->setToolTip(tr("Bring up the Evidence screen."));
set_size_and_pos(ui_evidence, "evidence_background");
+ if (current_evidence_global)
+ ui_evidence->set_image("evidence_background");
+ else
+ ui_evidence->set_image("evidence_background_private");
+
+ set_size_and_pos(ui_evidence_name, "evidence_name");
+
set_size_and_pos(ui_evidence_buttons, "evidence_buttons");
+ set_size_and_pos(ui_evidence_left, "evidence_left");
+ ui_evidence_left->set_image("arrow_left");
+
+ set_size_and_pos(ui_evidence_right, "evidence_right");
+ ui_evidence_right->set_image("arrow_right");
+
+ set_size_and_pos(ui_evidence_present, "evidence_present");
+ ui_evidence_present->set_image("present");
+
+ set_size_and_pos(ui_evidence_overlay, "evidence_overlay");
+ if (current_evidence_global)
+ ui_evidence_overlay->set_image("evidence_overlay");
+ else
+ ui_evidence_overlay->set_image("evidence_overlay_private");
+
+ set_size_and_pos(ui_evidence_delete, "evidence_delete");
+ ui_evidence_delete->set_image("evidence_delete");
+
+ set_size_and_pos(ui_evidence_image_name, "evidence_image_name");
+
+ set_size_and_pos(ui_evidence_image_button, "evidence_image_button");
+
+ set_size_and_pos(ui_evidence_x, "evidence_x");
+ ui_evidence_x->set_image("evidence_x");
+
+ set_size_and_pos(ui_evidence_ok, "evidence_ok");
+ ui_evidence_ok->set_image("evidence_ok");
+
+ set_size_and_pos(ui_evidence_switch, "evidence_switch");
+ if (current_evidence_global) {
+ ui_evidence_switch->set_image("evidence_global");
+ ui_evidence_switch->setToolTip(tr("Switch evidence to private inventory."));
+ }
+ else {
+ ui_evidence_switch->set_image("evidence_private");
+ ui_evidence_switch->setToolTip(tr("Switch evidence to global inventory."));
+ }
+
+ set_size_and_pos(ui_evidence_transfer, "evidence_transfer");
+ if (current_evidence_global) {
+ ui_evidence_transfer->set_image("evidence_transfer");
+ ui_evidence_transfer->setToolTip(
+ tr("Transfer evidence to private inventory."));
+ }
+ else {
+ ui_evidence_transfer->set_image("evidence_transfer_private");
+ ui_evidence_transfer->setToolTip(
+ tr("Transfer evidence to global inventory."));
+ }
+
+ set_size_and_pos(ui_evidence_save, "evidence_save");
+ ui_evidence_save->set_image("evidence_save");
+ if (current_evidence_global)
+ ui_evidence_save->hide();
+ else
+ ui_evidence_save->show();
+
+ set_size_and_pos(ui_evidence_load, "evidence_load");
+ ui_evidence_load->set_image("evidence_load");
+ if (current_evidence_global)
+ ui_evidence_load->hide();
+ else
+ ui_evidence_load->show();
+
+ set_size_and_pos(ui_evidence_description, "evidence_description");
+
QPoint f_spacing = ao_app->get_button_spacing("evidence_button_spacing",
"courtroom_design.ini");
+ QPoint p_point = ao_app->get_button_spacing("evidence_button_size",
+ "courtroom_design.ini");
- const int button_width = 70;
+ const int button_width = p_point.x();
int x_spacing = f_spacing.x();
int x_mod_count = 0;
- const int button_height = 70;
+ const int button_height = p_point.y();
int y_spacing = f_spacing.y();
int y_mod_count = 0;
@@ -56,8 +205,8 @@ void Courtroom::construct_evidence()
int x_pos = (button_width + x_spacing) * x_mod_count;
int y_pos = (button_height + y_spacing) * y_mod_count;
- AOEvidenceButton *f_evidence =
- new AOEvidenceButton(ui_evidence_buttons, ao_app, x_pos, y_pos);
+ AOEvidenceButton *f_evidence = new AOEvidenceButton(
+ ui_evidence_buttons, ao_app, x_pos, y_pos, button_width, button_height);
ui_evidence_list.append(f_evidence);
@@ -77,33 +226,64 @@ void Courtroom::construct_evidence()
x_mod_count = 0;
}
}
-
- connect(ui_evidence_name, SIGNAL(returnPressed()), this,
- SLOT(on_evidence_name_edited()));
- connect(ui_evidence_left, SIGNAL(clicked()), this,
- SLOT(on_evidence_left_clicked()));
- connect(ui_evidence_right, SIGNAL(clicked()), this,
- SLOT(on_evidence_right_clicked()));
- connect(ui_evidence_present, SIGNAL(clicked()), this,
- SLOT(on_evidence_present_clicked()));
- connect(ui_evidence_delete, SIGNAL(clicked()), this,
- SLOT(on_evidence_delete_clicked()));
- connect(ui_evidence_image_name, SIGNAL(returnPressed()), this,
- SLOT(on_evidence_image_name_edited()));
- connect(ui_evidence_image_button, SIGNAL(clicked()), this,
- SLOT(on_evidence_image_button_clicked()));
- connect(ui_evidence_x, SIGNAL(clicked()), this,
- SLOT(on_evidence_x_clicked()));
-
- ui_evidence->hide();
}
void Courtroom::set_evidence_list(QVector<evi_type> &p_evi_list)
{
+ global_evidence_list = p_evi_list;
+ if (!current_evidence_global)
+ return; // We're on private evidence editing, wait for user to do their
+ // thing
+
+ QVector<evi_type> old_list = local_evidence_list;
local_evidence_list.clear();
local_evidence_list = p_evi_list;
set_evidence_page();
+
+ if (ui_evidence_overlay
+ ->isVisible()) // Update the currently edited evidence for this user
+ {
+ if (current_evidence >= local_evidence_list.size()) {
+ evidence_close();
+ ui_evidence_name->setText("");
+ }
+ else if (ui_evidence_description->isReadOnly()) // We haven't double clicked
+ // to edit it or anything
+ {
+ on_evidence_double_clicked(current_evidence);
+ }
+ // Todo: make a function that compares two pieces of evidence for any
+ // differences
+ else if (compare_evidence_changed(
+ old_list.at(current_evidence),
+ local_evidence_list.at(current_evidence))) {
+ QMessageBox *msgBox = new QMessageBox;
+
+ msgBox->setText(tr("The piece of evidence you've been editing has changed."));
+ msgBox->setInformativeText(tr("Do you wish to keep your changes?"));
+ msgBox->setDetailedText(tr(
+ "Name: %1\n"
+ "Image: %2\n"
+ "Description:\n%3").arg(local_evidence_list.at(current_evidence).name).arg(local_evidence_list.at(current_evidence).image).arg(local_evidence_list.at(current_evidence).description));
+ msgBox->setStandardButtons(QMessageBox::Yes | QMessageBox::No);
+ msgBox->setDefaultButton(QMessageBox::LastButton);
+ // msgBox->setWindowModality(Qt::NonModal);
+ int ret = msgBox->exec();
+ switch (ret) {
+ case QMessageBox::Yes:
+ // "Keep changes"
+ break;
+ case QMessageBox::No:
+ // "Discard changes and keep theirs"
+ on_evidence_double_clicked(current_evidence);
+ break;
+ default:
+ // should never be reached
+ break;
+ }
+ }
+ }
}
void Courtroom::set_evidence_page()
@@ -114,7 +294,7 @@ void Courtroom::set_evidence_page()
ui_evidence_right->hide();
for (AOEvidenceButton *i_button : ui_evidence_list) {
- i_button->reset();
+ i_button->hide();
}
// to account for the "add evidence" button
@@ -147,17 +327,21 @@ void Courtroom::set_evidence_page()
AOEvidenceButton *f_evidence_button =
ui_evidence_list.at(n_evidence_button);
- // ie. the add evidence button
- if (n_real_evidence == (total_evidence - 1))
+ f_evidence_button->set_selected(false);
+ f_evidence_button->setToolTip("");
+ if (n_real_evidence == (total_evidence - 1)) {
f_evidence_button->set_theme_image("addevidence.png");
+ }
else if (n_real_evidence < (total_evidence - 1)) {
f_evidence_button->set_image(
local_evidence_list.at(n_real_evidence).image);
if (n_real_evidence == current_evidence)
f_evidence_button->set_selected(true);
- else
- f_evidence_button->set_selected(false);
+
+ f_evidence_button->setToolTip(
+ QString::number(n_real_evidence + 1) + ": " +
+ local_evidence_list.at(n_real_evidence).name);
}
else
f_evidence_button->set_image("");
@@ -168,36 +352,31 @@ void Courtroom::set_evidence_page()
void Courtroom::on_evidence_name_edited()
{
+ ui_evidence_name->setReadOnly(true);
if (current_evidence >= local_evidence_list.size())
return;
+}
- QStringList f_contents;
-
- evi_type f_evi = local_evidence_list.at(current_evidence);
-
- f_contents.append(QString::number(current_evidence));
- f_contents.append(ui_evidence_name->text());
- f_contents.append(f_evi.description);
- f_contents.append(f_evi.image);
+void Courtroom::on_evidence_name_double_clicked()
+{
+ if (ui_evidence_overlay->isVisible()) {
+ ui_evidence_name->setReadOnly(false);
+ }
+ else {
+ ui_evidence_name->setReadOnly(true);
+ }
+}
- ao_app->send_server_packet(new AOPacket("EE", f_contents));
+void Courtroom::on_evidence_image_name_double_clicked()
+{
+ ui_evidence_image_name->setReadOnly(false);
}
void Courtroom::on_evidence_image_name_edited()
{
+ ui_evidence_image_name->setReadOnly(true);
if (current_evidence >= local_evidence_list.size())
return;
-
- QStringList f_contents;
-
- evi_type f_evi = local_evidence_list.at(current_evidence);
-
- f_contents.append(QString::number(current_evidence));
- f_contents.append(f_evi.name);
- f_contents.append(f_evi.description);
- f_contents.append(ui_evidence_image_name->text());
-
- ao_app->send_server_packet(new AOPacket("EE", f_contents));
}
void Courtroom::on_evidence_image_button_clicked()
@@ -230,8 +409,19 @@ void Courtroom::on_evidence_clicked(int p_id)
int f_real_id = p_id + max_evidence_on_page * current_evidence_page;
if (f_real_id == local_evidence_list.size()) {
- ao_app->send_server_packet(
- new AOPacket("PE#<name>#<description>#empty.png#%"));
+ if (current_evidence_global)
+ ao_app->send_server_packet(
+ new AOPacket("PE#<name>#<description>#empty.png#%"));
+ else {
+ evi_type f_evi;
+ f_evi.name = "<name>";
+ f_evi.description = "<description>";
+ f_evi.image = "empty.png";
+
+ local_evidence_list.append(f_evi);
+ private_evidence_list = local_evidence_list;
+ set_evidence_page();
+ }
return;
}
else if (f_real_id > local_evidence_list.size())
@@ -246,7 +436,7 @@ void Courtroom::on_evidence_clicked(int p_id)
current_evidence = f_real_id;
- ui_ic_chat_message->setFocus();
+ // ui_ic_chat_message->setFocus();
}
void Courtroom::on_evidence_double_clicked(int p_id)
@@ -262,10 +452,18 @@ void Courtroom::on_evidence_double_clicked(int p_id)
ui_evidence_description->clear();
ui_evidence_description->appendPlainText(f_evi.description);
+ ui_evidence_description->setReadOnly(true);
+ ui_evidence_description->setToolTip(tr("Double-click to edit..."));
+ ui_evidence_name->setText(f_evi.name);
+ ui_evidence_name->setReadOnly(true);
+ ui_evidence_name->setToolTip(tr("Double-click to edit..."));
ui_evidence_image_name->setText(f_evi.image);
+ ui_evidence_image_name->setReadOnly(true);
+ ui_evidence_image_name->setToolTip(tr("Double-click to edit..."));
ui_evidence_overlay->show();
+ ui_evidence_ok->hide();
ui_ic_chat_message->setFocus();
}
@@ -307,10 +505,15 @@ void Courtroom::on_evidence_right_clicked()
void Courtroom::on_evidence_present_clicked()
{
+ if (!current_evidence_global) {
+ ui_evidence_present->hide();
+ is_presenting_evidence = false;
+ return; // otherwise we get force-disconnected
+ }
if (is_presenting_evidence)
- ui_evidence_present->set_image("present_disabled.png");
+ ui_evidence_present->set_image("present");
else
- ui_evidence_present->set_image("present.png");
+ ui_evidence_present->set_image("present_disabled");
is_presenting_evidence = !is_presenting_evidence;
@@ -319,11 +522,15 @@ void Courtroom::on_evidence_present_clicked()
void Courtroom::on_evidence_delete_clicked()
{
- ui_evidence_description->setReadOnly(true);
- ui_evidence_overlay->hide();
-
- ao_app->send_server_packet(
- new AOPacket("DE#" + QString::number(current_evidence) + "#%"));
+ evidence_close();
+ if (current_evidence_global)
+ ao_app->send_server_packet(
+ new AOPacket("DE#" + QString::number(current_evidence) + "#%"));
+ else {
+ local_evidence_list.remove(current_evidence);
+ private_evidence_list = local_evidence_list;
+ set_evidence_page();
+ }
current_evidence = 0;
@@ -332,22 +539,239 @@ void Courtroom::on_evidence_delete_clicked()
void Courtroom::on_evidence_x_clicked()
{
+ if (current_evidence >=
+ local_evidence_list.size()) // Should never happen but you never know.
+ return;
+
+ 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))) {
+ evidence_close();
+ return;
+ }
+ QMessageBox *msgBox = new QMessageBox;
+ msgBox->setText(tr("Evidence has been modified."));
+ msgBox->setInformativeText(tr("Do you want to save your changes?"));
+ msgBox->setStandardButtons(QMessageBox::Save | QMessageBox::Discard |
+ QMessageBox::Cancel);
+ msgBox->setDefaultButton(QMessageBox::Save);
+ int ret = msgBox->exec();
+ switch (ret) {
+ case QMessageBox::Save:
+ evidence_close();
+ on_evidence_ok_clicked();
+ break;
+ case QMessageBox::Discard:
+ evidence_close();
+ break;
+ case QMessageBox::Cancel:
+ // Cancel was clicked, do nothing
+ break;
+ default:
+ // should never be reached
+ break;
+ }
+}
+
+void Courtroom::on_evidence_ok_clicked()
+{
+ ui_evidence_name->setReadOnly(true);
ui_evidence_description->setReadOnly(true);
- ui_evidence_overlay->hide();
+ ui_evidence_image_name->setReadOnly(true);
+ if (current_evidence < local_evidence_list.size()) {
+ evi_type f_evi = local_evidence_list.at(current_evidence);
+ if (current_evidence_global) {
+ QStringList f_contents;
+ f_contents.append(QString::number(current_evidence));
+ f_contents.append(ui_evidence_name->text());
+ f_contents.append(ui_evidence_description->toPlainText());
+ f_contents.append(ui_evidence_image_name->text());
+
+ ao_app->send_server_packet(new AOPacket("EE", f_contents));
+ }
+ else {
+ f_evi.name = ui_evidence_name->text();
+ f_evi.description = ui_evidence_description->toPlainText();
+ f_evi.image = ui_evidence_image_name->text();
+ local_evidence_list.replace(current_evidence, f_evi);
+ private_evidence_list = local_evidence_list;
+ ui_evidence_ok->hide();
+ set_evidence_page();
+ }
+ }
+}
+
+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()
+{
if (current_evidence >= local_evidence_list.size())
return;
- QStringList f_contents;
+ QString name;
+ if (!current_evidence_global) // Transfer private evidence to global
+ {
+ evi_type f_evi = local_evidence_list.at(current_evidence);
- evi_type f_evi = local_evidence_list.at(current_evidence);
+ QStringList f_contents;
+ f_contents.append(f_evi.name);
+ f_contents.append(f_evi.description);
+ f_contents.append(f_evi.image);
- f_contents.append(QString::number(current_evidence));
- f_contents.append(f_evi.name);
- f_contents.append(ui_evidence_description->toPlainText());
- f_contents.append(f_evi.image);
+ name = f_evi.name;
+ ao_app->send_server_packet(new AOPacket("PE", f_contents));
+ }
+ else // Transfer global evidence to private
+ {
+ evi_type f_evi = local_evidence_list.at(current_evidence);
+ name = f_evi.name;
+ private_evidence_list.append(f_evi);
+ }
+
+ QMessageBox *msgBox = new QMessageBox;
+ msgBox->setText(tr("\"%1\" has been transferred.").arg(name));
+ msgBox->setStandardButtons(QMessageBox::Ok);
+ msgBox->setDefaultButton(QMessageBox::Ok);
+ msgBox->exec();
+}
- ao_app->send_server_packet(new AOPacket("EE", f_contents));
+void Courtroom::on_evidence_edited()
+{
+ if (current_evidence >=
+ local_evidence_list.size()) // Should never happen but you never know.
+ return;
+ 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)))
+ ui_evidence_ok->show();
+ else
+ ui_evidence_ok->hide();
+}
+void Courtroom::evidence_close()
+{
+ ui_evidence_description->setReadOnly(true);
+ ui_evidence_description->setToolTip("");
+ ui_evidence_name->setReadOnly(true);
+ ui_evidence_name->setToolTip("");
+ ui_evidence_image_name->setReadOnly(true);
+ ui_evidence_image_name->setToolTip("");
+ ui_evidence_overlay->hide();
ui_ic_chat_message->setFocus();
}
+
+void Courtroom::evidence_switch(bool global)
+{
+ current_evidence_global = global;
+ is_presenting_evidence = false;
+ ui_evidence_present->set_image("present");
+ local_evidence_list.clear();
+ if (current_evidence_global) {
+ local_evidence_list = global_evidence_list;
+ ui_evidence_present->show();
+ ui_evidence_save->hide();
+ ui_evidence_load->hide();
+ }
+ else {
+ local_evidence_list = private_evidence_list;
+ ui_evidence_present->hide();
+ ui_evidence_save->show();
+ ui_evidence_load->show();
+ }
+ current_evidence_page = 0;
+ set_evidence_page();
+}
+
+void Courtroom::on_evidence_save_clicked()
+{
+ if (current_evidence_global)
+ return; // Don't allow saving/loading operations when in global inventory
+ // mode for now
+
+ QString p_path = QFileDialog::getSaveFileName(
+ this, tr("Save Inventory"), "base/inventories/", tr("Ini Files (*.ini)"));
+ if (p_path.isEmpty())
+ return;
+
+ evidence_close();
+ ui_evidence_name->setText("");
+
+ QSettings inventory(p_path, QSettings::IniFormat);
+ inventory.clear();
+ for (int i = 0; i < local_evidence_list.size(); i++) {
+ inventory.beginGroup(QString::number(i));
+ inventory.setValue("name", local_evidence_list[i].name);
+ inventory.setValue("description", local_evidence_list[i].description);
+ inventory.setValue("image", local_evidence_list[i].image);
+ inventory.endGroup();
+ }
+ inventory.sync();
+}
+
+void Courtroom::on_evidence_load_clicked()
+{
+ if (current_evidence_global)
+ return; // Don't allow saving/loading operations when in global inventory
+ // mode for now
+
+ QString p_path = QFileDialog::getOpenFileName(
+ this, tr("Open Inventory"), "base/inventories/", tr("Ini Files (*.ini)"));
+ if (p_path.isEmpty())
+ return;
+
+ evidence_close();
+ ui_evidence_name->setText("");
+
+ QSettings inventory(p_path, QSettings::IniFormat);
+ local_evidence_list.clear();
+ foreach (QString evi, inventory.childGroups()) {
+ if (evi == "General")
+ continue;
+
+ evi_type f_evi;
+ f_evi.name = inventory.value(evi + "/name", tr("UNKNOWN")).value<QString>();
+ f_evi.description =
+ inventory.value(evi + "/description", tr("UNKNOWN")).value<QString>();
+ f_evi.image =
+ inventory.value(evi + "/image", "UNKNOWN.png").value<QString>();
+ local_evidence_list.append(f_evi);
+ }
+ private_evidence_list = local_evidence_list;
+ set_evidence_page();
+}
+
+bool Courtroom::compare_evidence_changed(evi_type evi_a, evi_type evi_b)
+{
+ return evi_a.name != evi_b.name || evi_a.image != evi_b.image ||
+ evi_a.description != evi_b.description;
+}