File indexing completed on 2024-04-28 04:21:26

0001 // SPDX-FileCopyrightText: 2003-2021 The KPhotoAlbum Development Team
0002 // SPDX-FileCopyrightText: 2022 Johannes Zarl-Zierl <johannes@zarl-zierl.at>
0003 //
0004 // SPDX-License-Identifier: GPL-2.0-or-later
0005 
0006 #pragma once
0007 
0008 #include "AbstractDisplay.h"
0009 #include "VideoDisplay.h"
0010 
0011 #include <QResizeEvent>
0012 #include <phonon/mediaobject.h>
0013 
0014 namespace Phonon
0015 {
0016 class VideoWidget;
0017 class AudioOutput;
0018 }
0019 
0020 namespace Viewer
0021 {
0022 
0023 class PhononDisplay : public Viewer::VideoDisplay
0024 {
0025     Q_OBJECT
0026 
0027 public:
0028     explicit PhononDisplay(QWidget *parent);
0029     ~PhononDisplay() override;
0030     bool setImageImpl(DB::ImageInfoPtr info, bool forward) override;
0031     bool isPaused() const override;
0032     bool isPlaying() const override;
0033     QImage screenShoot() override;
0034     void relativeSeek(int msec) override;
0035 
0036 Q_SIGNALS:
0037     void stopped();
0038 
0039 public Q_SLOTS:
0040     void zoomIn() override;
0041     void zoomOut() override;
0042     void zoomFull() override;
0043     void zoomPixelForPixel() override;
0044     void stop() override;
0045     void playPause() override;
0046     void restart() override;
0047     void rotate(const DB::ImageInfoPtr &info) override;
0048     void changeVolume(int newVolumePercent);
0049     void setMuted(bool mute);
0050 
0051 private Q_SLOTS:
0052     void phononStateChanged(Phonon::State, Phonon::State);
0053     void updateVolume(qreal newVolumeVolt);
0054     void updateMuteState(bool mute);
0055 
0056 protected:
0057     void resize(double factor);
0058     void resizeEvent(QResizeEvent *) override;
0059     void setup();
0060     void setVideoWidgetSize();
0061 
0062     enum ZoomType { FullZoom,
0063                     PixelForPixelZoom,
0064                     FixedZoom };
0065 
0066 private:
0067     Phonon::MediaObject *m_mediaObject = nullptr;
0068     Phonon::VideoWidget *m_videoWidget = nullptr;
0069     Phonon::AudioOutput *m_audioDevice = nullptr;
0070     class VideoToolBar *m_videoToolBar = nullptr;
0071     ZoomType m_zoomType = FullZoom;
0072     double m_zoomFactor = 1;
0073 };
0074 
0075 }
0076 
0077 // vi:expandtab:tabstop=4 shiftwidth=4: