aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmniTroid <davidskoland@gmail.com>2017-04-07 18:41:36 +0200
committerOmniTroid <davidskoland@gmail.com>2017-04-07 18:41:36 +0200
commitfa95600f2d9414c994dbc8c883b777eecddd9a09 (patch)
treed089a0f96ef9cdc8709b300e2193f16dcb04a0af
parent3070db4aefbada15f908098275d218fdb5f93f23 (diff)
fixed some evidence-related crashes
-rw-r--r--evidence.cpp33
1 files changed, 22 insertions, 11 deletions
diff --git a/evidence.cpp b/evidence.cpp
index cc02a178..1c504a3a 100644
--- a/evidence.cpp
+++ b/evidence.cpp
@@ -84,7 +84,7 @@ void Courtroom::set_evidence_page()
QString evi_string = char_list.at(m_cid).evidence_string;
- QStringList evi_numbers = evi_string.split(",");
+ QStringList evi_numbers = evi_string.split(",", QString::SkipEmptyParts);
for (QString i_evi : evi_numbers)
{
@@ -109,17 +109,17 @@ void Courtroom::set_evidence_page()
if (total_evidence == 0)
return;
- int total_pages = evidence_list.size() / max_evidence_on_page;
+ int total_pages = total_evidence / max_evidence_on_page;
int evidence_on_page = 0;
- if ((evidence_list.size() % max_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 = evidence_list.size() % max_evidence_on_page;
+ evidence_on_page = total_evidence % max_evidence_on_page;
}
else
@@ -131,14 +131,21 @@ void Courtroom::set_evidence_page()
if (current_evidence_page > 0)
ui_evidence_left->show();
- for (int n_evidence = 0 ; n_evidence < evidence_on_page ; ++n_evidence)
+ qDebug() << "evidence_on_page: " << evidence_on_page;
+
+ for (int n_evidence_button = 0 ; n_evidence_button < evidence_on_page ; ++n_evidence_button)
{
- int n_real_evidence = n_evidence + current_evidence_page * max_evidence_on_page;
- AOEvidenceButton *f_evidence = ui_evidence_list.at(n_evidence);
+ qDebug() << "n_evidence_button " << 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->set_image(evidence_list.at(n_real_evidence).image);
+ if (n_real_evidence < total_evidence)
+ f_evidence_button->set_image(local_evidence_list.at(n_real_evidence).image);
+ else
+ f_evidence_button->set_image("");
- f_evidence->show();
+ f_evidence_button->show();
}
@@ -165,8 +172,12 @@ void Courtroom::on_evidence_clicked(int p_id)
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);
+ int final_id = p_id + max_evidence_on_page * current_evidence_page;
+
+ if (p_state && final_id < local_evidence_list.size())
+ {
+ ui_evidence_name->setText(local_evidence_list.at(final_id).name);
+ }
else
ui_evidence_name->setText("");
}