File indexing completed on 2024-05-12 16:27:17

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 "uploadfilewidget.h"
0008 #include "misc/lineeditcatchreturnkey.h"
0009 #include <KLocalizedString>
0010 #include <KUrlRequester>
0011 
0012 #include <KLineEdit>
0013 #include <QFormLayout>
0014 #include <QLabel>
0015 
0016 UploadFileWidget::UploadFileWidget(QWidget *parent)
0017     : QWidget(parent)
0018     , mDescription(new QLineEdit(this))
0019     , mSelectFile(new KUrlRequester(this))
0020     , mImagePreview(new QLabel(this))
0021     , mFileLabel(new QLabel(i18n("File:"), this))
0022 {
0023     auto mainLayout = new QVBoxLayout(this);
0024     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0025     mainLayout->setContentsMargins({});
0026 
0027     mImagePreview->setObjectName(QStringLiteral("mImagePreview"));
0028     mainLayout->addWidget(mImagePreview, 0, Qt::AlignCenter);
0029     mImagePreview->hide(); // Hide by default
0030 
0031     auto layout = new QFormLayout;
0032     layout->setObjectName(QStringLiteral("layout"));
0033     layout->setContentsMargins({});
0034     mainLayout->addLayout(layout);
0035 
0036     mDescription->setObjectName(QStringLiteral("mDescription"));
0037     mDescription->setClearButtonEnabled(true);
0038     layout->addRow(i18n("Description:"), mDescription);
0039     new LineEditCatchReturnKey(mDescription, this);
0040 
0041     mSelectFile->setObjectName(QStringLiteral("mSelectFile"));
0042     mFileLabel->setObjectName(QStringLiteral("mFileLabel"));
0043     layout->addRow(mFileLabel, mSelectFile);
0044 
0045     connect(mSelectFile->lineEdit(), &KLineEdit::textChanged, this, [this](const QString &str) {
0046         Q_EMIT updateOkButton(!str.trimmed().isEmpty());
0047     });
0048 }
0049 
0050 UploadFileWidget::~UploadFileWidget() = default;
0051 
0052 QString UploadFileWidget::description() const
0053 {
0054     return mDescription->text();
0055 }
0056 
0057 QUrl UploadFileWidget::fileUrl() const
0058 {
0059     return mSelectFile->url();
0060 }
0061 
0062 void UploadFileWidget::setFileUrl(const QUrl &url)
0063 {
0064     mSelectFile->setUrl(url);
0065 }
0066 
0067 void UploadFileWidget::setPixmap(const QPixmap &pix)
0068 {
0069     if (!pix.isNull()) {
0070         mSelectFile->setVisible(false);
0071         mFileLabel->setVisible(false);
0072         mImagePreview->setVisible(true);
0073         mImagePreview->setPixmap(pix);
0074     }
0075 }
0076 
0077 void UploadFileWidget::setAuthorizedMediaTypes(const QStringList &mediaTypes)
0078 {
0079     mSelectFile->setMimeTypeFilters(mediaTypes);
0080 }
0081 
0082 #include "moc_uploadfilewidget.cpp"