aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCrystalwarrior <varsash@gmail.com>2019-10-03 17:01:41 +0300
committerCrystalwarrior <varsash@gmail.com>2019-10-03 17:01:41 +0300
commitbdef10ace5e99ebd0ae09d0821cc2557b07defdd (patch)
tree7ebd8caa6a80c8da0990e847c656c379bbf2e027
parent829604e8089736945e8121cd134c3c3fcbf28291 (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
-rw-r--r--include/courtroom.h4
-rw-r--r--src/courtroom.cpp10
-rw-r--r--src/evidence.cpp84
3 files changed, 88 insertions, 10 deletions
diff --git a/include/courtroom.h b/include/courtroom.h
index 9f3b659b..f72e106a 100644
--- a/include/courtroom.h
+++ b/include/courtroom.h
@@ -570,6 +570,8 @@ private:
AOButton *ui_evidence_ok;
AOButton *ui_evidence_switch;
AOButton *ui_evidence_transfer;
+ AOButton *ui_evidence_save;
+ AOButton *ui_evidence_load;
AOTextEdit *ui_evidence_description;
AOImage *ui_char_select_background;
@@ -747,6 +749,8 @@ private slots:
void evidence_close();
void evidence_switch(bool global);
+ void on_evidence_save_clicked();
+ void on_evidence_load_clicked();
bool compare_evidence_changed(evi_type evi_a, evi_type evi_b);
void on_back_to_lobby_clicked();
diff --git a/src/courtroom.cpp b/src/courtroom.cpp
index 794242f3..e715c795 100644
--- a/src/courtroom.cpp
+++ b/src/courtroom.cpp
@@ -2993,14 +2993,6 @@ void Courtroom::on_ooc_return_pressed()
toggle_judge_buttons(false);
}
}
- else if (ooc_message.startsWith("/rainbow") && ao_app->yellow_text_enabled && !rainbow_appended)
- {
- //ui_text_color->addItem("Rainbow");
- ui_ooc_chat_message->clear();
- //rainbow_appended = true;
- append_server_chatmessage("CLIENT", tr("This does nothing, but there you go."), "1");
- return;
- }
else if (ooc_message.startsWith("/settings"))
{
ui_ooc_chat_message->clear();
@@ -3221,7 +3213,7 @@ void Courtroom::on_ooc_return_pressed()
casefile.setValue("doc", "");
casefile.setValue("status",command[2]);
casefile.sync();
- for(int i = local_evidence_list.size() - 1; i >= 0; i--)
+ for(int i = 0; i < local_evidence_list.size(); i++)
{
QString clean_evidence_dsc = local_evidence_list[i].description.replace(QRegularExpression("<owner = ...>..."), "");
clean_evidence_dsc = clean_evidence_dsc.replace(clean_evidence_dsc.lastIndexOf(">"), 1, "");
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();
}