File indexing completed on 2024-05-19 16:00:11

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 #include "libruqolawidgets_private_export.h"
0009 #include <QDebug>
0010 #include <QUrl>
0011 #include <QWizard>
0012 class GenerateVideoMessagePage;
0013 class CreateVideoMessagePage;
0014 class CreateVideoMessageWidget;
0015 class ShowVideoWidget;
0016 class QLineEdit;
0017 class RocketChatAccount;
0018 
0019 class LIBRUQOLAWIDGETS_TESTS_EXPORT CreateVideoMessageWizard : public QWizard
0020 {
0021     Q_OBJECT
0022 public:
0023     struct LIBRUQOLAWIDGETS_TESTS_EXPORT CreateVideoMessageInfo {
0024         QString mDescription;
0025         QString mFileName;
0026         QUrl mFileUrl;
0027         [[nodiscard]] bool isValid() const;
0028     };
0029 
0030     explicit CreateVideoMessageWizard(RocketChatAccount *account, QWidget *parent = nullptr);
0031     ~CreateVideoMessageWizard() override;
0032 
0033     [[nodiscard]] CreateVideoMessageInfo videoMessageInfo() const;
0034 
0035 private:
0036     LIBRUQOLAWIDGETS_NO_EXPORT void readConfig();
0037     LIBRUQOLAWIDGETS_NO_EXPORT void writeConfig();
0038     LIBRUQOLAWIDGETS_NO_EXPORT void slotCurrentIdChanged(int id);
0039     LIBRUQOLAWIDGETS_NO_EXPORT void slotAccepted();
0040     enum CreateVideoMessageEnum {
0041         CreateVideo,
0042         CreateMessage,
0043     };
0044     CreateVideoMessagePage *const mCreateVideoMessagePage;
0045     GenerateVideoMessagePage *const mCreateMessagePage;
0046 };
0047 
0048 class LIBRUQOLAWIDGETS_TESTS_EXPORT CreateVideoMessagePage : public QWizardPage
0049 {
0050     Q_OBJECT
0051 public:
0052     explicit CreateVideoMessagePage(QWidget *parent = nullptr);
0053     ~CreateVideoMessagePage() override;
0054 
0055     [[nodiscard]] bool validatePage() override;
0056 
0057     [[nodiscard]] QUrl fileNamePath() const;
0058 
0059     [[nodiscard]] bool isComplete() const override;
0060 
0061     void loadSettings();
0062     void saveSettings();
0063 
0064 private:
0065     CreateVideoMessageWidget *const mCreateVideoMessageWidget;
0066 };
0067 
0068 class LIBRUQOLAWIDGETS_TESTS_EXPORT GenerateVideoMessagePage : public QWizardPage
0069 {
0070     Q_OBJECT
0071 public:
0072     explicit GenerateVideoMessagePage(RocketChatAccount *account, QWidget *parent = nullptr);
0073     ~GenerateVideoMessagePage() override;
0074 
0075     [[nodiscard]] QString fileName() const;
0076     [[nodiscard]] QString description() const;
0077     void setFileNamePath(const QString &url);
0078     [[nodiscard]] QUrl fileNameUrl() const;
0079 
0080 private:
0081     ShowVideoWidget *const mShowVideoWidget;
0082     QLineEdit *const mFileName;
0083     QLineEdit *const mDescription;
0084 };
0085 
0086 LIBRUQOLAWIDGETS_TESTS_EXPORT QDebug operator<<(QDebug d, const CreateVideoMessageWizard::CreateVideoMessageInfo &t);