X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/8eb9b508ca87fb1d634d8b8ba62c054ed04466d2..cebcf8db:/src/panels/information/phononwidget.h diff --git a/src/panels/information/phononwidget.h b/src/panels/information/phononwidget.h index 1e1ea37e9..a0a913b4f 100644 --- a/src/panels/information/phononwidget.h +++ b/src/panels/information/phononwidget.h @@ -1,38 +1,24 @@ -/* This file is part of the KDE project - Copyright (C) 2007 Matthias Kretz - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. +/* + SPDX-FileCopyrightText: 2007 Matthias Kretz + SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef PHONONWIDGET_H #define PHONONWIDGET_H -#include +#include #include +#include #include -#include - namespace Phonon { - class MediaObject; - class SeekSlider; - class VideoPlayer; +class AudioOutput; +class MediaObject; +class SeekSlider; +class VideoPlayer; } // namespace Phonon class EmbeddedVideoPlayer; @@ -42,53 +28,64 @@ class QVBoxLayout; class PhononWidget : public QWidget { Q_OBJECT - public: - enum Mode - { - Audio, - Video - }; - - PhononWidget(QWidget *parent = 0); - - void setUrl(const KUrl &url); - KUrl url() const; - - void setMode(Mode mode); - Mode mode() const; - - void setVideoSize(const QSize& size); - QSize videoSize() const; - - signals: - void playingStarted(); - void playingStopped(); - - protected: - virtual void showEvent(QShowEvent *event); - virtual void hideEvent(QHideEvent *event); - - private slots: - void stateChanged(Phonon::State); - void play(); - void stop(); - - private: - void applyVideoSize(); - - private: - Mode m_mode; - KUrl m_url; - QSize m_videoSize; - - QToolButton *m_playButton; - QToolButton *m_stopButton; - - QVBoxLayout *m_topLayout; - Phonon::MediaObject *m_audioMedia; - Phonon::MediaObject *m_media; - Phonon::SeekSlider *m_seekSlider; - EmbeddedVideoPlayer *m_videoPlayer; +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; }; #endif // PHONONWIDGET_H