You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
3.9 KiB

//------------------------------------------------------------------------------
//
// Project: Anonymizer
//
// Brno University of Technology
// Faculty of Information Technology
//
//------------------------------------------------------------------------------
//
// This project was financially supported by project VG20102015006 funds
// provided by Ministry of the Interior of the Czech republic.
//
//------------------------------------------------------------------------------
/*!
@file playerslider.cpp
@brief Implementation of methods ...
@details Details
@authors Martin Borek (mborekcz@gmail.com)
@authors Filip Orsag (orsag@fit.vutbr.cz)
@date 2014-2015
@note This project was supported by MV CR project VG20102015006.
@copyright BUT OPEN SOURCE LICENCE (see License.txt)
*/
#include "playerslider.h"
#include <QDebug>
PlayerSlider::PlayerSlider(QWidget *parent) : QSlider(parent)
{
}
/* When mouse is pressed at a position different than the controller, signal with
* the position is emitted so that the video can jump to the frame.*/
/**
void PlayerSlider::mousePressEvent(QMouseEvent *event)
{
// QSlider mousePressEvent needs to be called so that signals
// sliderPressed with sliderMoved are emitted correctly.
// It also sets flag SliderDown when the "controller" is pressed
// and therefore no further action is needed since the pressed position
// is the current one.
QSlider::mousePressEvent(event);
if (isSliderDown())
return;
if (event->button() == Qt::LeftButton)
{
int position;
double value = 0; //0-1
if (orientation() == Qt::Horizontal)
value = event->x() / static_cast<double>(width()-1);
else // ==Qt::Vertical
value = event->y() / static_cast<double>(height()-1);
// Position is more accurate when floor() is used at the beginning
// and ceil() at the end.
if (value < 0.3)
position = floor(minimum() + (maximum()-minimum()) * value);
else if (value > 0.7)
position = ceil(minimum() + (maximum()-minimum()) * value);
else
position = round(minimum() + (maximum()-minimum()) * value);
emit sliderMoved(position);
event->accept();
}
}
*/
void PlayerSlider::mouseReleaseEvent(QMouseEvent *event)
{
qDebug() << "clicked";
// QSlider mousePressEvent needs to be called so that signals
// sliderPressed with sliderMoved are emitted correctly.
// It also sets flag SliderDown when the "controller" is pressed
// and therefore no further action is needed since the pressed position
// is the current one.
QSlider::mouseReleaseEvent(event);
if (isSliderDown())
return;
if (event->button() == Qt::LeftButton)
{
long position;
double value = 0; //0-1
if (orientation() == Qt::Horizontal)
value = event->x() / static_cast<double>(width()-1);
else // ==Qt::Vertical
value = event->y() / static_cast<double>(height()-1);
// Position is more accurate when floor() is used at the beginning
// and ceil() at the end.
if (value < 0.3)
position = floor(minimum() + (maximum()-minimum()) * value);
else if (value > 0.7)
position = ceil(minimum() + (maximum()-minimum()) * value);
else
position = round(minimum() + (maximum()-minimum()) * value);
//unsigned long maximum = this->maximum();
//unsigned long minimum = this->minimum();
if (position > maximum())
position = maximum();
else if (position < minimum())
position = minimum();
qDebug() << "position" << position;
unsigned long returnPosition = position;
emit clicked(returnPosition);
event->accept();
}
}
PlayerSlider::~PlayerSlider()
{
}