File indexing completed on 2024-05-19 05:21:42

0001 /**
0002  * klinkdialog
0003  *
0004  * SPDX-FileCopyrightText: 2008 Stephen Kelly <steveire@gmailcom>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-or-later
0007  */
0008 
0009 #include "klinkdialog_p.h"
0010 
0011 #include <KLocalizedString>
0012 
0013 #include <QDialogButtonBox>
0014 #include <QGridLayout>
0015 #include <QLabel>
0016 #include <QLineEdit>
0017 #include <QPushButton>
0018 #include <QVBoxLayout>
0019 
0020 using namespace KPIMTextEdit;
0021 
0022 KLinkDialog::KLinkDialog(QWidget *parent)
0023     : QDialog(parent)
0024     , textLabel(new QLabel(i18n("Link Text:"), this))
0025     , textLineEdit(new QLineEdit(this))
0026     , linkUrlLabel(new QLabel(i18n("Link URL:"), this))
0027     , linkUrlLineEdit(new QLineEdit(this))
0028     , buttonBox(new QDialogButtonBox(this))
0029 {
0030     setWindowTitle(i18nc("@title:window", "Manage Link"));
0031     setModal(true);
0032 
0033     auto layout = new QVBoxLayout(this);
0034 
0035     auto grid = new QGridLayout;
0036 
0037     textLineEdit->setClearButtonEnabled(true);
0038     linkUrlLineEdit->setClearButtonEnabled(true);
0039 
0040     grid->addWidget(textLabel, 0, 0);
0041     grid->addWidget(textLineEdit, 0, 1);
0042     grid->addWidget(linkUrlLabel, 1, 0);
0043     grid->addWidget(linkUrlLineEdit, 1, 1);
0044 
0045     layout->addLayout(grid);
0046 
0047     buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
0048     connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
0049     connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
0050     layout->addWidget(buttonBox);
0051 
0052     textLineEdit->setFocus();
0053     buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false);
0054     connect(textLineEdit, &QLineEdit::textChanged, this, &KLinkDialog::slotTextChanged);
0055 }
0056 
0057 KLinkDialog::~KLinkDialog() = default;
0058 
0059 void KLinkDialog::slotTextChanged(const QString &text)
0060 {
0061     buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!text.trimmed().isEmpty());
0062 }
0063 
0064 void KLinkDialog::setLinkText(const QString &linkText)
0065 {
0066     textLineEdit->setText(linkText);
0067     if (!linkText.trimmed().isEmpty()) {
0068         linkUrlLineEdit->setFocus();
0069     }
0070 }
0071 
0072 void KLinkDialog::setLinkUrl(const QString &linkUrl)
0073 {
0074     linkUrlLineEdit->setText(linkUrl);
0075 }
0076 
0077 QString KLinkDialog::linkText() const
0078 {
0079     return textLineEdit->text().trimmed();
0080 }
0081 
0082 QString KLinkDialog::linkUrl() const
0083 {
0084     return linkUrlLineEdit->text();
0085 }
0086 
0087 #include "moc_klinkdialog_p.cpp"