File indexing completed on 2025-02-16 04:49:25

0001 /*
0002     SPDX-FileCopyrightText: 2019-2024 Laurent Montel <montel@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "markdowncreateimagewidget.h"
0008 #include <KLocalizedString>
0009 #include <QCheckBox>
0010 #include <QFormLayout>
0011 #include <QLabel>
0012 #include <QLineEdit>
0013 #include <QSpinBox>
0014 MarkdownCreateImageWidget::MarkdownCreateImageWidget(QWidget *parent)
0015     : QWidget(parent)
0016     , mTitle(new QLineEdit(this))
0017     , mImageUrl(new QLineEdit(this))
0018     , mAlternateText(new QLineEdit(this))
0019     , mKeepOriginalSize(new QCheckBox(i18n("Keep original size"), this))
0020     , mLabWidth(new QLabel(i18n("Width:"), this))
0021     , mWidth(new QSpinBox(this))
0022     , mLabHeight(new QLabel(i18n("Height:"), this))
0023     , mHeight(new QSpinBox(this))
0024 {
0025     auto mainLayout = new QFormLayout(this);
0026     mainLayout->setObjectName(QLatin1StringView("mainlayout"));
0027     mainLayout->setContentsMargins({});
0028 
0029     mTitle->setObjectName(QLatin1StringView("title"));
0030     mTitle->setClearButtonEnabled(true);
0031     connect(mTitle, &QLineEdit::textChanged, this, &MarkdownCreateImageWidget::slotEnableButton);
0032     mImageUrl->setObjectName(QLatin1StringView("image"));
0033     mImageUrl->setClearButtonEnabled(true);
0034     connect(mImageUrl, &QLineEdit::textChanged, this, &MarkdownCreateImageWidget::slotEnableButton);
0035 
0036     mAlternateText->setObjectName(QLatin1StringView("alternatetext"));
0037     mAlternateText->setClearButtonEnabled(true);
0038 
0039     mainLayout->addRow(i18n("Title:"), mTitle);
0040     mainLayout->addRow(i18n("Image Link:"), mImageUrl);
0041     mainLayout->addRow(i18n("Alternate text:"), mAlternateText);
0042 
0043     mKeepOriginalSize->setObjectName(QLatin1StringView("keeporiginalsize"));
0044     mKeepOriginalSize->setChecked(true);
0045     mainLayout->addRow(mKeepOriginalSize);
0046     connect(mKeepOriginalSize, &QCheckBox::stateChanged, this, &MarkdownCreateImageWidget::slotKeepOriginalSizeChanged);
0047 
0048     auto sizeWidget = new QWidget;
0049     sizeWidget->setObjectName(QLatin1StringView("sizeWidget"));
0050     auto sizeWidgetLayout = new QHBoxLayout(sizeWidget);
0051     sizeWidgetLayout->setObjectName(QLatin1StringView("sizeWidgetLayout"));
0052     sizeWidgetLayout->setContentsMargins({});
0053     mainLayout->addRow(sizeWidget);
0054 
0055     mLabWidth->setObjectName(QLatin1StringView("labwidth"));
0056     mLabWidth->setEnabled(false);
0057     mWidth->setObjectName(QLatin1StringView("mwidth"));
0058     mWidth->setMinimum(1);
0059     mWidth->setMaximum(999);
0060     mWidth->setValue(50);
0061     mWidth->setEnabled(false);
0062     mWidth->setSuffix(i18n(" px"));
0063     sizeWidgetLayout->addWidget(mLabWidth);
0064     sizeWidgetLayout->addWidget(mWidth);
0065 
0066     mLabHeight->setObjectName(QLatin1StringView("labheight"));
0067     mLabHeight->setEnabled(false);
0068     mHeight->setObjectName(QLatin1StringView("mheight"));
0069     mHeight->setMinimum(1);
0070     mHeight->setMaximum(999);
0071     mHeight->setValue(50);
0072     mHeight->setEnabled(false);
0073     mHeight->setSuffix(i18n(" px"));
0074     sizeWidgetLayout->addWidget(mLabHeight);
0075     sizeWidgetLayout->addWidget(mHeight);
0076     sizeWidgetLayout->addStretch(1);
0077 }
0078 
0079 MarkdownCreateImageWidget::~MarkdownCreateImageWidget() = default;
0080 
0081 void MarkdownCreateImageWidget::slotKeepOriginalSizeChanged()
0082 {
0083     bool enabled = !mKeepOriginalSize->isChecked();
0084     mLabWidth->setEnabled(enabled);
0085     mWidth->setEnabled(enabled);
0086     mLabHeight->setEnabled(enabled);
0087     mHeight->setEnabled(enabled);
0088 }
0089 
0090 void MarkdownCreateImageWidget::slotEnableButton()
0091 {
0092     Q_EMIT enabledOkButton(!mTitle->text().trimmed().isEmpty() && !mImageUrl->text().trimmed().isEmpty());
0093 }
0094 
0095 QString MarkdownCreateImageWidget::linkStr() const
0096 {
0097     if (mTitle->text().trimmed().isEmpty() && mImageUrl->text().trimmed().isEmpty()) {
0098         return {};
0099     }
0100     QString defineSize;
0101     if (!mKeepOriginalSize->isChecked()) {
0102         defineSize = QStringLiteral(" =%1x%2").arg(mWidth->value()).arg(mHeight->value());
0103     }
0104 
0105     QString imageText = mImageUrl->text();
0106     if (!defineSize.isEmpty()) {
0107         imageText += defineSize;
0108     }
0109     if (!mAlternateText->text().trimmed().isEmpty()) {
0110         return QStringLiteral("![%1](%2 \"%3\")").arg(mTitle->text().trimmed(), imageText, mAlternateText->text().trimmed());
0111     } else {
0112         return QStringLiteral("![%1](%2)").arg(mTitle->text().trimmed(), imageText);
0113     }
0114 }
0115 
0116 #include "moc_markdowncreateimagewidget.cpp"