-rw-r--r-- | noncore/apps/opie-console/transferdialog.cpp | 53 | ||||
-rw-r--r-- | noncore/apps/opie-console/transferdialog.h | 3 |
2 files changed, 55 insertions, 1 deletions
diff --git a/noncore/apps/opie-console/transferdialog.cpp b/noncore/apps/opie-console/transferdialog.cpp index 45522a8..d639de6 100644 --- a/noncore/apps/opie-console/transferdialog.cpp +++ b/noncore/apps/opie-console/transferdialog.cpp @@ -1,128 +1,179 @@ #include "transferdialog.h" #include "filetransfer.h" #include "io_serial.h" #include "qlayout.h" #include "qcombobox.h" #include "qlabel.h" #include "qlineedit.h" #include "qpushbutton.h" #include "qmessagebox.h" #include "qprogressbar.h" #include "opie/ofiledialog.h" TransferDialog::TransferDialog(QWidget *parent, const char *name) : QDialog(/*parent, name*/NULL, NULL, true) { QVBoxLayout *vbox; QHBoxLayout *hbox, *hbox2; QLabel *file, *mode, *progress, *status; QPushButton *selector; transfer = NULL; file = new QLabel(QObject::tr("Send file"), this); mode = new QLabel(QObject::tr("Transfer mode"), this); progress = new QLabel(QObject::tr("Progress"), this); status = new QLabel(QObject::tr("Status"), this); statusbar = new QLabel(QObject::tr("ready"), this); statusbar->setFrameStyle(QFrame::Panel | QFrame::Sunken); protocol = new QComboBox(this); protocol->insertItem("XModem"); protocol->insertItem("YModem"); protocol->insertItem("ZModem"); filename = new QLineEdit(this); progressbar = new QProgressBar(this); progressbar->setProgress(0); selector = new QPushButton("...", this); ok = new QPushButton(QObject::tr("Start transfer"), this); cancel = new QPushButton(QObject::tr("Cancel"), this); vbox = new QVBoxLayout(this, 2); vbox->add(file); hbox = new QHBoxLayout(vbox, 0); hbox->add(filename); hbox->add(selector); vbox->add(mode); vbox->add(protocol); vbox->add(progress); vbox->add(progressbar); vbox->add(status); vbox->add(statusbar); vbox->addStretch(1); hbox2 = new QHBoxLayout(vbox, 2); hbox2->add(ok); hbox2->add(cancel); setCaption(QObject::tr("File transfer")); show(); connect(selector, SIGNAL(clicked()), SLOT(slotFilename())); connect(ok, SIGNAL(clicked()), SLOT(slotTransfer())); connect(cancel, SIGNAL(clicked()), SLOT(slotCancel())); } TransferDialog::~TransferDialog() { } void TransferDialog::slotFilename() { QString f; f = OFileDialog::getOpenFileName(0); if(!f.isNull()) filename->setText(f); } void TransferDialog::slotTransfer() { if(filename->text().isEmpty()) { QMessageBox::information(this, QObject::tr("Attention"), QObject::tr("No file has been specified.")); return; } ok->setEnabled(false); statusbar->setText(QObject::tr("Sending...")); - progressbar->setProgress(1); FileTransfer::Type transfermode = FileTransfer::SX; if(protocol->currentText() == "YModem") transfermode == FileTransfer::SY; if(protocol->currentText() == "ZModem") transfermode == FileTransfer::SZ; // dummy profile Profile profile("Dummy", "serial", "vt102", Profile::White, Profile::Black, Profile::VT102); transfer = new FileTransfer(transfermode, new IOSerial(profile)); transfer->sendFile(filename->text()); + connect(transfer, SIGNAL(progress(const QString&, int, int, int, int, int)), SLOT(slotProgress(const QString&, int, int, int, int, int))); + connect(transfer, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&))); + connect(transfer, SIGNAL(sent()), SLOT(slotSent())); } void TransferDialog::slotCancel() { ok->setEnabled(true); if(transfer) { transfer->cancel(); delete transfer; transfer = NULL; QMessageBox::information(this, QObject::tr("Cancelled"), QObject::tr("The file transfer has been cancelled.")); } else { close(); } } +void TransferDialog::slotProgress(const QString& file, int progress, int speed, int hours, int minutes, int seconds) +{ + progressbar->setProgress(progress); +} + +void TransferDialog::slotError(int error, const QString& message) +{ + switch(error) + { + case FileTransferLayer::NotSupported: + QMessageBox::critical(this, + QObject::tr("Error"), + QObject::tr("Operation not supported.")); + break; + case FileTransferLayer::StartError: + QMessageBox::critical(this, + QObject::tr("Error"), + QObject::tr("Operation not supported.")); + break; + case FileTransferLayer::NoError: + QMessageBox::critical(this, + QObject::tr("Error"), + QObject::tr("Operation not supported.")); + break; + case FileTransferLayer::Undefined: + QMessageBox::critical(this, + QObject::tr("Error"), + QObject::tr("Operation not supported.")); + break; + case FileTransferLayer::Incomplete: + QMessageBox::critical(this, + QObject::tr("Error"), + QObject::tr("Operation not supported.")); + break; + case FileTransferLayer::Unknown: + default: + QMessageBox::critical(this, + QObject::tr("Error"), + QObject::tr("Operation not supported.")); + break; + } +} + +void TransferDialog::slotSent() +{ + QMessageBox::information(this, QObject::tr("Sent"), QObject::tr("File has been sent.")); + ok->setEnabled(true); +} + diff --git a/noncore/apps/opie-console/transferdialog.h b/noncore/apps/opie-console/transferdialog.h index 62ae14d..61f425c 100644 --- a/noncore/apps/opie-console/transferdialog.h +++ b/noncore/apps/opie-console/transferdialog.h @@ -1,35 +1,38 @@ #ifndef TRANSFER_DIALOG_H #define TRANSFER_DIALOG_H #include "qdialog.h" class QLineEdit; class QComboBox; class QProgressBar; class QLabel; class QPushButton; class FileTransfer; class TransferDialog : public QDialog { Q_OBJECT public: TransferDialog(QWidget *parent = NULL, const char *name = NULL); ~TransferDialog(); public slots: void slotFilename(); void slotTransfer(); void slotCancel(); + void slotProgress(const QString&, int, int, int, int, int); + void slotError(int error, const QString& message); + void slotSent(); private: QLineEdit *filename; QComboBox *protocol; QProgressBar *progressbar; QLabel *statusbar; QPushButton *ok, *cancel; FileTransfer *transfer; }; #endif |