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("").arg(mTitle->text().trimmed(), imageText, mAlternateText->text().trimmed()); 0111 } else { 0112 return QStringLiteral("").arg(mTitle->text().trimmed(), imageText); 0113 } 0114 } 0115 0116 #include "moc_markdowncreateimagewidget.cpp"