File indexing completed on 2024-05-19 05:04:04
0001 /* 0002 SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "createvideomessagewizard.h" 0008 #include "createvideomessagewidget.h" 0009 #include "showvideowidget.h" 0010 #include <KConfigGroup> 0011 #include <KLineEditEventHandler> 0012 #include <KLocalizedString> 0013 #include <KSharedConfig> 0014 #include <KWindowConfig> 0015 #include <QLabel> 0016 #include <QLineEdit> 0017 #include <QPushButton> 0018 #include <QVBoxLayout> 0019 #include <QWindow> 0020 0021 namespace 0022 { 0023 static const char myConfigCreateVideoMessageWizardGroupName[] = "CreateVideoMessageWizard"; 0024 } 0025 CreateVideoMessageWizard::CreateVideoMessageWizard(RocketChatAccount *account, QWidget *parent) 0026 : QWizard(parent) 0027 , mCreateVideoMessagePage(new CreateVideoMessagePage(this)) 0028 , mCreateMessagePage(new GenerateVideoMessagePage(account, this)) 0029 { 0030 setWindowTitle(i18nc("@title:window", "Create Video Message")); 0031 setPage(CreateVideo, mCreateVideoMessagePage); 0032 setPage(CreateMessage, mCreateMessagePage); 0033 readConfig(); 0034 connect(this, &CreateVideoMessageWizard::currentIdChanged, this, &CreateVideoMessageWizard::slotCurrentIdChanged); 0035 setButtonText(QWizard::FinishButton, i18n("Send")); 0036 connect(this, &CreateVideoMessageWizard::finished, this, &CreateVideoMessageWizard::slotAccepted); 0037 mCreateVideoMessagePage->loadSettings(); 0038 } 0039 0040 CreateVideoMessageWizard::~CreateVideoMessageWizard() 0041 { 0042 writeConfig(); 0043 } 0044 0045 void CreateVideoMessageWizard::slotAccepted() 0046 { 0047 mCreateVideoMessagePage->saveSettings(); 0048 accepted(); 0049 } 0050 0051 void CreateVideoMessageWizard::slotCurrentIdChanged(int id) 0052 { 0053 if (id == CreateMessage) { 0054 mCreateMessagePage->setFileNamePath(mCreateVideoMessagePage->fileNamePath().toLocalFile()); 0055 } 0056 } 0057 0058 CreateVideoMessageWizard::CreateVideoMessageInfo CreateVideoMessageWizard::videoMessageInfo() const 0059 { 0060 CreateVideoMessageInfo info; 0061 info.mDescription = mCreateMessagePage->description(); 0062 info.mFileName = mCreateMessagePage->fileName(); 0063 info.mFileUrl = mCreateMessagePage->fileNameUrl(); 0064 return info; 0065 } 0066 0067 void CreateVideoMessageWizard::readConfig() 0068 { 0069 create(); // ensure a window is created 0070 windowHandle()->resize(QSize(800, 600)); 0071 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(myConfigCreateVideoMessageWizardGroupName)); 0072 KWindowConfig::restoreWindowSize(windowHandle(), group); 0073 resize(windowHandle()->size()); // workaround for QTBUG-40584 0074 } 0075 0076 void CreateVideoMessageWizard::writeConfig() 0077 { 0078 KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(myConfigCreateVideoMessageWizardGroupName)); 0079 KWindowConfig::saveWindowSize(windowHandle(), group); 0080 } 0081 0082 CreateVideoMessagePage::CreateVideoMessagePage(QWidget *parent) 0083 : QWizardPage(parent) 0084 , mCreateVideoMessageWidget(new CreateVideoMessageWidget(this)) 0085 { 0086 auto mainLayout = new QVBoxLayout(this); 0087 mainLayout->setObjectName(QStringLiteral("mainLayout")); 0088 0089 mCreateVideoMessageWidget->setObjectName(QStringLiteral("mCreateVideoMessageWidget")); 0090 mainLayout->addWidget(mCreateVideoMessageWidget); 0091 connect(mCreateVideoMessageWidget, &CreateVideoMessageWidget::recordDone, this, &CreateVideoMessagePage::completeChanged); 0092 } 0093 0094 CreateVideoMessagePage::~CreateVideoMessagePage() = default; 0095 0096 void CreateVideoMessagePage::loadSettings() 0097 { 0098 mCreateVideoMessageWidget->loadSettings(); 0099 } 0100 0101 void CreateVideoMessagePage::saveSettings() 0102 { 0103 mCreateVideoMessageWidget->saveSettings(); 0104 } 0105 0106 QUrl CreateVideoMessagePage::fileNamePath() const 0107 { 0108 return mCreateVideoMessageWidget->temporaryFilePath(); 0109 } 0110 0111 bool CreateVideoMessagePage::isComplete() const 0112 { 0113 return !mCreateVideoMessageWidget->temporaryFilePath().isEmpty(); 0114 } 0115 0116 bool CreateVideoMessagePage::validatePage() 0117 { 0118 return !mCreateVideoMessageWidget->temporaryFilePath().isEmpty(); 0119 } 0120 0121 GenerateVideoMessagePage::GenerateVideoMessagePage(RocketChatAccount *account, QWidget *parent) 0122 : QWizardPage(parent) 0123 , mShowVideoWidget(new ShowVideoWidget(account, this)) 0124 , mFileName(new QLineEdit(this)) 0125 , mDescription(new QLineEdit(this)) 0126 { 0127 auto mainLayout = new QVBoxLayout(this); 0128 mainLayout->setObjectName(QStringLiteral("mainLayout")); 0129 0130 mShowVideoWidget->setObjectName(QStringLiteral("mShowVideoWidget")); 0131 mainLayout->addWidget(mShowVideoWidget); 0132 0133 auto label = new QLabel(i18n("Filename:"), this); 0134 label->setObjectName(QStringLiteral("label-filename")); 0135 label->setTextFormat(Qt::PlainText); 0136 mainLayout->addWidget(label); 0137 0138 mFileName->setObjectName(QStringLiteral("mFileName")); 0139 mDescription->setObjectName(QStringLiteral("mDescription")); 0140 0141 KLineEditEventHandler::catchReturnKey(mFileName); 0142 KLineEditEventHandler::catchReturnKey(mDescription); 0143 0144 mainLayout->addWidget(mFileName); 0145 0146 label = new QLabel(i18n("Description:"), this); 0147 label->setObjectName(QStringLiteral("label-description")); 0148 label->setTextFormat(Qt::PlainText); 0149 mainLayout->addWidget(label); 0150 0151 mainLayout->addWidget(mDescription); 0152 } 0153 0154 GenerateVideoMessagePage::~GenerateVideoMessagePage() = default; 0155 0156 QString GenerateVideoMessagePage::fileName() const 0157 { 0158 return mFileName->text(); 0159 } 0160 0161 QString GenerateVideoMessagePage::description() const 0162 { 0163 return mDescription->text(); 0164 } 0165 0166 void GenerateVideoMessagePage::setFileNamePath(const QString &url) 0167 { 0168 mShowVideoWidget->setVideoPath(url); 0169 } 0170 0171 QUrl GenerateVideoMessagePage::fileNameUrl() const 0172 { 0173 return mShowVideoWidget->videoUrl(); 0174 } 0175 0176 QDebug operator<<(QDebug d, const CreateVideoMessageWizard::CreateVideoMessageInfo &t) 0177 { 0178 d << " mDescription " << t.mDescription; 0179 d << " mFileName " << t.mFileName; 0180 d << " mDescription " << t.mDescription; 0181 return d; 0182 } 0183 0184 bool CreateVideoMessageWizard::CreateVideoMessageInfo::isValid() const 0185 { 0186 return mFileUrl.isValid(); 0187 } 0188 0189 #include "moc_createvideomessagewizard.cpp"