atrooney-online-2/aoevidencedisplay.cpp

99 lines
2.3 KiB
C++

#include <QDebug>
#include "aoevidencedisplay.h"
#include "file_functions.h"
#include "datatypes.h"
#include "misc_functions.h"
AOEvidenceDisplay::AOEvidenceDisplay(QWidget *p_parent, AOApplication *p_ao_app) : QLabel(p_parent)
{
ao_app = p_ao_app;
evidence_movie = new QMovie(this);
evidence_icon = new QLabel(this);
sfx_player = new AOSfxPlayer(this, ao_app);
connect(evidence_movie, SIGNAL(frameChanged(int)), this, SLOT(frame_change(int)));
}
void AOEvidenceDisplay::show_evidence(QString p_evidence_image, bool is_left_side, int p_volume)
{
this->reset();
sfx_player->set_volume(p_volume);
QString f_evidence_path = ao_app->get_evidence_path() + p_evidence_image;
QPixmap f_pixmap(f_evidence_path);
QString final_gif_path;
QString gif_name;
QString icon_identifier;
if (is_left_side)
{
icon_identifier = "left_evidence_icon";
gif_name = "evidence_appear_left.gif";
}
else
{
icon_identifier = "right_evidence_icon";
gif_name = "evidence_appear_right.gif";
}
pos_size_type icon_dimensions = ao_app->get_element_dimensions(icon_identifier, "courtroom_design.ini");
evidence_icon->move(icon_dimensions.x, icon_dimensions.y);
evidence_icon->resize(icon_dimensions.width, icon_dimensions.height);
evidence_icon->setPixmap(f_pixmap.scaled(evidence_icon->width(), evidence_icon->height(), Qt::IgnoreAspectRatio));
QString f_default_gif_path = ao_app->get_default_theme_path() + gif_name;
QString f_gif_path = ao_app->get_theme_path() + gif_name;
if (file_exists(f_gif_path))
final_gif_path = f_gif_path;
else
final_gif_path = f_default_gif_path;
evidence_movie->setFileName(final_gif_path);
if(evidence_movie->frameCount() < 1)
return;
this->setMovie(evidence_movie);
evidence_movie->start();
sfx_player->play(ao_app->get_sfx("evidence_present"));
}
void AOEvidenceDisplay::frame_change(int p_frame)
{
if (p_frame == (evidence_movie->frameCount() - 1))
{
//we need this or else the last frame wont show
delay(evidence_movie->nextFrameDelay());
evidence_movie->stop();
this->clear();
evidence_icon->show();
}
}
void AOEvidenceDisplay::reset()
{
sfx_player->stop();
evidence_movie->stop();
evidence_icon->hide();
this->clear();
}
QLabel* AOEvidenceDisplay::get_evidence_icon()
{
return evidence_icon;
}