┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/information/mediawidget.cpp
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2025-05-03 11:13:33 +0200
committerMéven Car <[email protected]>2025-06-28 11:55:38 +0200
commit58c48052c38e5bb4f6cf8047dc71e40cfbf04403 (patch)
tree155f7ae706eef26fe31f6f9b69ac0d3c6f3dbb5c /src/panels/information/mediawidget.cpp
parent8216a67d58af0fd709bb3bfb8d0b6073b11cdfed (diff)
mediawidget: bind arrow keys to slide in media
Diffstat (limited to 'src/panels/information/mediawidget.cpp')
-rw-r--r--src/panels/information/mediawidget.cpp33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/panels/information/mediawidget.cpp b/src/panels/information/mediawidget.cpp
index 345cb0201..3ef046909 100644
--- a/src/panels/information/mediawidget.cpp
+++ b/src/panels/information/mediawidget.cpp
@@ -18,6 +18,8 @@
#include <QStyleOptionSlider>
#include <QToolButton>
#include <QVBoxLayout>
+#include <qnamespace.h>
+#include <qwidget.h>
class EmbeddedVideoPlayer : public QVideoWidget
{
@@ -108,6 +110,32 @@ protected:
QSlider::mousePressEvent(event);
}
}
+
+ void keyPressEvent(QKeyEvent *event) override
+ {
+ int newPosition = -1;
+ if (event->key() == Qt::Key_Right) {
+ // slide right 1%
+ newPosition = std::min(maximum(), sliderPosition() + maximum() / 100);
+ } else if (event->key() == Qt::Key_Left) {
+ // slide left 1%
+ newPosition = std::max(0, sliderPosition() - maximum() / 100);
+ }
+
+ if (newPosition != -1) {
+ event->accept();
+
+ if (newPosition != sliderPosition()) {
+ setSliderPosition(newPosition);
+ triggerAction(SliderMove);
+ setRepeatAction(SliderNoAction);
+
+ Q_EMIT sliderMoved(newPosition);
+ }
+ } else {
+ QSlider::keyPressEvent(event);
+ }
+ }
};
MediaWidget::MediaWidget(QWidget *parent)
@@ -231,11 +259,6 @@ void MediaWidget::showEvent(QShowEvent *event)
m_pauseButton->setAutoRaise(true);
m_pauseButton->hide();
connect(m_pauseButton, &QToolButton::clicked, this, &MediaWidget::togglePlayback);
-
- // Creating an audio player or video player instance might take up to
- // 2 seconds when doing it the first time. To prevent that the user
- // interface gets noticeable blocked, the creation is delayed until
- // the play button has been pressed (see PhononWidget::play()).
}
}