File indexing completed on 2024-09-22 04:47:56
0001 /* 0002 SPDX-FileCopyrightText: 2006-2007 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "transportmgr.h" 0008 0009 #include "transport.h" 0010 #include "transportjob.h" 0011 #include "transportmanager.h" 0012 #include "widgets/transportmanagementwidget.h" 0013 #include <QVBoxLayout> 0014 0015 #include <QApplication> 0016 #include <QDebug> 0017 #include <QLineEdit> 0018 0019 #include <QPlainTextEdit> 0020 #include <QPushButton> 0021 0022 using namespace MailTransport; 0023 0024 TransportMgr::TransportMgr() 0025 : mCurrentJob(nullptr) 0026 { 0027 auto vbox = new QVBoxLayout(this); 0028 0029 vbox->addWidget(new TransportManagementWidget(this)); 0030 mComboBox = new TransportComboBox(this); 0031 mComboBox->setEditable(true); 0032 vbox->addWidget(mComboBox); 0033 auto b = new QPushButton(QStringLiteral("&Edit"), this); 0034 vbox->addWidget(b); 0035 connect(b, &QPushButton::clicked, this, &TransportMgr::editBtnClicked); 0036 b = new QPushButton(QStringLiteral("&Remove all transports"), this); 0037 vbox->addWidget(b); 0038 connect(b, &QPushButton::clicked, this, &TransportMgr::removeAllBtnClicked); 0039 mSenderEdit = new QLineEdit(this); 0040 mSenderEdit->setPlaceholderText(QStringLiteral("Sender")); 0041 vbox->addWidget(mSenderEdit); 0042 mToEdit = new QLineEdit(this); 0043 mToEdit->setPlaceholderText(QStringLiteral("To")); 0044 vbox->addWidget(mToEdit); 0045 mCcEdit = new QLineEdit(this); 0046 mCcEdit->setPlaceholderText(QStringLiteral("Cc")); 0047 vbox->addWidget(mCcEdit); 0048 mBccEdit = new QLineEdit(this); 0049 mBccEdit->setPlaceholderText(QStringLiteral("Bcc")); 0050 vbox->addWidget(mBccEdit); 0051 mMailEdit = new QPlainTextEdit(this); 0052 mMailEdit->setLineWrapMode(QPlainTextEdit::NoWrap); 0053 vbox->addWidget(mMailEdit); 0054 b = new QPushButton(QStringLiteral("&Send"), this); 0055 connect(b, &QPushButton::clicked, this, &TransportMgr::sendBtnClicked); 0056 vbox->addWidget(b); 0057 b = new QPushButton(QStringLiteral("&Cancel"), this); 0058 connect(b, &QPushButton::clicked, this, &TransportMgr::cancelBtnClicked); 0059 vbox->addWidget(b); 0060 } 0061 0062 void TransportMgr::removeAllBtnClicked() 0063 { 0064 MailTransport::TransportManager *manager = MailTransport::TransportManager::self(); 0065 const QList<Transport *> transports = manager->transports(); 0066 for (int i = 0; i < transports.count(); i++) { 0067 MailTransport::Transport *transport = transports.at(i); 0068 qDebug() << transport->host(); 0069 manager->removeTransport(transport->id()); 0070 } 0071 } 0072 0073 void TransportMgr::editBtnClicked() 0074 { 0075 const int index = mComboBox->currentTransportId(); 0076 if (index < 0) { 0077 return; 0078 } 0079 const auto transport = TransportManager::self()->transportById(index); 0080 TransportManager::self()->configureTransport(transport->identifier(), transport, this); 0081 } 0082 0083 void TransportMgr::sendBtnClicked() 0084 { 0085 TransportJob *job = TransportManager::self()->createTransportJob(mComboBox->currentTransportId()); 0086 if (!job) { 0087 qDebug() << "Invalid transport!"; 0088 return; 0089 } 0090 job->setSender(mSenderEdit->text()); 0091 job->setTo(mToEdit->text().isEmpty() ? QStringList() : mToEdit->text().split(QLatin1Char(','))); 0092 job->setCc(mCcEdit->text().isEmpty() ? QStringList() : mCcEdit->text().split(QLatin1Char(','))); 0093 job->setBcc(mBccEdit->text().isEmpty() ? QStringList() : mBccEdit->text().split(QLatin1Char(','))); 0094 job->setData(mMailEdit->toPlainText().toLatin1()); 0095 connect(job, &KJob::result, this, &TransportMgr::jobResult); 0096 connect(job, &TransportJob::percentChanged, this, &TransportMgr::jobPercent); 0097 connect(job, &KJob::infoMessage, this, &TransportMgr::jobInfoMessage); 0098 mCurrentJob = job; 0099 TransportManager::self()->schedule(job); 0100 } 0101 0102 void TransportMgr::cancelBtnClicked() 0103 { 0104 if (mCurrentJob) { 0105 qDebug() << "kill success:" << mCurrentJob->kill(); 0106 } 0107 mCurrentJob = nullptr; 0108 } 0109 0110 int main(int argc, char **argv) 0111 { 0112 QApplication app(argc, argv); 0113 app.setApplicationName(QStringLiteral("transportmgr")); 0114 0115 auto t = new TransportMgr(); 0116 t->show(); 0117 app.exec(); 0118 delete t; 0119 } 0120 0121 void TransportMgr::jobResult(KJob *job) 0122 { 0123 qDebug() << job->error() << job->errorText(); 0124 mCurrentJob = nullptr; 0125 } 0126 0127 void TransportMgr::jobPercent(KJob *job, unsigned long percent) 0128 { 0129 Q_UNUSED(job) 0130 qDebug() << percent << "%"; 0131 } 0132 0133 void TransportMgr::jobInfoMessage(KJob *job, const QString &info) 0134 { 0135 Q_UNUSED(job) 0136 qDebug() << info; 0137 } 0138 0139 #include "moc_transportmgr.cpp"