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