-rw-r--r-- | noncore/apps/opie-console/transferdialog.cpp | 44 | ||||
-rw-r--r-- | noncore/apps/opie-console/transferdialog.h | 3 |
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 | |||
@@ -19,24 +19,26 @@ | |||
19 | 19 | ||
20 | TransferDialog::TransferDialog(MainWindow *parent, const char *name) | 20 | TransferDialog::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; |
@@ -104,24 +106,27 @@ void TransferDialog::slotFilename() | |||
104 | void TransferDialog::slotTransfer() | 106 | void 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())); |
@@ -129,46 +134,55 @@ void TransferDialog::slotTransfer() | |||
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 | ||
146 | void 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 | |||
141 | void TransferDialog::slotCancel() | 162 | void 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 | ||
170 | void TransferDialog::slotProgress(const QString& file, int progress, int speed, int hours, int minutes, int seconds) | 184 | void 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 | ||
@@ -201,38 +215,42 @@ void TransferDialog::slotError(int error, const QString& message) | |||
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 | ||
215 | void TransferDialog::slotSent() | 231 | void 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 | ||
222 | void TransferDialog::slotReceived(const QString& file) | 239 | void 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 | ||
229 | void TransferDialog::slotMode(int id) | 247 | void 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); |
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 | |||
@@ -27,25 +27,28 @@ class TransferDialog : public QDialog | |||
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 | ||