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"