1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #include "slider-absoluteset-style.hpp"
- #include "media-slider.hpp"
- #include <QStyleFactory>
- MediaSlider::MediaSlider(QWidget *parent) : SliderIgnoreScroll(parent)
- {
- installEventFilter(this);
- setMouseTracking(true);
- QString styleName = style()->objectName();
- QStyle *style;
- style = QStyleFactory::create(styleName);
- if (!style) {
- style = new SliderAbsoluteSetStyle();
- } else {
- style = new SliderAbsoluteSetStyle(style);
- }
- style->setParent(this);
- this->setStyle(style);
- }
- void MediaSlider::mouseMoveEvent(QMouseEvent *event)
- {
- int val = minimum() +
- ((maximum() - minimum()) * event->pos().x()) / width();
- if (val > maximum())
- val = maximum();
- else if (val < minimum())
- val = minimum();
- emit mediaSliderHovered(val);
- event->accept();
- QSlider::mouseMoveEvent(event);
- }
- bool MediaSlider::eventFilter(QObject *obj, QEvent *event)
- {
- if (event->type() == QEvent::KeyPress) {
- QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
- if (keyEvent->key() == Qt::Key_Up ||
- keyEvent->key() == Qt::Key_Down) {
- return true;
- }
- }
- if (event->type() == QEvent::Wheel)
- return true;
- return QSlider::eventFilter(obj, event);
- }
|