File indexing completed on 2024-05-12 16:27:14

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "libruqolawidgets_private_export.h"
0010 #include <QMediaCaptureSession>
0011 #include <QMediaRecorder>
0012 #include <QTemporaryFile>
0013 #include <QWidget>
0014 class QLabel;
0015 class QCamera;
0016 class QComboBox;
0017 class QVideoWidget;
0018 class QCameraDevice;
0019 class QToolButton;
0020 class KMessageWidget;
0021 class QAudioInput;
0022 class LIBRUQOLAWIDGETS_TESTS_EXPORT CreateVideoMessageWidget : public QWidget
0023 {
0024     Q_OBJECT
0025 public:
0026     explicit CreateVideoMessageWidget(QWidget *parent = nullptr);
0027     ~CreateVideoMessageWidget() override;
0028 
0029     [[nodiscard]] QUrl temporaryFilePath() const;
0030 
0031     void loadSettings();
0032     void saveSettings();
0033 
0034 Q_SIGNALS:
0035     void recordDone();
0036 
0037 private:
0038     LIBRUQOLAWIDGETS_NO_EXPORT void updateCameras();
0039     LIBRUQOLAWIDGETS_NO_EXPORT void setCamera(const QCameraDevice &cameraDevice);
0040     LIBRUQOLAWIDGETS_NO_EXPORT void updateRecorderState(QMediaRecorder::RecorderState state);
0041     LIBRUQOLAWIDGETS_NO_EXPORT void record();
0042     LIBRUQOLAWIDGETS_NO_EXPORT void pause();
0043     LIBRUQOLAWIDGETS_NO_EXPORT void stop();
0044     LIBRUQOLAWIDGETS_NO_EXPORT void updateRecordTime();
0045     LIBRUQOLAWIDGETS_NO_EXPORT void displayRecorderError();
0046     LIBRUQOLAWIDGETS_NO_EXPORT void updateCameraActive(bool active);
0047     LIBRUQOLAWIDGETS_NO_EXPORT void displayCameraError();
0048 
0049     QTemporaryFile *mTemporaryFile = nullptr;
0050     QVideoWidget *const mVideoWidget;
0051     QScopedPointer<QMediaRecorder> mMediaRecorder;
0052     QScopedPointer<QAudioInput> mAudioInput;
0053     QMediaCaptureSession mCaptureSession;
0054     QScopedPointer<QCamera> mCamera;
0055     QComboBox *const mListCamera;
0056     QToolButton *const mRecordButton;
0057     QToolButton *const mPauseButton;
0058     QToolButton *const mStopButton;
0059     QLabel *const mDurationLabel;
0060     KMessageWidget *const mMessageWidget;
0061 };