File indexing completed on 2024-04-21 05:51:30

0001 /*
0002  *  SPDX-FileCopyrightText: 2002 Waldo Bastian <bastian@kde.org>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-only
0005  **/
0006 
0007 // Own
0008 #include "ZModemDialog.h"
0009 
0010 // KDE
0011 #include <KTextEdit>
0012 #include <QDialogButtonBox>
0013 #include <QPushButton>
0014 #include <QVBoxLayout>
0015 
0016 using Konsole::ZModemDialog;
0017 
0018 ZModemDialog::ZModemDialog(QWidget *aParent, bool modal, const QString &caption)
0019     : QDialog(aParent)
0020     , _textEdit(nullptr)
0021     , mButtonBox(nullptr)
0022 {
0023     setObjectName(QStringLiteral("zmodem_progress"));
0024     setModal(modal);
0025     setWindowTitle(caption);
0026 
0027     mButtonBox = new QDialogButtonBox(QDialogButtonBox::Cancel | QDialogButtonBox::Close);
0028     auto mainWidget = new QWidget(this);
0029     auto mainLayout = new QVBoxLayout;
0030     setLayout(mainLayout);
0031     mainLayout->addWidget(mainWidget);
0032     mainLayout->addWidget(mButtonBox);
0033 
0034     // Use Cancel here to stop the transfer
0035     mButtonBox->button(QDialogButtonBox::Cancel)->setEnabled(true);
0036     mButtonBox->button(QDialogButtonBox::Close)->setEnabled(false);
0037 
0038     connect(mButtonBox, &QDialogButtonBox::rejected, this, &Konsole::ZModemDialog::slotCancel);
0039     connect(mButtonBox, &QDialogButtonBox::accepted, this, &Konsole::ZModemDialog::slotClose);
0040 
0041     _textEdit = new KTextEdit(this);
0042     _textEdit->setMinimumSize(400, 100);
0043     _textEdit->setReadOnly(true);
0044     mainLayout->addWidget(_textEdit);
0045 
0046     addText(QStringLiteral("Note: pressing Cancel will almost certainly cause the terminal to be unusable."));
0047     addText(QStringLiteral("-----------------"));
0048 }
0049 
0050 void ZModemDialog::addText(const QString &text)
0051 {
0052     _textEdit->append(text);
0053 }
0054 
0055 void ZModemDialog::addProgressText(const QString &text)
0056 {
0057     _textEdit->insertPlainText(text);
0058 }
0059 
0060 void ZModemDialog::slotCancel()
0061 {
0062     Q_EMIT zmodemCancel();
0063     slotClose();
0064 }
0065 
0066 void ZModemDialog::transferDone()
0067 {
0068     mButtonBox->button(QDialogButtonBox::Cancel)->setEnabled(false);
0069     mButtonBox->button(QDialogButtonBox::Close)->setEnabled(true);
0070 }
0071 
0072 void ZModemDialog::slotClose()
0073 {
0074     delayedDestruct();
0075     accept();
0076 }
0077 
0078 void ZModemDialog::delayedDestruct()
0079 {
0080     if (isVisible()) {
0081         hide();
0082     }
0083 
0084     deleteLater();
0085 }
0086 
0087 #include "moc_ZModemDialog.cpp"