File indexing completed on 2025-03-09 03:52:06

0001 /* ============================================================
0002  *
0003  * This file is a part of digiKam project
0004  * https://www.digikam.org
0005  *
0006  * Date        : 2008-09-14
0007  * Description : a presentation tool.
0008  *
0009  * SPDX-FileCopyrightText: 2008-2009 by Valerio Fuoglio <valerio dot fuoglio at gmail dot com>
0010  * SPDX-FileCopyrightText: 2009      by Andi Clemens <andi dot clemens at googlemail dot com>
0011  * SPDX-FileCopyrightText: 2012-2024 by Gilles Caulier <caulier dot gilles at gmail dot com>
0012  *
0013  * SPDX-License-Identifier: GPL-2.0-or-later
0014  *
0015  * ============================================================ */
0016 
0017 #ifndef DIGIKAM_PRESENTATION_AUDIO_WIDGET_H
0018 #define DIGIKAM_PRESENTATION_AUDIO_WIDGET_H
0019 
0020 #include "digikam_config.h"
0021 
0022 // Qt includes
0023 
0024 #include <QUrl>
0025 #include <QKeyEvent>
0026 
0027 #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) && defined HAVE_QTMULTIMEDIA
0028 
0029 // QtMultimedia includes
0030 
0031 #   include <QMediaPlayer>
0032 
0033 #else
0034 
0035 // QtAVPlayer includes
0036 
0037 #   include "daudioplayer.h"
0038 
0039 #endif
0040 
0041 // Local includes
0042 
0043 #include "ui_presentationaudiowidget.h"
0044 
0045 namespace DigikamGenericPresentationPlugin
0046 {
0047 
0048 class PresentationContainer;
0049 
0050 class PresentationAudioWidget : public QWidget,
0051                                 public Ui::PresentationAudioWidget
0052 {
0053     Q_OBJECT
0054 
0055 public:
0056 
0057     explicit PresentationAudioWidget(QWidget* const,
0058                                      const QList<QUrl>&,
0059                                      PresentationContainer* const);
0060     ~PresentationAudioWidget() override;
0061 
0062     void enqueue(const QList<QUrl>&);
0063     bool canHide() const;
0064     bool isPaused() const;
0065     void setPaused(bool);
0066     void keyPressEvent(QKeyEvent*) override;
0067 
0068 public Q_SLOTS:
0069 
0070     void slotPlay();
0071     void slotStop();
0072 
0073 Q_SIGNALS:
0074 
0075     void signalPlay();
0076     void signalPause();
0077 
0078 private Q_SLOTS:
0079 
0080     void slotPrev();
0081     void slotNext();
0082     void slotTimeUpdaterTimeout(qint64);
0083     void slotError();
0084     void slotSetVolume(int);
0085 
0086 #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) && defined HAVE_QTMULTIMEDIA
0087 
0088     void slotMediaStateChanged(QMediaPlayer::MediaStatus);
0089     void slotPlayerStateChanged(QMediaPlayer::PlaybackState);
0090     void slotPlayerError(QMediaPlayer::Error);
0091 
0092 #else
0093 
0094     void slotMediaStateChanged(QAVPlayer::MediaStatus);
0095     void slotPlayerStateChanged(QAVPlayer::State);
0096     void slotPlayerError(QAVPlayer::Error, const QString&);
0097 
0098 #endif
0099 
0100 private:
0101 
0102     void checkSkip();
0103     void setZeroTime();
0104 
0105 private:
0106 
0107     class Private;
0108     Private* const d;
0109 };
0110 
0111 } // namespace DigikamGenericPresentationPlugin
0112 
0113 #endif // DIGIKAM_PRESENTATION_AUDIO_WIDGET_H