diff --git a/courtroom.cpp b/courtroom.cpp index 137ab72..244a9c0 100644 --- a/courtroom.cpp +++ b/courtroom.cpp @@ -512,7 +512,9 @@ void Courtroom::set_widgets() set_size_and_pos(ui_evidence_delete, "evidence_delete"); ui_evidence_delete->set_image("deleteevidence.png"); - set_size_and_pos(ui_evidence_image, "evidence_image"); + 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("evidencex.png"); diff --git a/courtroom.h b/courtroom.h index 8221f00..4e7e191 100644 --- a/courtroom.h +++ b/courtroom.h @@ -305,7 +305,6 @@ private: AOButton *ui_evidence_button; AOImage *ui_evidence; - //QLabel *ui_evidence_name; AOLineEdit *ui_evidence_name; QWidget *ui_evidence_buttons; QVector ui_evidence_list; @@ -314,7 +313,8 @@ private: AOButton *ui_evidence_present; AOImage *ui_evidence_overlay; AOButton *ui_evidence_delete; - AOLineEdit *ui_evidence_image; + AOLineEdit *ui_evidence_image_name; + AOButton *ui_evidence_image_button; AOButton *ui_evidence_x; AOTextEdit *ui_evidence_description; @@ -385,7 +385,8 @@ private slots: void on_pos_dropdown_changed(int p_index); void on_evidence_name_edited(); - void on_evidence_image_edited(); + void on_evidence_image_name_edited(); + void on_evidence_image_button_clicked(); void on_evidence_clicked(int p_id); void on_evidence_double_clicked(int p_id); diff --git a/evidence.cpp b/evidence.cpp index a20fd06..19ffecf 100644 --- a/evidence.cpp +++ b/evidence.cpp @@ -1,6 +1,7 @@ #include "courtroom.h" #include +#include void Courtroom::construct_evidence() { @@ -22,7 +23,9 @@ void Courtroom::construct_evidence() ui_evidence_overlay = new AOImage(ui_evidence, ao_app); ui_evidence_delete = new AOButton(ui_evidence_overlay, ao_app); - ui_evidence_image = new AOLineEdit(ui_evidence_overlay); + 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("Choose.."); ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app); ui_evidence_description = new AOTextEdit(ui_evidence_overlay); @@ -76,7 +79,8 @@ void Courtroom::construct_evidence() 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, SIGNAL(returnPressed()), this, SLOT(on_evidence_image_edited())); + 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(); @@ -168,7 +172,7 @@ void Courtroom::on_evidence_name_edited() ao_app->send_server_packet(new AOPacket("EE", f_contents)); } -void Courtroom::on_evidence_image_edited() +void Courtroom::on_evidence_image_name_edited() { if (current_evidence >= local_evidence_list.size()) return; @@ -180,11 +184,38 @@ void Courtroom::on_evidence_image_edited() 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->text()); + 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() +{ + QFileDialog dialog(this); + dialog.setFileMode(QFileDialog::ExistingFile); + dialog.setNameFilter(tr("Images (*.png)")); + dialog.setViewMode(QFileDialog::List); + dialog.setDirectory(ao_app->get_evidence_path()); + + QStringList filenames; + + if (dialog.exec()) + filenames = dialog.selectedFiles(); + + if (filenames.size() != 1) + return; + + QString filename = filenames.at(0); + + QStringList split_filename = filename.split("/"); + + filename = split_filename.at(split_filename.size() - 1); + + ui_evidence_image_name->setText(filename); + + on_evidence_image_name_edited(); +} + void Courtroom::on_evidence_clicked(int p_id) { ui_evidence_name->setReadOnly(true); @@ -226,7 +257,7 @@ void Courtroom::on_evidence_double_clicked(int p_id) ui_evidence_description->clear(); ui_evidence_description->appendPlainText(f_evi.description); - ui_evidence_image->setText(f_evi.image); + ui_evidence_image_name->setText(f_evi.image); ui_evidence_overlay->show();