-rw-r--r-- | noncore/net/opietooth/manager/obexftpdialog.cpp | 29 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/obexftpdialog.h | 4 |
2 files changed, 24 insertions, 9 deletions
diff --git a/noncore/net/opietooth/manager/obexftpdialog.cpp b/noncore/net/opietooth/manager/obexftpdialog.cpp index 2f04ecf..efb3ff2 100644 --- a/noncore/net/opietooth/manager/obexftpdialog.cpp +++ b/noncore/net/opietooth/manager/obexftpdialog.cpp | |||
@@ -109,16 +109,21 @@ ObexFtpDialog::~ObexFtpDialog() | |||
109 | if (client != NULL) { | 109 | if (client != NULL) { |
110 | obexftp_disconnect(client); | 110 | obexftp_disconnect(client); |
111 | obexftp_close(client); | 111 | obexftp_close(client); |
112 | } | 112 | } |
113 | } | 113 | } |
114 | 114 | ||
115 | void ObexFtpDialog::slotBrowse() | ||
116 | { | ||
117 | doBrowse(TRUE); | ||
118 | } | ||
119 | |||
115 | /* | 120 | /* |
116 | * Do device browsing | 121 | * Do device browsing |
117 | */ | 122 | */ |
118 | void ObexFtpDialog::slotBrowse() | 123 | void ObexFtpDialog::doBrowse(bool reconnect) |
119 | { | 124 | { |
120 | stat_entry_t* ent; //Directory entry | 125 | stat_entry_t* ent; //Directory entry |
121 | void *dir; //Directory to read | 126 | void *dir; //Directory to read |
122 | const uint8_t* use_uuid; //uuid | 127 | const uint8_t* use_uuid; //uuid |
123 | int len; //uuid length | 128 | int len; //uuid length |
124 | FileListItem* root; //root node | 129 | FileListItem* root; //root node |
@@ -146,13 +151,13 @@ void ObexFtpDialog::slotBrowse() | |||
146 | len = sizeof(UUID_S45); | 151 | len = sizeof(UUID_S45); |
147 | } else { | 152 | } else { |
148 | use_uuid = UUID_FBS; | 153 | use_uuid = UUID_FBS; |
149 | len = sizeof(UUID_FBS); | 154 | len = sizeof(UUID_FBS); |
150 | } | 155 | } |
151 | 156 | ||
152 | if (!cli_connect_uuid(use_uuid, len)) { | 157 | if (!cli_connect_uuid(use_uuid, len, reconnect)) { |
153 | log(tr("Connection failed: ") + tr(strerror(errno))); | 158 | log(tr("Connection failed: ") + tr(strerror(errno))); |
154 | errBox("Connection failed"); | 159 | errBox("Connection failed"); |
155 | status("Connection failed"); | 160 | status("Connection failed"); |
156 | return; | 161 | return; |
157 | } | 162 | } |
158 | else { | 163 | else { |
@@ -237,13 +242,13 @@ void ObexFtpDialog::slotCd(QListViewItem* item) | |||
237 | curdir += "/"; | 242 | curdir += "/"; |
238 | curdir += file->text(0); | 243 | curdir += file->text(0); |
239 | } | 244 | } |
240 | odebug << "Browse " << curdir << oendl; | 245 | odebug << "Browse " << curdir << oendl; |
241 | if (obexftp_setpath(client, curdir, 0) < 0) | 246 | if (obexftp_setpath(client, curdir, 0) < 0) |
242 | log(tr("CD failed: ") + tr(strerror(errno))); | 247 | log(tr("CD failed: ") + tr(strerror(errno))); |
243 | slotBrowse(); | 248 | doBrowse(); |
244 | } | 249 | } |
245 | } | 250 | } |
246 | 251 | ||
247 | /* | 252 | /* |
248 | * Copy file from a remote device to the local device | 253 | * Copy file from a remote device to the local device |
249 | */ | 254 | */ |
@@ -330,13 +335,13 @@ void ObexFtpDialog::putFile() | |||
330 | if (result < 0) { | 335 | if (result < 0) { |
331 | log(local + QString(" send ERROR:\n") + tr(strerror(errno))); | 336 | log(local + QString(" send ERROR:\n") + tr(strerror(errno))); |
332 | errBox(local + QString(" send ERROR")); | 337 | errBox(local + QString(" send ERROR")); |
333 | status(local + QString(" send ERROR")); | 338 | status(local + QString(" send ERROR")); |
334 | } | 339 | } |
335 | else { | 340 | else { |
336 | slotBrowse(); | 341 | doBrowse(); |
337 | log(local + QString(" sent")); | 342 | log(local + QString(" sent")); |
338 | status(local + QString(" sent")); | 343 | status(local + QString(" sent")); |
339 | } | 344 | } |
340 | } | 345 | } |
341 | 346 | ||
342 | /* | 347 | /* |
@@ -368,24 +373,32 @@ void ObexFtpDialog::delFile() | |||
368 | if (result < 0) { | 373 | if (result < 0) { |
369 | log(file2get + QString(" remove ERROR\n") + tr(strerror(errno))); | 374 | log(file2get + QString(" remove ERROR\n") + tr(strerror(errno))); |
370 | errBox(file2get + QString(" remove ERROR")); | 375 | errBox(file2get + QString(" remove ERROR")); |
371 | status(file2get + QString(" remove ERROR")); | 376 | status(file2get + QString(" remove ERROR")); |
372 | } | 377 | } |
373 | else { | 378 | else { |
374 | slotBrowse(); | 379 | doBrowse(); |
375 | log(file2get + QString(" removed")); | 380 | log(file2get + QString(" removed")); |
376 | status(file2get + QString(" removed")); | 381 | status(file2get + QString(" removed")); |
377 | } | 382 | } |
378 | } | 383 | } |
379 | 384 | ||
380 | /* connect with given uuid. re-connect every time */ | 385 | /* connect with given uuid. re-connect every time */ |
381 | int ObexFtpDialog::cli_connect_uuid(const uint8_t *uuid, int uuid_len) | 386 | int ObexFtpDialog::cli_connect_uuid(const uint8_t *uuid, int uuid_len, |
387 | bool reconnect) | ||
382 | { | 388 | { |
383 | int retry; | 389 | int retry; |
384 | if (client != NULL) | 390 | if (client != NULL) { |
385 | return TRUE; | 391 | if (reconnect) { |
392 | obexftp_disconnect(client); | ||
393 | obexftp_close(client); | ||
394 | sleep(3); | ||
395 | } | ||
396 | else | ||
397 | return TRUE; | ||
398 | } | ||
386 | /* Open */ | 399 | /* Open */ |
387 | client = obexftp_open (transport, NULL, info_cb, this); | 400 | client = obexftp_open (transport, NULL, info_cb, this); |
388 | if(client == NULL) { | 401 | if(client == NULL) { |
389 | errBox("Error opening obexftp-client"); | 402 | errBox("Error opening obexftp-client"); |
390 | return FALSE; | 403 | return FALSE; |
391 | } | 404 | } |
diff --git a/noncore/net/opietooth/manager/obexftpdialog.h b/noncore/net/opietooth/manager/obexftpdialog.h index 75ee95b..45699d2 100644 --- a/noncore/net/opietooth/manager/obexftpdialog.h +++ b/noncore/net/opietooth/manager/obexftpdialog.h | |||
@@ -32,19 +32,21 @@ namespace OpieTooth { | |||
32 | void log(QCString str); | 32 | void log(QCString str); |
33 | void log(const char* str); | 33 | void log(const char* str); |
34 | void log(QString& str); | 34 | void log(QString& str); |
35 | void incProgress(); | 35 | void incProgress(); |
36 | void doneProgress(); | 36 | void doneProgress(); |
37 | protected: | 37 | protected: |
38 | int cli_connect_uuid(const uint8_t *uuid, int uuid_len); | 38 | int cli_connect_uuid(const uint8_t *uuid, int uuid_len, |
39 | bool reconnect = FALSE); | ||
39 | int errBox(QCString msg); //Error message box | 40 | int errBox(QCString msg); //Error message box |
40 | int errBox(QString msg); //Error message box | 41 | int errBox(QString msg); //Error message box |
41 | int errBox(const char* msg); //Error message box | 42 | int errBox(const char* msg); //Error message box |
42 | void status(QCString msg); //Text in the status bar | 43 | void status(QCString msg); //Text in the status bar |
43 | void status(QString msg); //Text in the status bar | 44 | void status(QString msg); //Text in the status bar |
44 | void status(const char* msg); //Text in the status bar | 45 | void status(const char* msg); //Text in the status bar |
46 | void doBrowse(bool reconnect = FALSE); //Browse device | ||
45 | protected: | 47 | protected: |
46 | QString m_device; //device MAC address | 48 | QString m_device; //device MAC address |
47 | int m_port; //port | 49 | int m_port; //port |
48 | int transport; //transport type | 50 | int transport; //transport type |
49 | bool use_conn; | 51 | bool use_conn; |
50 | bool use_path; | 52 | bool use_path; |