summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/transferdialog.cpp44
-rw-r--r--noncore/apps/opie-console/transferdialog.h3
2 files changed, 34 insertions, 13 deletions
diff --git a/noncore/apps/opie-console/transferdialog.cpp b/noncore/apps/opie-console/transferdialog.cpp
index 0083cc1..f9a0b87 100644
--- a/noncore/apps/opie-console/transferdialog.cpp
+++ b/noncore/apps/opie-console/transferdialog.cpp
@@ -7,48 +7,50 @@
7#include <qprogressbar.h> 7#include <qprogressbar.h>
8#include <qradiobutton.h> 8#include <qradiobutton.h>
9#include <qbuttongroup.h> 9#include <qbuttongroup.h>
10 10
11#include <opie/ofiledialog.h> 11#include <opie/ofiledialog.h>
12 12
13#include "file_layer.h" 13#include "file_layer.h"
14#include "receive_layer.h" 14#include "receive_layer.h"
15#include "metafactory.h" 15#include "metafactory.h"
16#include "mainwindow.h" 16#include "mainwindow.h"
17 17
18#include "transferdialog.h" 18#include "transferdialog.h"
19 19
20TransferDialog::TransferDialog(MainWindow *parent, const char *name) 20TransferDialog::TransferDialog(MainWindow *parent, const char *name)
21: QDialog(0l, 0l, true), m_win(parent) 21: QDialog(0l, 0l, true), m_win(parent)
22{ 22{
23 m_lay = 0l; 23 m_lay = 0l;
24 m_recvlay = 0l; 24 m_recvlay = 0l;
25 QVBoxLayout *vbox, *vbox2; 25 QVBoxLayout *vbox, *vbox2;
26 QHBoxLayout *hbox, *hbox2, *hbox3; 26 QHBoxLayout *hbox, *hbox2, *hbox3;
27 QLabel *file, *mode, *progress, *status; 27 QLabel *file, *mode, *progress, *status;
28 QButtonGroup *group; 28 QButtonGroup *group;
29 QRadioButton *mode_send, *mode_receive; 29 QRadioButton *mode_send, *mode_receive;
30 30
31 m_autocleanup = 0;
32
31 group = new QButtonGroup(QObject::tr("Transfer mode"), this); 33 group = new QButtonGroup(QObject::tr("Transfer mode"), this);
32 mode_send = new QRadioButton(QObject::tr("Send"), group); 34 mode_send = new QRadioButton(QObject::tr("Send"), group);
33 mode_receive = new QRadioButton(QObject::tr("Receive"), group); 35 mode_receive = new QRadioButton(QObject::tr("Receive"), group);
34 group->insert(mode_send, id_send); 36 group->insert(mode_send, id_send);
35 group->insert(mode_receive, id_receive); 37 group->insert(mode_receive, id_receive);
36 vbox2 = new QVBoxLayout(group, 2); 38 vbox2 = new QVBoxLayout(group, 2);
37 vbox2->addSpacing(10); 39 vbox2->addSpacing(10);
38 hbox3 = new QHBoxLayout(vbox2, 2); 40 hbox3 = new QHBoxLayout(vbox2, 2);
39 hbox3->add(mode_send); 41 hbox3->add(mode_send);
40 hbox3->add(mode_receive); 42 hbox3->add(mode_receive);
41 mode_send->setChecked(true); 43 mode_send->setChecked(true);
42 m_transfermode = id_send; 44 m_transfermode = id_send;
43 45
44 file = new QLabel(QObject::tr("Send file"), this); 46 file = new QLabel(QObject::tr("Send file"), this);
45 mode = new QLabel(QObject::tr("Transfer protocol"), this); 47 mode = new QLabel(QObject::tr("Transfer protocol"), this);
46 progress = new QLabel(QObject::tr("Progress"), this); 48 progress = new QLabel(QObject::tr("Progress"), this);
47 status = new QLabel(QObject::tr("Status"), this); 49 status = new QLabel(QObject::tr("Status"), this);
48 50
49 statusbar = new QLabel(QObject::tr("Ready"), this); 51 statusbar = new QLabel(QObject::tr("Ready"), this);
50 statusbar->setFrameStyle(QFrame::Panel | QFrame::Sunken); 52 statusbar->setFrameStyle(QFrame::Panel | QFrame::Sunken);
51 53
52 protocol = new QComboBox(this); 54 protocol = new QComboBox(this);
53 QStringList list = m_win->factory()->fileTransferLayers(); 55 QStringList list = m_win->factory()->fileTransferLayers();
54 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it) 56 for (QStringList::Iterator it = list.begin(); it != list.end(); ++it)
@@ -92,95 +94,107 @@ TransferDialog::TransferDialog(MainWindow *parent, const char *name)
92TransferDialog::~TransferDialog() 94TransferDialog::~TransferDialog()
93{ 95{
94} 96}
95 97
96void TransferDialog::slotFilename() 98void TransferDialog::slotFilename()
97{ 99{
98 QString f; 100 QString f;
99 101
100 f = OFileDialog::getOpenFileName(0); 102 f = OFileDialog::getOpenFileName(0);
101 if(!f.isNull()) filename->setText(f); 103 if(!f.isNull()) filename->setText(f);
102} 104}
103 105
104void TransferDialog::slotTransfer() 106void TransferDialog::slotTransfer()
105{ 107{
106 if((m_transfermode == id_send) && (filename->text().isEmpty())) 108 if((m_transfermode == id_send) && (filename->text().isEmpty()))
107 { 109 {
108 QMessageBox::information(this, 110 QMessageBox::information(this,
109 QObject::tr("Attention"), 111 QObject::tr("Attention"),
110 QObject::tr("No file has been specified.")); 112 QObject::tr("No file has been specified."));
111 return; 113 return;
112 } 114 }
113 115
114 ok->setEnabled(false); 116 ok->setEnabled(false);
115 117
118 cleanup();
119 m_autocleanup = 0;
120
116 if(m_transfermode == id_send) statusbar->setText(QObject::tr("Sending...")); 121 if(m_transfermode == id_send) statusbar->setText(QObject::tr("Sending..."));
117 else statusbar->setText(QObject::tr("Receiving...")); 122 else statusbar->setText(QObject::tr("Receiving..."));
118 123
119 if(m_transfermode == id_send) 124 if(m_transfermode == id_send)
120 { 125 {
121 m_lay = m_win->factory()->newFileTransfer(protocol->currentText(), m_win->currentSession()->layer()); 126 m_lay = m_win->factory()->newFileTransfer(protocol->currentText(), m_win->currentSession()->layer());
122 m_lay->sendFile(filename->text()); 127 m_lay->sendFile(filename->text());
123 128
124 connect(m_lay, SIGNAL(progress(const QString&, int, int, int, int, int)), 129 connect(m_lay, SIGNAL(progress(const QString&, int, int, int, int, int)),
125 SLOT(slotProgress(const QString&, int, int, int, int, int))); 130 SLOT(slotProgress(const QString&, int, int, int, int, int)));
126 connect(m_lay, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&))); 131 connect(m_lay, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&)));
127 connect(m_lay, SIGNAL(sent()), SLOT(slotSent())); 132 connect(m_lay, SIGNAL(sent()), SLOT(slotSent()));
128 } 133 }
129 else 134 else
130 { 135 {
131 m_recvlay = m_win->factory()->newReceive(protocol->currentText(), m_win->currentSession()->layer()); 136 m_recvlay = m_win->factory()->newReceive(protocol->currentText(), m_win->currentSession()->layer());
132 m_recvlay->receive(); 137 m_recvlay->receive();
133 138
134 connect(m_recvlay, SIGNAL(progress(const QString&, int, int, int, int, int)), 139 connect(m_recvlay, SIGNAL(progress(const QString&, int, int, int, int, int)),
135 SLOT(slotProgress(const QString&, int, int, int, int, int))); 140 SLOT(slotProgress(const QString&, int, int, int, int, int)));
136 connect(m_recvlay, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&))); 141 connect(m_recvlay, SIGNAL(error(int, const QString&)), SLOT(slotError(int, const QString&)));
137 connect(m_recvlay, SIGNAL(received(const QString&)), SLOT(slotReceived(const QString&))); 142 connect(m_recvlay, SIGNAL(received(const QString&)), SLOT(slotReceived(const QString&)));
138 } 143 }
139} 144}
140 145
146void TransferDialog::cleanup()
147{
148 if(m_lay)
149 {
150 m_lay->cancel();
151 delete m_lay;
152 m_lay = 0l;
153 }
154 if(m_recvlay)
155 {
156 m_recvlay->cancel();
157 delete m_recvlay;
158 m_recvlay = 0l;
159 }
160}
161
141void TransferDialog::slotCancel() 162void TransferDialog::slotCancel()
142{ 163{
143 ok->setEnabled(true); 164 ok->setEnabled(true);
144 statusbar->setText(QObject::tr("Ready")); 165 statusbar->setText(QObject::tr("Ready"));
145 166
146 if((m_lay) || (m_recvlay)) 167 if((m_lay) || (m_recvlay))
147 { 168 {
148 if(m_lay) 169 cleanup();
149 { 170 if(m_autocleanup) close();
150 m_lay->cancel(); 171 else
151 delete m_lay;
152 m_lay = 0l;
153 }
154 if(m_recvlay)
155 { 172 {
156 m_recvlay->cancel(); 173 QMessageBox::information(this,
157 delete m_recvlay; 174 QObject::tr("Cancelled"),
158 m_recvlay = 0l; 175 QObject::tr("The file transfer has been cancelled."));
159 } 176 }
160 QMessageBox::information(this,
161 QObject::tr("Cancelled"),
162 QObject::tr("The file transfer has been cancelled."));
163 } 177 }
164 else 178 else
165 { 179 {
166 close(); 180 close();
167 } 181 }
168} 182}
169 183
170void TransferDialog::slotProgress(const QString& file, int progress, int speed, int hours, int minutes, int seconds) 184void TransferDialog::slotProgress(const QString& file, int progress, int speed, int hours, int minutes, int seconds)
171{ 185{
172 progressbar->setProgress(progress); 186 progressbar->setProgress(progress);
173} 187}
174 188
175void TransferDialog::slotError(int error, const QString& message) 189void TransferDialog::slotError(int error, const QString& message)
176{ 190{
177 statusbar->setText(QObject::tr("Ready")); 191 statusbar->setText(QObject::tr("Ready"));
178 192
179 switch(error) 193 switch(error)
180 { 194 {
181 case FileTransferLayer::NotSupported: 195 case FileTransferLayer::NotSupported:
182 QMessageBox::critical(this, 196 QMessageBox::critical(this,
183 QObject::tr("Error"), 197 QObject::tr("Error"),
184 QObject::tr("Operation not supported.")); 198 QObject::tr("Operation not supported."));
185 break; 199 break;
186 case FileTransferLayer::StartError: 200 case FileTransferLayer::StartError:
@@ -189,55 +203,59 @@ void TransferDialog::slotError(int error, const QString& message)
189 QObject::tr("Transfer could not be started.")); 203 QObject::tr("Transfer could not be started."));
190 break; 204 break;
191 case FileTransferLayer::NoError: 205 case FileTransferLayer::NoError:
192 QMessageBox::critical(this, 206 QMessageBox::critical(this,
193 QObject::tr("Error"), 207 QObject::tr("Error"),
194 QObject::tr("No error.")); 208 QObject::tr("No error."));
195 break; 209 break;
196 case FileTransferLayer::Undefined: 210 case FileTransferLayer::Undefined:
197 QMessageBox::critical(this, 211 QMessageBox::critical(this,
198 QObject::tr("Error"), 212 QObject::tr("Error"),
199 QObject::tr("Undefined error occured.")); 213 QObject::tr("Undefined error occured."));
200 break; 214 break;
201 case FileTransferLayer::Incomplete: 215 case FileTransferLayer::Incomplete:
202 QMessageBox::critical(this, 216 QMessageBox::critical(this,
203 QObject::tr("Error"), 217 QObject::tr("Error"),
204 QObject::tr("Incomplete transfer.")); 218 QObject::tr("Incomplete transfer."));
205 break; 219 break;
206 case FileTransferLayer::Unknown: 220 case FileTransferLayer::Unknown:
207 default: 221 default:
208 QMessageBox::critical(this, 222 QMessageBox::critical(this,
209 QObject::tr("Error"), 223 QObject::tr("Error"),
210 QObject::tr("Unknown error occured.")); 224 QObject::tr("Unknown error occured."));
211 break; 225 break;
212 } 226 }
227
228 m_autocleanup = 1;
213} 229}
214 230
215void TransferDialog::slotSent() 231void TransferDialog::slotSent()
216{ 232{
217 QMessageBox::information(this, QObject::tr("Sent"), QObject::tr("File has been sent.")); 233 QMessageBox::information(this, QObject::tr("Sent"), QObject::tr("File has been sent."));
218 ok->setEnabled(true); 234 ok->setEnabled(true);
219 statusbar->setText(QObject::tr("Ready")); 235 statusbar->setText(QObject::tr("Ready"));
236 m_autocleanup = 1;
220} 237}
221 238
222void TransferDialog::slotReceived(const QString& file) 239void TransferDialog::slotReceived(const QString& file)
223{ 240{
224 QMessageBox::information(this, QObject::tr("Sent"), QObject::tr("File has been received as %1.").arg(file)); 241 QMessageBox::information(this, QObject::tr("Sent"), QObject::tr("File has been received as %1.").arg(file));
225 ok->setEnabled(true); 242 ok->setEnabled(true);
226 statusbar->setText(QObject::tr("Ready")); 243 statusbar->setText(QObject::tr("Ready"));
244 m_autocleanup = 1;
227} 245}
228 246
229void TransferDialog::slotMode(int id) 247void TransferDialog::slotMode(int id)
230{ 248{
231 if(id == id_send) 249 if(id == id_send)
232 { 250 {
233 selector->setEnabled(true); 251 selector->setEnabled(true);
234 filename->setEnabled(true); 252 filename->setEnabled(true);
235 } 253 }
236 else 254 else
237 { 255 {
238 selector->setEnabled(false); 256 selector->setEnabled(false);
239 filename->setEnabled(false); 257 filename->setEnabled(false);
240 } 258 }
241 m_transfermode = id; 259 m_transfermode = id;
242} 260}
243 261
diff --git a/noncore/apps/opie-console/transferdialog.h b/noncore/apps/opie-console/transferdialog.h
index de3a5cf..1b27f16 100644
--- a/noncore/apps/opie-console/transferdialog.h
+++ b/noncore/apps/opie-console/transferdialog.h
@@ -15,37 +15,40 @@ class ReceiveLayer;
15class TransferDialog : public QDialog 15class TransferDialog : public QDialog
16{ 16{
17 Q_OBJECT 17 Q_OBJECT
18 public: 18 public:
19 TransferDialog(MainWindow *parent = 0l, const char *name = 0l); 19 TransferDialog(MainWindow *parent = 0l, const char *name = 0l);
20 ~TransferDialog(); 20 ~TransferDialog();
21 21
22 public slots: 22 public slots:
23 void slotFilename(); 23 void slotFilename();
24 void slotTransfer(); 24 void slotTransfer();
25 void slotCancel(); 25 void slotCancel();
26 void slotProgress(const QString&, int, int, int, int, int); 26 void slotProgress(const QString&, int, int, int, int, int);
27 void slotError(int error, const QString& message); 27 void slotError(int error, const QString& message);
28 void slotSent(); 28 void slotSent();
29 void slotReceived(const QString& file); 29 void slotReceived(const QString& file);
30 void slotMode(int id); 30 void slotMode(int id);
31 31
32 private: 32 private:
33 enum Modes 33 enum Modes
34 { 34 {
35 id_send, 35 id_send,
36 id_receive 36 id_receive
37 }; 37 };
38 38
39 void cleanup();
40
39 QLineEdit *filename; 41 QLineEdit *filename;
40 QComboBox *protocol; 42 QComboBox *protocol;
41 QProgressBar *progressbar; 43 QProgressBar *progressbar;
42 QLabel *statusbar; 44 QLabel *statusbar;
43 QPushButton *ok, *cancel, *selector; 45 QPushButton *ok, *cancel, *selector;
44 MainWindow* m_win; 46 MainWindow* m_win;
45 FileTransferLayer* m_lay; 47 FileTransferLayer* m_lay;
46 ReceiveLayer *m_recvlay; 48 ReceiveLayer *m_recvlay;
47 int m_transfermode; 49 int m_transfermode;
50 int m_autocleanup;
48}; 51};
49 52
50#endif 53#endif
51 54