diff options
| author | Crystalwarrior <varsash@gmail.com> | 2019-10-03 17:01:41 +0300 |
|---|---|---|
| committer | Crystalwarrior <varsash@gmail.com> | 2019-10-03 17:01:41 +0300 |
| commit | bdef10ace5e99ebd0ae09d0821cc2557b07defdd (patch) | |
| tree | 7ebd8caa6a80c8da0990e847c656c379bbf2e027 /src/evidence.cpp | |
| parent | 829604e8089736945e8121cd134c3c3fcbf28291 (diff) | |
Remove /rainbow as clientside slash commands are cursed. I shall purge all clientside slash command memery soon...
Fix /save_case iterating from last to first instead of first to last
Implement private evidence saving/loading to and from an .ini file
Diffstat (limited to 'src/evidence.cpp')
| -rw-r--r-- | src/evidence.cpp | 84 |
1 files changed, 83 insertions, 1 deletions
diff --git a/src/evidence.cpp b/src/evidence.cpp index 82e496dd..77044c90 100644 --- a/src/evidence.cpp +++ b/src/evidence.cpp @@ -19,6 +19,11 @@ void Courtroom::initialize_evidence() 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_save->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); @@ -45,6 +50,8 @@ void Courtroom::initialize_evidence() 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())); @@ -136,6 +143,20 @@ void Courtroom::refresh_evidence() 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"); @@ -584,6 +605,7 @@ 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); @@ -593,16 +615,18 @@ void Courtroom::on_evidence_transfer_clicked() 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; - msgBox->setText("Evidence has been transferred."); + msgBox->setText("\"" + name + "\" has been transferred."); msgBox->setStandardButtons(QMessageBox::Ok); msgBox->setDefaultButton(QMessageBox::Ok); msgBox->exec(); @@ -644,12 +668,70 @@ void Courtroom::evidence_switch(bool 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(); + } + 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", "UNKNOWN").value<QString>(); + f_evi.description = inventory.value(evi + "/description", "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(); } |
