File indexing completed on 2024-05-19 05:04:03
0001 /* 0002 SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 #include "libruqolawidgets_private_export.h" 0009 #include <QMediaCaptureSession> 0010 #include <QMediaRecorder> 0011 #include <QWidget> 0012 class QToolButton; 0013 class QLabel; 0014 class QTemporaryFile; 0015 class QComboBox; 0016 class KMessageWidget; 0017 class LIBRUQOLAWIDGETS_TESTS_EXPORT CreateSoundMessageWidget : public QWidget 0018 { 0019 Q_OBJECT 0020 public: 0021 explicit CreateSoundMessageWidget(QWidget *parent = nullptr); 0022 ~CreateSoundMessageWidget() override; 0023 0024 [[nodiscard]] QUrl temporaryFilePath() const; 0025 0026 void loadSettings(); 0027 void saveSettings(); 0028 0029 Q_SIGNALS: 0030 void recordDone(); 0031 0032 private: 0033 LIBRUQOLAWIDGETS_NO_EXPORT void stop(); 0034 LIBRUQOLAWIDGETS_NO_EXPORT void record(); 0035 LIBRUQOLAWIDGETS_NO_EXPORT void pause(); 0036 LIBRUQOLAWIDGETS_NO_EXPORT void updateRecorderState(QMediaRecorder::RecorderState state); 0037 LIBRUQOLAWIDGETS_NO_EXPORT void updateRecordTime(qint64 duration); 0038 LIBRUQOLAWIDGETS_NO_EXPORT void initializeInput(); 0039 LIBRUQOLAWIDGETS_NO_EXPORT void displayRecorderError(); 0040 QToolButton *const mRecordButton; 0041 QToolButton *const mPauseButton; 0042 QToolButton *const mStopButton; 0043 QLabel *const mLabelDuration; 0044 QMediaCaptureSession mCaptureSession; 0045 QMediaRecorder *mAudioRecorder = nullptr; 0046 QComboBox *const mDeviceComboBox; 0047 QTemporaryFile *mTemporaryFile = nullptr; 0048 KMessageWidget *const mMessageWidget; 0049 };