-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 | |||
@@ -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 | ||
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; |
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) | |||
92 | TransferDialog::~TransferDialog() | 94 | TransferDialog::~TransferDialog() |
93 | { | 95 | { |
94 | } | 96 | } |
95 | 97 | ||
96 | void TransferDialog::slotFilename() | 98 | void 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 | ||
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())); |
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 | ||
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 | ||
175 | void TransferDialog::slotError(int error, const QString& message) | 189 | void 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 | ||
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); |
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; | |||
15 | class TransferDialog : public QDialog | 15 | class 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 | ||