File indexing completed on 2024-05-12 16:27:14
0001 /* 0002 SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 #pragma once 0007 #include "libruqolawidgets_private_export.h" 0008 #include <QUrl> 0009 #include <QWizard> 0010 class CreateSoundMessageWidget; 0011 class GenerateSoundMessagePage; 0012 class CreateSoundMessagePage; 0013 class QLineEdit; 0014 class PlaySoundWidget; 0015 class RocketChatAccount; 0016 0017 class LIBRUQOLAWIDGETS_TESTS_EXPORT CreateSoundMessageWizard : public QWizard 0018 { 0019 Q_OBJECT 0020 public: 0021 struct LIBRUQOLAWIDGETS_TESTS_EXPORT CreateSoundMessageInfo { 0022 QString mDescription; 0023 QString mFileName; 0024 QUrl mFileUrl; 0025 [[nodiscard]] bool isValid() const; 0026 }; 0027 0028 explicit CreateSoundMessageWizard(RocketChatAccount *account, QWidget *parent = nullptr); 0029 ~CreateSoundMessageWizard() override; 0030 0031 [[nodiscard]] CreateSoundMessageInfo soundMessageInfo() const; 0032 0033 private: 0034 LIBRUQOLAWIDGETS_NO_EXPORT void slotCurrentIdChanged(int id); 0035 LIBRUQOLAWIDGETS_NO_EXPORT void slotAccepted(); 0036 0037 enum CreateSoundMessageEnum { 0038 CreateSound, 0039 GenerateSoundMessage, 0040 }; 0041 CreateSoundMessagePage *const mCreateSoundMessagePage; 0042 GenerateSoundMessagePage *const mGenerateSoundMessagePage; 0043 }; 0044 0045 class LIBRUQOLAWIDGETS_TESTS_EXPORT CreateSoundMessagePage : public QWizardPage 0046 { 0047 Q_OBJECT 0048 public: 0049 explicit CreateSoundMessagePage(QWidget *parent = nullptr); 0050 ~CreateSoundMessagePage() override; 0051 0052 [[nodiscard]] QUrl fileNameUrl() const; 0053 0054 [[nodiscard]] bool validatePage() override; 0055 0056 [[nodiscard]] bool isComplete() const override; 0057 0058 void loadSettings(); 0059 void saveSettings(); 0060 0061 private: 0062 CreateSoundMessageWidget *const mCreateSoundMessageWidget; 0063 }; 0064 0065 class LIBRUQOLAWIDGETS_TESTS_EXPORT GenerateSoundMessagePage : public QWizardPage 0066 { 0067 Q_OBJECT 0068 public: 0069 explicit GenerateSoundMessagePage(RocketChatAccount *account, QWidget *parent = nullptr); 0070 ~GenerateSoundMessagePage() override; 0071 0072 [[nodiscard]] QString fileName() const; 0073 [[nodiscard]] QString description() const; 0074 [[nodiscard]] QUrl fileNameUrl() const; 0075 void setFileNamePath(const QString &path); 0076 0077 private: 0078 PlaySoundWidget *const mShowSoundWidget; 0079 QLineEdit *const mFileName; 0080 QLineEdit *const mDescription; 0081 }; 0082 0083 LIBRUQOLAWIDGETS_TESTS_EXPORT QDebug operator<<(QDebug d, const CreateSoundMessageWizard::CreateSoundMessageInfo &t);