┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/information/mediawidget.h
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2019-06-23 17:36:38 +0200
committerMéven Car <[email protected]>2025-06-28 11:55:38 +0200
commit8216a67d58af0fd709bb3bfb8d0b6073b11cdfed (patch)
tree7e1e1d47da3df191b0443341e42e0dcb800907bd /src/panels/information/mediawidget.h
parent781e8e9e18579c0fe368ed9fe295f908493272b3 (diff)
InformationPanel: Port from Phonon to QtMultimedia
Diffstat (limited to 'src/panels/information/mediawidget.h')
-rw-r--r--src/panels/information/mediawidget.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/src/panels/information/mediawidget.h b/src/panels/information/mediawidget.h
new file mode 100644
index 000000000..bd04266e6
--- /dev/null
+++ b/src/panels/information/mediawidget.h
@@ -0,0 +1,88 @@
+/*
+ SPDX-FileCopyrightText: 2007 Matthias Kretz <[email protected]>
+
+ SPDX-License-Identifier: GPL-2.0-or-later
+*/
+
+#ifndef MEDIAWIDGET_H
+#define MEDIAWIDGET_H
+
+#include <QSize>
+#include <QSlider>
+#include <QUrl>
+#include <QWidget>
+
+#include <QMediaPlayer>
+
+class QMediaPlayer;
+class SeekSlider;
+
+class EmbeddedVideoPlayer;
+class QToolButton;
+class QVBoxLayout;
+
+class MediaWidget : public QWidget
+{
+ Q_OBJECT
+public:
+ enum MediaKind { Video, Audio };
+
+ explicit MediaWidget(QWidget *parent = nullptr);
+
+ void setUrl(const QUrl &url, MediaKind kind);
+ QUrl url() const;
+ void clearUrl();
+
+ void setVideoSize(const QSize &size);
+ QSize videoSize() const;
+ QMediaPlayer::PlaybackState state() const;
+
+ void setAutoPlay(bool autoPlay);
+ bool eventFilter(QObject *object, QEvent *event) override;
+
+Q_SIGNALS:
+ /**
+ * Is emitted whenever the video-state
+ * has changed: If true is returned, a video
+ * including control-buttons will be shown.
+ * If false is returned, no video is shown
+ * and the control-buttons are available for
+ * audio only.
+ */
+ void hasVideoChanged(bool hasVideo);
+
+public Q_SLOTS:
+ void play();
+
+protected:
+ void showEvent(QShowEvent *event) override;
+ void hideEvent(QHideEvent *event) override;
+
+private Q_SLOTS:
+ void stop();
+ void finished();
+ void setPosition(qint64 position);
+ void onStateChanged(QMediaPlayer::PlaybackState newState);
+ void onPositionChanged(qint64 position);
+ void onDurationChanged(qint64 position);
+
+private:
+ void applyVideoSize();
+ void togglePlayback();
+ void initPlayer();
+
+ QUrl m_url;
+ QSize m_videoSize;
+
+ QToolButton *m_playButton;
+ QToolButton *m_pauseButton;
+
+ QVBoxLayout *m_topLayout;
+ QMediaPlayer *m_player;
+ QSlider *m_seekSlider;
+ EmbeddedVideoPlayer *m_videoWidget;
+ bool m_autoPlay;
+ bool m_isVideo;
+};
+
+#endif // MEDIAWIDGET_H