aboutsummaryrefslogtreecommitdiff
path: root/evidence.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'evidence.cpp')
-rw-r--r--evidence.cpp157
1 files changed, 153 insertions, 4 deletions
diff --git a/evidence.cpp b/evidence.cpp
index 59ea7d6f..a5cbb166 100644
--- a/evidence.cpp
+++ b/evidence.cpp
@@ -15,14 +15,10 @@ void Courtroom::construct_evidence()
int y_mod_count{0};
evidence_columns = ui_evidence->width() / x_modifier;
- qDebug() << "columns: " << evidence_columns;
evidence_rows = ui_evidence->height() / y_modifier;
- qDebug() << "rows: " << evidence_rows;
max_evidence_on_page = evidence_columns * evidence_rows;
- qDebug() << "max_evidence_on_page: " << max_evidence_on_page;
-
for (int n = 0 ; n < max_evidence_on_page ; ++n)
{
int x_pos = base_x_pos + (x_modifier * x_mod_count);
@@ -35,6 +31,7 @@ void Courtroom::construct_evidence()
f_evidence->set_id(n);
connect(f_evidence, SIGNAL(evidence_clicked(int)), this, SLOT(on_evidence_clicked(int)));
+ connect(f_evidence, SIGNAL(on_hover(int, bool)), this, SLOT(on_evidence_hover(int, bool)));
++x_mod_count;
@@ -44,11 +41,163 @@ void Courtroom::construct_evidence()
x_mod_count = 0;
}
}
+
+ ui_evidence_name = new QLabel(ui_evidence);
+
+ ui_evidence_left = new AOImage(ui_evidence, ao_app);
+ ui_evidence_right = new AOImage(ui_evidence, ao_app);
+
+ ui_evidence_overlay = new AOImage(ui_evidence, ao_app);
+
+ ui_evidence_x = new AOButton(ui_evidence_overlay, ao_app);
+
+ ui_evidence_description = new QPlainTextEdit(ui_evidence_overlay);
+
+ set_size_and_pos(ui_evidence_name, "evidence_name");
+ 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);");
+
+ set_size_and_pos(ui_evidence_left, "evidence_left");
+ ui_evidence_left->set_image("arrow_left.png");
+
+ set_size_and_pos(ui_evidence_right, "evidence_right");
+ ui_evidence_right->set_image("arrow_right.png");
+
+ set_size_and_pos(ui_evidence_overlay, "evidence_overlay");
+ ui_evidence_overlay->set_image("evidenceoverlay.png");
+
+ set_size_and_pos(ui_evidence_x, "evidence_x");
+ ui_evidence_x->setText("X");
+
+ set_size_and_pos(ui_evidence_description, "evidence_description");
+ ui_evidence_description->setReadOnly(true);
+ ui_evidence_description->setStyleSheet("background-color: rgba(0, 0, 0, 0);"
+ "color: white;");
+
+ connect(ui_evidence_x, SIGNAL(clicked()), this, SLOT(on_evidence_x_clicked()));
+
+ ui_evidence->hide();
+}
+
+void Courtroom::set_evidence_page()
+{
+ local_evidence_list.clear();
+
+ QString evi_string = char_list.at(m_cid).evidence_string;
+
+ QStringList evi_numbers = evi_string.split(",");
+
+ for (QString i_evi : evi_numbers)
+ {
+ int n_evi = i_evi.toInt() - 1;
+
+ if (n_evi < 0 || n_evi >= evidence_list.size())
+ continue;
+
+ local_evidence_list.append(evidence_list.at(n_evi));
+ }
+
+ int total_evidence = local_evidence_list.size();
+
+ qDebug() << "total_evidence: " << total_evidence;
+
+ ui_evidence_left->hide();
+ ui_evidence_right->hide();
+
+ qDebug() << "hid evidence left and right";
+
+ for (AOEvidenceButton *i_button : ui_evidence_list)
+ {
+ i_button->hide();
+ }
+
+ qDebug() << "hid all evidence buttons";
+
+ if (total_evidence == 0)
+ return;
+
+ qDebug() << "max_evi_on_page =" << max_evidence_on_page;
+
+ int total_pages = total_evidence / max_evidence_on_page;
+
+ qDebug() << "total_pages: " << total_pages;
+
+ int evidence_on_page = 0;
+
+ if (total_evidence % max_evidence_on_page != 0)
+ {
+ ++total_pages;
+ evidence_on_page = total_evidence % max_evidence_on_page;
+
+ }
+ else
+ evidence_on_page = max_evidence_on_page;
+
+ qDebug() << "evidence_on_page: " << 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 = 0 ; n_evidence < evidence_on_page ; ++n_evidence)
+ {
+ int n_real_evidence = n_evidence + current_evidence_page * max_evidence_on_page;
+ AOEvidenceButton *f_evidence = ui_evidence_list.at(n_evidence);
+
+ f_evidence->set_image(evidence_list.at(n_real_evidence).image);
+
+ f_evidence->show();
+ }
+
}
void Courtroom::on_evidence_clicked(int p_id)
{
+ ui_evidence_name->setText(local_evidence_list.at(p_id + max_evidence_on_page * current_evidence_page).name);
+
+ for (AOEvidenceButton *i_button : ui_evidence_list)
+ {
+ i_button->set_selected(false);
+ }
+
+ ui_evidence_list.at(p_id)->set_selected(true);
+
+ current_evidence = p_id + max_evidence_on_page * current_evidence_page;
+
+ ui_evidence_description->clear();
+ ui_evidence_description->appendPlainText(local_evidence_list.at(current_evidence).description);
+
+ ui_evidence_overlay->show();
+}
+
+void Courtroom::on_evidence_hover(int p_id, bool p_state)
+{
+ if (p_state)
+ ui_evidence_name->setText(local_evidence_list.at(p_id + max_evidence_on_page * current_evidence_page).name);
+ else
+ ui_evidence_name->setText("");
+}
+void Courtroom::on_evidence_left_clicked()
+{
+ --current_evidence_page;
+
+ set_evidence_page();
+}
+
+void Courtroom::on_evidence_right_clicked()
+{
+ ++current_evidence_page;
+
+ set_evidence_page();
}
+void Courtroom::on_evidence_x_clicked()
+{
+ ui_evidence_overlay->hide();
+}