- public:
- PhononWidget(QWidget *parent = 0);
- void setUrl(const KUrl &url);
-
- private slots:
- void stateChanged(Phonon::State);
- void play();
- void stop();
-
- private:
- void requestMedia();
-
- private:
- KUrl m_url;
- QToolButton *m_playButton;
- QToolButton *m_stopButton;
- Phonon::MediaObject *m_media;
- Phonon::SeekSlider *m_seekSlider;
+public:
+ enum MediaKind { Video, Audio };
+
+ explicit PhononWidget(QWidget *parent = nullptr);
+
+ void setUrl(const QUrl &url, MediaKind kind);
+ QUrl url() const;
+ void clearUrl();
+
+ void setVideoSize(const QSize &size);
+ QSize videoSize() const;
+ Phonon::State 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 stateChanged(Phonon::State newstate);
+ void stop();
+ void finished();
+
+private:
+ void applyVideoSize();
+
+private:
+ void togglePlayback();
+
+ QUrl m_url;
+ QSize m_videoSize;
+
+ QToolButton *m_playButton;
+ QToolButton *m_pauseButton;
+
+ QVBoxLayout *m_topLayout;
+ Phonon::MediaObject *m_media;
+ Phonon::SeekSlider *m_seekSlider;
+ Phonon::AudioOutput *m_audioOutput;
+ EmbeddedVideoPlayer *m_videoPlayer;
+ bool m_autoPlay;
+ bool m_isVideo;