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 };