File indexing completed on 2024-04-28 15:40:27
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: