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