atrooney-online-2/src/evidence.cpp

781 lines
25 KiB
C++

#include "courtroom.h"
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->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_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 = p_point.x();
int x_spacing = f_spacing.x();
int x_mod_count = 0;
const int button_height = p_point.y();
int y_spacing = f_spacing.y();
int y_mod_count = 0;
evidence_columns = ((ui_evidence_buttons->width() - button_width) /
(x_spacing + button_width)) +
1;
evidence_rows = ((ui_evidence_buttons->height() - button_height) /
(y_spacing + button_height)) +
1;
max_evidence_on_page = evidence_columns * evidence_rows;
for (int n = 0; n < max_evidence_on_page; ++n) {
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, button_width, button_height);
ui_evidence_list.append(f_evidence);
f_evidence->set_id(n);
connect(f_evidence, SIGNAL(evidence_clicked(int)), this,
SLOT(on_evidence_clicked(int)));
connect(f_evidence, SIGNAL(evidence_double_clicked(int)), this,
SLOT(on_evidence_double_clicked(int)));
connect(f_evidence, SIGNAL(on_hover(int, bool)), this,
SLOT(on_evidence_hover(int, bool)));
++x_mod_count;
if (x_mod_count == evidence_columns) {
++y_mod_count;
x_mod_count = 0;
}
}
}
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(this);
msgBox->setAttribute(Qt::WA_DeleteOnClose);
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()
{
int total_evidence = local_evidence_list.size();
ui_evidence_left->hide();
ui_evidence_right->hide();
for (AOEvidenceButton *i_button : ui_evidence_list) {
i_button->hide();
}
// to account for the "add evidence" button
++total_evidence;
int total_pages = total_evidence / max_evidence_on_page;
int evidence_on_page = 0;
if ((total_evidence % max_evidence_on_page) != 0) {
++total_pages;
// i. e. not on the last page
if (total_pages > current_evidence_page + 1)
evidence_on_page = max_evidence_on_page;
else
evidence_on_page = total_evidence % max_evidence_on_page;
}
else
evidence_on_page = max_evidence_on_page;
if (total_pages > current_evidence_page + 1)
ui_evidence_right->show();
if (current_evidence_page > 0)
ui_evidence_left->show();
for (int n_evidence_button = 0; n_evidence_button < evidence_on_page;
++n_evidence_button) {
int n_real_evidence =
n_evidence_button + current_evidence_page * max_evidence_on_page;
AOEvidenceButton *f_evidence_button =
ui_evidence_list.at(n_evidence_button);
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);
f_evidence_button->setToolTip(
QString::number(n_real_evidence + 1) + ": " +
local_evidence_list.at(n_real_evidence).name);
}
else
f_evidence_button->set_image("");
f_evidence_button->show();
}
}
void Courtroom::on_evidence_name_edited()
{
ui_evidence_name->setReadOnly(true);
if (current_evidence >= local_evidence_list.size())
return;
}
void Courtroom::on_evidence_name_double_clicked()
{
if (ui_evidence_overlay->isVisible()) {
ui_evidence_name->setReadOnly(false);
}
else {
ui_evidence_name->setReadOnly(true);
}
}
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;
}
void Courtroom::on_evidence_image_button_clicked()
{
QDir dir(ao_app->get_base_path() + "evidence");
QFileDialog dialog(this);
dialog.setFileMode(QFileDialog::ExistingFile);
dialog.setNameFilter(tr("Images (*.png)"));
dialog.setViewMode(QFileDialog::List);
dialog.setDirectory(dir);
QStringList filenames;
if (dialog.exec())
filenames = dialog.selectedFiles();
if (filenames.size() != 1)
return;
QString filename = filenames.at(0);
filename = dir.relativeFilePath(filename);
ui_evidence_image_name->setText(filename);
on_evidence_image_name_edited();
}
void Courtroom::on_evidence_clicked(int p_id)
{
ui_evidence_name->setReadOnly(true);
int f_real_id = p_id + max_evidence_on_page * current_evidence_page;
if (f_real_id == local_evidence_list.size()) {
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())
return;
ui_evidence_name->setText(local_evidence_list.at(f_real_id).name);
for (AOEvidenceButton *i_button : 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)
{
int f_real_id = p_id + max_evidence_on_page * current_evidence_page;
if (f_real_id >= local_evidence_list.size())
return;
current_evidence = f_real_id;
evi_type f_evi = local_evidence_list.at(f_real_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();
}
void Courtroom::on_evidence_hover(int p_id, bool p_state)
{
ui_evidence_name->setReadOnly(true);
int final_id = p_id + max_evidence_on_page * current_evidence_page;
if (p_state) {
if (final_id == local_evidence_list.size())
ui_evidence_name->setText(tr("Add new evidence..."));
else if (final_id < local_evidence_list.size())
ui_evidence_name->setText(local_evidence_list.at(final_id).name);
}
else if (current_evidence < local_evidence_list.size())
ui_evidence_name->setText(local_evidence_list.at(current_evidence).name);
else
ui_evidence_name->setText("");
}
void Courtroom::on_evidence_left_clicked()
{
--current_evidence_page;
set_evidence_page();
ui_ic_chat_message->setFocus();
}
void Courtroom::on_evidence_right_clicked()
{
++current_evidence_page;
set_evidence_page();
ui_ic_chat_message->setFocus();
}
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");
else
ui_evidence_present->set_image("present_disabled");
is_presenting_evidence = !is_presenting_evidence;
ui_ic_chat_message->setFocus();
}
void Courtroom::on_evidence_delete_clicked()
{
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;
ui_ic_chat_message->setFocus();
}
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(this);
msgBox->setAttribute(Qt::WA_DeleteOnClose);
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_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;
QString name;
if (!current_evidence_global) // Transfer private evidence to global
{
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);
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(this);
msgBox->setAttribute(Qt::WA_DeleteOnClose);
msgBox->setText(tr("\"%1\" has been transferred.").arg(name));
msgBox->setStandardButtons(QMessageBox::Ok);
msgBox->setDefaultButton(QMessageBox::Ok);
msgBox->exec();
}
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;
}