summaryrefslogtreecommitdiff
authorzecke <zecke>2002-10-12 21:18:46 (UTC)
committer zecke <zecke>2002-10-12 21:18:46 (UTC)
commit9b33ff5f74c30a5a4905093715a6f345edee26ab (patch) (unidiff)
treeeb0155744adb8c0901e27e001c7e09fc8c789369
parent3eb9678dfab4d152858b7f72c7f0c057fe393541 (diff)
downloadopie-9b33ff5f74c30a5a4905093715a6f345edee26ab.zip
opie-9b33ff5f74c30a5a4905093715a6f345edee26ab.tar.gz
opie-9b33ff5f74c30a5a4905093715a6f345edee26ab.tar.bz2
Calmed down... 2nd try after merge
Use MetaFactory cuase it's so nice and avoids thousands of if() else if stuff Fix a bug in filetransfer where cancel after exit leaded to a crash cause of bogus adresses in the QSocketNotifiers..
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/filetransfer.cpp3
-rw-r--r--noncore/apps/opie-console/mainwindow.cpp2
-rw-r--r--noncore/apps/opie-console/metafactory.cpp9
-rw-r--r--noncore/apps/opie-console/metafactory.h1
-rw-r--r--noncore/apps/opie-console/test/senderui.cpp2
-rw-r--r--noncore/apps/opie-console/transferdialog.cpp70
-rw-r--r--noncore/apps/opie-console/transferdialog.h8
7 files changed, 60 insertions, 35 deletions
diff --git a/noncore/apps/opie-console/filetransfer.cpp b/noncore/apps/opie-console/filetransfer.cpp
index b39dc95..8e86ebb 100644
--- a/noncore/apps/opie-console/filetransfer.cpp
+++ b/noncore/apps/opie-console/filetransfer.cpp
@@ -190,8 +190,10 @@ void FileTransfer::slotRead() {
190/* 190/*
191 * find the progress 191 * find the progress
192 */ 192 */
193void FileTransfer::slotProgress( const QStringList& list ) { 193void FileTransfer::slotProgress( const QStringList& list ) {
194 if ( m_type != SZ )
195 return;
194 bool complete = true; 196 bool complete = true;
195 int min, sec; 197 int min, sec;
196 int bps; 198 int bps;
197 unsigned long sent, total; 199 unsigned long sent, total;
@@ -241,8 +243,9 @@ void FileTransfer::slotExec() {
241 char buf[2]; 243 char buf[2];
242 ::read(m_term[0], buf, 1 ); 244 ::read(m_term[0], buf, 1 );
243 delete m_proc; 245 delete m_proc;
244 delete m_not; 246 delete m_not;
247 m_proc = m_not = 0l;
245 close( m_term[0] ); 248 close( m_term[0] );
246 close( m_term[1] ); 249 close( m_term[1] );
247 close( m_comm[0] ); 250 close( m_comm[0] );
248 close( m_comm[1] ); 251 close( m_comm[1] );
diff --git a/noncore/apps/opie-console/mainwindow.cpp b/noncore/apps/opie-console/mainwindow.cpp
index fbeaa74..88727e4 100644
--- a/noncore/apps/opie-console/mainwindow.cpp
+++ b/noncore/apps/opie-console/mainwindow.cpp
@@ -225,9 +225,11 @@ void MainWindow::create( const Profile& prof ) {
225} 225}
226 226
227void MainWindow::slotTransfer() 227void MainWindow::slotTransfer()
228{ 228{
229 if ( currentSession() ) {
229 TransferDialog dlg(this); 230 TransferDialog dlg(this);
230 dlg.showMaximized(); 231 dlg.showMaximized();
231 dlg.exec(); 232 dlg.exec();
233 }
232} 234}
233 235
diff --git a/noncore/apps/opie-console/metafactory.cpp b/noncore/apps/opie-console/metafactory.cpp
index 2b672cf..901f29f 100644
--- a/noncore/apps/opie-console/metafactory.cpp
+++ b/noncore/apps/opie-console/metafactory.cpp
@@ -125,8 +125,17 @@ EmulationLayer* MetaFactory::newEmulationLayer( const QString& str, WidgetLayer*
125 } 125 }
126 126
127 return lay; 127 return lay;
128} 128}
129FileTransferLayer* MetaFactory::newFileTransfer(const QString& str, IOLayer* lay ) {
130 FileTransferLayer* file = 0l;
131 QMap<QString, filelayer>::Iterator it;
132 it = m_fileFact.find( str );
133 if ( it != m_fileFact.end() ) {
134 file = (*(it.data() ) )(lay);
135 }
136 return file;
137}
129QCString MetaFactory::internal( const QString& str )const { 138QCString MetaFactory::internal( const QString& str )const {
130 return m_strings[str]; 139 return m_strings[str];
131} 140}
132QString MetaFactory::external( const QCString& str )const { 141QString MetaFactory::external( const QCString& str )const {
diff --git a/noncore/apps/opie-console/metafactory.h b/noncore/apps/opie-console/metafactory.h
index d05ece4..7f0699b 100644
--- a/noncore/apps/opie-console/metafactory.h
+++ b/noncore/apps/opie-console/metafactory.h
@@ -77,8 +77,9 @@ public:
77 IOLayer* newIOLayer( const QString&,const Profile& ); 77 IOLayer* newIOLayer( const QString&,const Profile& );
78 ProfileDialogWidget *newConnectionPlugin ( const QString&, QWidget* ); 78 ProfileDialogWidget *newConnectionPlugin ( const QString&, QWidget* );
79 ProfileDialogWidget* newTerminalPlugin( const QString&, QWidget* ); 79 ProfileDialogWidget* newTerminalPlugin( const QString&, QWidget* );
80 EmulationLayer* newEmulationLayer(const QString&, WidgetLayer* ); 80 EmulationLayer* newEmulationLayer(const QString&, WidgetLayer* );
81 FileTransferLayer* newFileTransfer(const QString&, IOLayer* );
81 82
82 /* 83 /*
83 * internal takes the maybe translated 84 * internal takes the maybe translated
84 * public QString and maps it to the internal 85 * public QString and maps it to the internal
diff --git a/noncore/apps/opie-console/test/senderui.cpp b/noncore/apps/opie-console/test/senderui.cpp
index 3e0bd65..8bc1676 100644
--- a/noncore/apps/opie-console/test/senderui.cpp
+++ b/noncore/apps/opie-console/test/senderui.cpp
@@ -39,9 +39,9 @@ SenderUI::~SenderUI() {
39 39
40} 40}
41void SenderUI::slotSendFile() { 41void SenderUI::slotSendFile() {
42 42
43 sz = new FileTransfer(FileTransfer::SZ, ser); 43 sz = new FileTransfer(FileTransfer::SY, ser);
44 sz->sendFile("/home/ich/bootopie-v06-13.jffs2"); 44 sz->sendFile("/home/ich/bootopie-v06-13.jffs2");
45 45
46 connect (sz, SIGNAL(sent()), 46 connect (sz, SIGNAL(sent()),
47 this, SLOT(fileTransComplete())); 47 this, SLOT(fileTransComplete()));
diff --git a/noncore/apps/opie-console/transferdialog.cpp b/noncore/apps/opie-console/transferdialog.cpp
index d639de6..ba06199 100644
--- a/noncore/apps/opie-console/transferdialog.cpp
+++ b/noncore/apps/opie-console/transferdialog.cpp
@@ -1,28 +1,36 @@
1#include "transferdialog.h" 1#include <qlayout.h>
2#include <qcombobox.h>
3#include <qlabel.h>
4#include <qlineedit.h>
5#include <qpushbutton.h>
6#include <qmessagebox.h>
7#include <qprogressbar.h>
8
9#include <opie/ofiledialog.h>
2 10
3#include "filetransfer.h" 11#include "filetransfer.h"
4#include "io_serial.h" 12#include "io_serial.h"
13#include "metafactory.h"
14#include "mainwindow.h"
15
16#include "transferdialog.h"
17
5 18
6#include "qlayout.h"
7#include "qcombobox.h"
8#include "qlabel.h"
9#include "qlineedit.h"
10#include "qpushbutton.h"
11#include "qmessagebox.h"
12#include "qprogressbar.h"
13 19
14#include "opie/ofiledialog.h"
15 20
16TransferDialog::TransferDialog(QWidget *parent, const char *name) 21
17: QDialog(/*parent, name*/NULL, NULL, true) 22
23
24TransferDialog::TransferDialog(MainWindow *parent, const char *name)
25: QDialog(/*parent, name*/0l, 0l, true), m_win(parent)
18{ 26{
27 m_lay = 0l;
19 QVBoxLayout *vbox; 28 QVBoxLayout *vbox;
20 QHBoxLayout *hbox, *hbox2; 29 QHBoxLayout *hbox, *hbox2;
21 QLabel *file, *mode, *progress, *status; 30 QLabel *file, *mode, *progress, *status;
22 QPushButton *selector; 31 QPushButton *selector;
23 32
24 transfer = NULL;
25 33
26 file = new QLabel(QObject::tr("Send file"), this); 34 file = new QLabel(QObject::tr("Send file"), this);
27 mode = new QLabel(QObject::tr("Transfer mode"), this); 35 mode = new QLabel(QObject::tr("Transfer mode"), this);
28 progress = new QLabel(QObject::tr("Progress"), this); 36 progress = new QLabel(QObject::tr("Progress"), this);
@@ -31,11 +39,16 @@ TransferDialog::TransferDialog(QWidget *parent, const char *name)
31 statusbar = new QLabel(QObject::tr("ready"), this); 39 statusbar = new QLabel(QObject::tr("ready"), this);
32 statusbar->setFrameStyle(QFrame::Panel | QFrame::Sunken); 40 statusbar->setFrameStyle(QFrame::Panel | QFrame::Sunken);
33 41
34 protocol = new QComboBox(this); 42 protocol = new QComboBox(this);
35 protocol->insertItem("XModem"); 43 /* use the fscking MetaFactory
36 protocol->insertItem("YModem"); 44 * because we invented it for that fscking reason
37 protocol->insertItem("ZModem"); 45 * I'm really getting UPSET!!!!
46 */
47 QStringList list = m_win->factory()->fileTransferLayers();
48 for (QStringList::Iterator it =list.begin(); it != list.end(); ++it ) {
49 protocol->insertItem( (*it) );
50 }
38 51
39 filename = new QLineEdit(this); 52 filename = new QLineEdit(this);
40 53
41 progressbar = new QProgressBar(this); 54 progressbar = new QProgressBar(this);
@@ -75,9 +88,9 @@ TransferDialog::~TransferDialog()
75 88
76void TransferDialog::slotFilename() 89void TransferDialog::slotFilename()
77{ 90{
78 QString f; 91 QString f;
79 92
80 f = OFileDialog::getOpenFileName(0); 93 f = OFileDialog::getOpenFileName(0);
81 if(!f.isNull()) filename->setText(f); 94 if(!f.isNull()) filename->setText(f);
82} 95}
83 96
@@ -94,31 +107,26 @@ void TransferDialog::slotTransfer()
94 ok->setEnabled(false); 107 ok->setEnabled(false);
95 108
96 statusbar->setText(QObject::tr("Sending...")); 109 statusbar->setText(QObject::tr("Sending..."));
97 110
98 FileTransfer::Type transfermode = FileTransfer::SX; 111 m_lay = m_win->factory()->newFileTransfer( protocol->currentText(),
99 if(protocol->currentText() == "YModem") transfermode == FileTransfer::SY; 112 m_win->currentSession()->layer() );
100 if(protocol->currentText() == "ZModem") transfermode == FileTransfer::SZ; 113 m_lay->sendFile(filename->text());
101
102 // dummy profile
103 Profile profile("Dummy", "serial", "vt102", Profile::White, Profile::Black, Profile::VT102);
104 114
105 transfer = new FileTransfer(transfermode, new IOSerial(profile)); 115 connect(m_lay, SIGNAL(progress(const QString&, int, int, int, int, int)), SLOT(slotProgress(const QString&, int, int, int, int, int)));
106 transfer->sendFile(filename->text()); 116 connect(m_lay, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&)));
107 connect(transfer, SIGNAL(progress(const QString&, int, int, int, int, int)), SLOT(slotProgress(const QString&, int, int, int, int, int))); 117 connect(m_lay, SIGNAL(sent()), SLOT(slotSent()));
108 connect(transfer, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&)));
109 connect(transfer, SIGNAL(sent()), SLOT(slotSent()));
110} 118}
111 119
112void TransferDialog::slotCancel() 120void TransferDialog::slotCancel()
113{ 121{
114 ok->setEnabled(true); 122 ok->setEnabled(true);
115 123
116 if(transfer) 124 if(m_lay)
117 { 125 {
118 transfer->cancel(); 126 m_lay->cancel();
119 delete transfer; 127 delete m_lay;
120 transfer = NULL; 128 m_lay = 0l;
121 QMessageBox::information(this, 129 QMessageBox::information(this,
122 QObject::tr("Cancelled"), 130 QObject::tr("Cancelled"),
123 QObject::tr("The file transfer has been cancelled.")); 131 QObject::tr("The file transfer has been cancelled."));
124 } 132 }
diff --git a/noncore/apps/opie-console/transferdialog.h b/noncore/apps/opie-console/transferdialog.h
index 61f425c..b0c1a76 100644
--- a/noncore/apps/opie-console/transferdialog.h
+++ b/noncore/apps/opie-console/transferdialog.h
@@ -7,15 +7,16 @@ class QLineEdit;
7class QComboBox; 7class QComboBox;
8class QProgressBar; 8class QProgressBar;
9class QLabel; 9class QLabel;
10class QPushButton; 10class QPushButton;
11class FileTransfer; 11class MainWindow;
12class FileTransferLayer;
12 13
13class TransferDialog : public QDialog 14class TransferDialog : public QDialog
14{ 15{
15 Q_OBJECT 16 Q_OBJECT
16 public: 17 public:
17 TransferDialog(QWidget *parent = NULL, const char *name = NULL); 18 TransferDialog(MainWindow *parent = 0l, const char *name = 0l);
18 ~TransferDialog(); 19 ~TransferDialog();
19 20
20 public slots: 21 public slots:
21 void slotFilename(); 22 void slotFilename();
@@ -30,9 +31,10 @@ class TransferDialog : public QDialog
30 QComboBox *protocol; 31 QComboBox *protocol;
31 QProgressBar *progressbar; 32 QProgressBar *progressbar;
32 QLabel *statusbar; 33 QLabel *statusbar;
33 QPushButton *ok, *cancel; 34 QPushButton *ok, *cancel;
34 FileTransfer *transfer; 35 MainWindow* m_win;
36 FileTransferLayer* m_lay;
35}; 37};
36 38
37#endif 39#endif
38 40