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 
0007 #include "createsoundmessagewizard.h"
0008 #include "createsoundmessagewidget.h"
0009 #include "misc/lineeditcatchreturnkey.h"
0010 #include "playsoundwidget.h"
0011 #include <KLocalizedString>
0012 #include <QLabel>
0013 #include <QLineEdit>
0014 #include <QPushButton>
0015 #include <QVBoxLayout>
0016 
0017 CreateSoundMessageWizard::CreateSoundMessageWizard(RocketChatAccount *account, QWidget *parent)
0018     : QWizard(parent)
0019     , mCreateSoundMessagePage(new CreateSoundMessagePage(this))
0020     , mGenerateSoundMessagePage(new GenerateSoundMessagePage(account, this))
0021 
0022 {
0023     setWindowTitle(i18nc("@title:window", "Create Sound Message"));
0024     setPage(CreateSound, mCreateSoundMessagePage);
0025     setPage(GenerateSoundMessage, mGenerateSoundMessagePage);
0026     connect(this, &CreateSoundMessageWizard::currentIdChanged, this, &CreateSoundMessageWizard::slotCurrentIdChanged);
0027     setButtonText(QWizard::FinishButton, i18n("Send"));
0028     connect(this, &CreateSoundMessageWizard::finished, this, &CreateSoundMessageWizard::slotAccepted);
0029     mCreateSoundMessagePage->loadSettings();
0030 }
0031 
0032 void CreateSoundMessageWizard::slotAccepted()
0033 {
0034     mCreateSoundMessagePage->saveSettings();
0035     accepted();
0036 }
0037 
0038 CreateSoundMessageWizard::CreateSoundMessageInfo CreateSoundMessageWizard::soundMessageInfo() const
0039 {
0040     CreateSoundMessageWizard::CreateSoundMessageInfo info;
0041     info.mDescription = mGenerateSoundMessagePage->description();
0042     info.mFileName = mGenerateSoundMessagePage->fileName();
0043     info.mFileUrl = mGenerateSoundMessagePage->fileNameUrl();
0044     return info;
0045 }
0046 
0047 CreateSoundMessageWizard::~CreateSoundMessageWizard() = default;
0048 
0049 void CreateSoundMessageWizard::slotCurrentIdChanged(int id)
0050 {
0051     if (id == GenerateSoundMessage) {
0052         mGenerateSoundMessagePage->setFileNamePath(mCreateSoundMessagePage->fileNameUrl().toLocalFile());
0053     }
0054 }
0055 
0056 CreateSoundMessagePage::CreateSoundMessagePage(QWidget *parent)
0057     : QWizardPage(parent)
0058     , mCreateSoundMessageWidget(new CreateSoundMessageWidget(this))
0059 {
0060     auto mainLayout = new QVBoxLayout(this);
0061     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0062 
0063     mCreateSoundMessageWidget->setObjectName(QStringLiteral("mCreateSoundMessageWidget"));
0064     mainLayout->addWidget(mCreateSoundMessageWidget);
0065     connect(mCreateSoundMessageWidget, &CreateSoundMessageWidget::recordDone, this, &CreateSoundMessagePage::completeChanged);
0066 }
0067 
0068 QUrl CreateSoundMessagePage::fileNameUrl() const
0069 {
0070     return mCreateSoundMessageWidget->temporaryFilePath();
0071 }
0072 
0073 bool CreateSoundMessagePage::isComplete() const
0074 {
0075     return !mCreateSoundMessageWidget->temporaryFilePath().isEmpty();
0076 }
0077 
0078 void CreateSoundMessagePage::loadSettings()
0079 {
0080     mCreateSoundMessageWidget->loadSettings();
0081 }
0082 
0083 void CreateSoundMessagePage::saveSettings()
0084 {
0085     mCreateSoundMessageWidget->saveSettings();
0086 }
0087 
0088 bool CreateSoundMessagePage::validatePage()
0089 {
0090     return !mCreateSoundMessageWidget->temporaryFilePath().isEmpty();
0091 }
0092 
0093 CreateSoundMessagePage::~CreateSoundMessagePage() = default;
0094 
0095 GenerateSoundMessagePage::GenerateSoundMessagePage(RocketChatAccount *account, QWidget *parent)
0096     : QWizardPage(parent)
0097     , mShowSoundWidget(new PlaySoundWidget(account, this))
0098     , mFileName(new QLineEdit(this))
0099     , mDescription(new QLineEdit(this))
0100 {
0101     auto mainLayout = new QVBoxLayout(this);
0102     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0103 
0104     mShowSoundWidget->setObjectName(QStringLiteral("mShowSoundWidget"));
0105     mainLayout->addWidget(mShowSoundWidget);
0106 
0107     auto label = new QLabel(i18n("Filename:"), this);
0108     label->setTextFormat(Qt::PlainText);
0109     mainLayout->addWidget(label);
0110 
0111     mFileName->setObjectName(QStringLiteral("mFileName"));
0112 
0113     mDescription->setObjectName(QStringLiteral("mDescription"));
0114 
0115     mainLayout->addWidget(mFileName);
0116 
0117     new LineEditCatchReturnKey(mFileName, this);
0118     new LineEditCatchReturnKey(mDescription, this);
0119 
0120     label = new QLabel(i18n("Description:"), this);
0121     label->setTextFormat(Qt::PlainText);
0122     mainLayout->addWidget(label);
0123 
0124     mainLayout->addWidget(mDescription);
0125 }
0126 
0127 GenerateSoundMessagePage::~GenerateSoundMessagePage() = default;
0128 
0129 void GenerateSoundMessagePage::setFileNamePath(const QString &path)
0130 {
0131     mShowSoundWidget->setAudioPath(path);
0132 }
0133 
0134 QUrl GenerateSoundMessagePage::fileNameUrl() const
0135 {
0136     return mShowSoundWidget->audioUrl();
0137 }
0138 
0139 QString GenerateSoundMessagePage::fileName() const
0140 {
0141     return mFileName->text();
0142 }
0143 
0144 QString GenerateSoundMessagePage::description() const
0145 {
0146     return mDescription->text();
0147 }
0148 
0149 QDebug operator<<(QDebug d, const CreateSoundMessageWizard::CreateSoundMessageInfo &t)
0150 {
0151     d << " mDescription " << t.mDescription;
0152     d << " mFileName " << t.mFileName;
0153     d << " mDescription " << t.mDescription;
0154     return d;
0155 }
0156 
0157 #include "moc_createsoundmessagewizard.cpp"