-rw-r--r-- | noncore/net/opietooth/manager/obexftpdialog.cpp | 99 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/obexftpdialog.h | 2 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/obexftpdialogbase.cpp | 89 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/obexftpdialogbase.h | 18 | ||||
-rw-r--r-- | noncore/net/opietooth/manager/obexftpdialogbase.ui | 211 |
5 files changed, 283 insertions, 136 deletions
diff --git a/noncore/net/opietooth/manager/obexftpdialog.cpp b/noncore/net/opietooth/manager/obexftpdialog.cpp index c77d49d..80a81b4 100644 --- a/noncore/net/opietooth/manager/obexftpdialog.cpp +++ b/noncore/net/opietooth/manager/obexftpdialog.cpp @@ -1,154 +1,180 @@ /* $Id$ */ /* OBEX file browser dialog */ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /* * This code uses and is based on ObexFTP project code: http://triq.net/obexftp/ */ #include <sys/stat.h> +#include <sys/types.h> +#include <unistd.h> +#include <string.h> +#include <errno.h> #include <qpushbutton.h> #include <qmessagebox.h> #include <qmultilineedit.h> +#include <qspinbox.h> +#include <qcombobox.h> #include <qlistview.h> #include <qprogressbar.h> #include <qlabel.h> #include <qlayout.h> #include <errno.h> #include "obexftpdialog.h" #include "filelistitem.h" #include <qpe/qpeapplication.h> #include <qpe/resource.h> #include <qpe/config.h> #include <opie2/odebug.h> #include <opie2/ofileselector.h> using namespace Opie::Core; using namespace Opie::Ui; using namespace OpieTooth; #define MAX_PROGRESS 14 //Maximal progress bar static void info_cb(int event, const char *msg, int len, void* data); /* * Public constructor * device - bluetooth address of the device * port - port to connect to */ ObexFtpDialog::ObexFtpDialog(const QString& device, int port, QWidget* parent, const char* name, bool modal, WFlags fl) : ObexFtpDialogBase(parent, name, modal, fl), m_device(device), m_port(port), curdir("") { client = NULL; + nRetries = 3; transport = OBEX_TRANS_BLUETOOTH; use_conn = TRUE; use_path = TRUE; progressStatus = 0; localCurdir = "/"; browseLog->setEdited(FALSE); fileList->setSorting(1); fileList->clear(); fileProgress->setTotalSteps(MAX_PROGRESS); statusBar->clear(); localLayout = new QVBoxLayout(localFs); localLayout->setSpacing( 0 ); localLayout->setMargin( 0 ); destFile = new OFileSelector(localFs, OFileSelector::FileSelector, OFileSelector::ExtendedAll, localCurdir, ""); destFile->setCloseVisible(false); destFile->setNewVisible(false); localLayout->addWidget(destFile); + nReries->setValue(nRetries); connect(browseOK, SIGNAL(clicked()), SLOT(slotBrowse())); connect(fileList, SIGNAL(clicked(QListViewItem*)), SLOT(slotCd(QListViewItem*))); connect(getButton, SIGNAL(clicked()), SLOT(getFile())); + connect(putButton, + SIGNAL(clicked()), + SLOT(putFile())); connect(destFile, SIGNAL(dirSelected (const QString&)), SLOT(updateDir(const QString&))); } ObexFtpDialog::~ObexFtpDialog() { if (client != NULL) { obexftp_disconnect(client); obexftp_close(client); } } /* * Do device browsing */ void ObexFtpDialog::slotBrowse() { stat_entry_t* ent; //Directory entry void *dir; //Directory to read - const uint8_t use_uuid[] = __UUID_FBS_bytes; - int len = sizeof(UUID_FBS); + const uint8_t* use_uuid; //uuid + int len; //uuid length FileListItem* root; //root node - stat_entry_t* st; //File statistics int fsize; //file size + bool numOk; //true if the string is a number + int tmp; //just a temp var status(tr("Connecting to ") + m_device); odebug << "Browse device " << m_device << oendl; browseLog->clear(); fileList->clear(); progressStatus = 0; + fileProgress->setTotalSteps(MAX_PROGRESS); fileProgress->reset(); + + //Get parameters + tmp = nReries->text().toInt(&numOk); + if (numOk) + nRetries = tmp; + if (uuidType->currentText() == "FBS") { + use_uuid = UUID_FBS; + len = sizeof(UUID_FBS); + } else if (uuidType->currentText() == "S45") { + use_uuid = UUID_S45; + len = sizeof(UUID_S45); + } else { + use_uuid = UUID_FBS; + len = sizeof(UUID_FBS); + } + if (!cli_connect_uuid(use_uuid, len)) { log("Connection failed"); errBox("Connection failed"); status("Connection failed"); return; } else { log(QString("Connected to ") + m_device); status(QString("Connected to ") + m_device); } /* List folder */ root = new FileListItem(fileList, NULL); dir = obexftp_opendir(client, curdir); while ((ent = obexftp_readdir(dir)) != NULL) { FileListItem* a; //List view item -#if 0 //Causes sigsegv if (ent->mode != 16877) { - st = obexftp_stat(client, ent->name); - fsize = st->size; + fsize = ent->size; } else -#endif fsize = 0; log(QString(ent->name) + QString(" ") + QString::number(ent->mode)); a = new FileListItem(fileList, ent, fsize); } obexftp_closedir(dir); } //Error message box int ObexFtpDialog::errBox(QCString msg) { return QMessageBox::critical(this, tr("ObexFTP error"), msg); } int ObexFtpDialog::errBox(QString msg) { return QMessageBox::critical(this, tr("ObexFTP error"), msg); } int ObexFtpDialog::errBox(const char* msg) { return QMessageBox::critical(this, tr("ObexFTP error"), tr(msg)); } @@ -201,139 +227,190 @@ void ObexFtpDialog::slotCd(QListViewItem* item) if (obexftp_setpath(client, curdir, 0) < 0) log("CD failed"); slotBrowse(); } } /* * Get the file */ void ObexFtpDialog::getFile() { FileListItem* file = (FileListItem*)fileList->selectedItem(); int result; if (file == NULL) return; file2get = "/"; local = localCurdir; if (local == "") { errBox("Select a destination first"); return; } if (local.right(1) != "/") local += "/"; if (file->gettype() == IS_FILE) { + if (client == NULL) { + errBox("No connection established"); + return; + } file2get += curdir; if (curdir != "" && curdir.right(1) != "/") file2get += "/"; file2get += file->text(0); local += file->text(0); odebug << "Copy " << file2get << " to " << local << oendl; progressStatus = 0; + fileProgress->setTotalSteps(file->getsize() / 1024); fileProgress->reset(); status(tr("Receiving file ") + file2get); result = obexftp_get(client, local, file2get); if (result < 0) { log(file2get + QString(" receive ERROR")); errBox(file2get + QString(" receive ERROR")); status(file2get + QString(" receive ERROR")); } else { log(file2get + QString(" received")); status(file2get + QString(" received")); destFile->reread(); } } } +/* + * Put the file + */ +void ObexFtpDialog::putFile() +{ + int result; //OPeration result + int idx; //Index of a symbol in the string + struct stat localFStat; //Local file information + + if (client == NULL) { + errBox("No connection established"); + return; + } + local = destFile->selectedName(); + if (local == "") { + errBox("No file slected"); + return; + } + result = stat(local, &localFStat); + if (result < 0) { + errBox(tr("Wrong file selected ") + local + tr(" ") + + tr(strerror(errno))); + return; + } + idx = local.findRev('/'); + if (idx > 0) { + file2get = local.right(local.length() - idx - 1); + } + else + file2get = local; + + odebug << "Copy " << local << " to " << file2get << oendl; + progressStatus = 0; + fileProgress->setTotalSteps(localFStat.st_size / 1024); + fileProgress->reset(); + status(tr("Sending file ") + local); + result = obexftp_put_file(client, local, file2get); + if (result < 0) { + log(local + QString(" send ERROR")); + errBox(local + QString(" send ERROR")); + status(local + QString(" send ERROR")); + } + else { + log(local + QString(" sent")); + status(local + QString(" sent")); + } +} + /* connect with given uuid. re-connect every time */ int ObexFtpDialog::cli_connect_uuid(const uint8_t *uuid, int uuid_len) { int retry; if (client != NULL) return TRUE; /* Open */ client = obexftp_open (transport, NULL, info_cb, this); if(client == NULL) { errBox("Error opening obexftp-client"); return FALSE; } if (!use_conn) client->quirks &= ~OBEXFTP_CONN_HEADER; if (!use_path) client->quirks &= ~OBEXFTP_SPLIT_SETPATH; - for (retry = 0; retry < 3; retry++) { + for (retry = 0; retry < nRetries; retry++) { /* Connect */ switch (transport) { case OBEX_TRANS_IRDA: if (obexftp_connect_uuid(client, NULL, 0, uuid, uuid_len) >= 0) return TRUE; break; case OBEX_TRANS_BLUETOOTH: if (obexftp_connect_uuid(client, m_device, m_port, uuid, uuid_len) >= 0) return TRUE; break; default: errBox("Transport type unknown"); return FALSE; } log(tr("Still trying to connect")); } client = NULL; return FALSE; } /* * Put a message to the log window */ void ObexFtpDialog::log(QString str) { browseLog->append(str); } void ObexFtpDialog::log(QCString str) { browseLog->append(str); } void ObexFtpDialog::log(QString& str) { browseLog->append(str); } void ObexFtpDialog::log(const char* str) { browseLog->append(str); } void ObexFtpDialog::incProgress() { - odebug << "Progress " << progressStatus << oendl; - if (progressStatus < MAX_PROGRESS) { + if (progressStatus < fileProgress->totalSteps()) fileProgress->setProgress(progressStatus++); - } } void ObexFtpDialog::doneProgress() { progressStatus = 0; fileProgress->reset(); } void ObexFtpDialog::updateDir(const QString& newdir) { localCurdir = newdir; } /* * Event callback function */ static void info_cb(int event, const char *msg, int len, void* data) { ObexFtpDialog* dlg = (ObexFtpDialog*)data; QCString cmsg(msg, len); //Message to display switch (event) { case OBEXFTP_EV_ERRMSG: diff --git a/noncore/net/opietooth/manager/obexftpdialog.h b/noncore/net/opietooth/manager/obexftpdialog.h index b13efe5..7000f61 100644 --- a/noncore/net/opietooth/manager/obexftpdialog.h +++ b/noncore/net/opietooth/manager/obexftpdialog.h @@ -35,32 +35,34 @@ namespace OpieTooth { void incProgress(); void doneProgress(); protected: int cli_connect_uuid(const uint8_t *uuid, int uuid_len); int errBox(QCString msg); //Error message box int errBox(QString msg); //Error message box int errBox(const char* msg); //Error message box void status(QCString msg); //Text in the status bar void status(QString msg); //Text in the status bar void status(const char* msg); //Text in the status bar protected: QString m_device; //device MAC address int m_port; //port int transport; //transport type bool use_conn; bool use_path; obexftp_client_t* client; //Obex ftp client handler QString curdir; //Current directory on device QString localCurdir; //Local current directory QString file2get; //Remote file name QString local; //Local file name int progressStatus; //Progress status Opie::Ui::OFileSelector* destFile; //Destination file or directory QVBoxLayout* localLayout; //Window layout + int nRetries; //Number of retries (on connection) private slots: void slotBrowse(); void slotCd(QListViewItem* item); void getFile(); + void putFile(); void updateDir(const QString& newdir); }; }; #endif diff --git a/noncore/net/opietooth/manager/obexftpdialogbase.cpp b/noncore/net/opietooth/manager/obexftpdialogbase.cpp index 0640511..dd54b5f 100644 --- a/noncore/net/opietooth/manager/obexftpdialogbase.cpp +++ b/noncore/net/opietooth/manager/obexftpdialogbase.cpp @@ -1,131 +1,156 @@ /**************************************************************************** ** Form implementation generated from reading ui file 'obexftpdialogbase.ui' ** -** Created: Sun Mar 19 16:47:24 2006 +** Created: Tue Mar 21 00:29:33 2006 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #include "obexftpdialogbase.h" #include <qcombobox.h> #include <qheader.h> #include <qlabel.h> -#include <qlineedit.h> #include <qlistview.h> #include <qmultilineedit.h> #include <qprogressbar.h> #include <qpushbutton.h> +#include <qspinbox.h> #include <qtabwidget.h> #include <qwidget.h> #include <qlayout.h> #include <qvariant.h> #include <qtooltip.h> #include <qwhatsthis.h> /* * Constructs a ObexFtpDialogBase which is a child of 'parent', with the * name 'name' and widget flags set to 'f' * * The dialog will by default be modeless, unless you set 'modal' to * TRUE to construct a modal dialog. */ ObexFtpDialogBase::ObexFtpDialogBase( QWidget* parent, const char* name, bool modal, WFlags fl ) : QDialog( parent, name, modal, fl ) { if ( !name ) setName( "ObexFtpDialogBase" ); - resize( 221, 396 ); + resize( 267, 312 ); setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)7, (QSizePolicy::SizeType)7, sizePolicy().hasHeightForWidth() ) ); setCaption( tr( "Browse device" ) ); ObexFtpDialogBaseLayout = new QVBoxLayout( this ); ObexFtpDialogBaseLayout->setSpacing( 0 ); ObexFtpDialogBaseLayout->setMargin( 0 ); obexFtpTab = new QTabWidget( this, "obexFtpTab" ); files = new QWidget( obexFtpTab, "files" ); filesLayout = new QVBoxLayout( files ); filesLayout->setSpacing( 0 ); filesLayout->setMargin( 0 ); - Layout9 = new QVBoxLayout; - Layout9->setSpacing( 6 ); - Layout9->setMargin( 0 ); + Layout13 = new QGridLayout; + Layout13->setSpacing( 6 ); + Layout13->setMargin( 0 ); fileList = new QListView( files, "fileList" ); fileList->addColumn( tr( "Name" ) ); fileList->addColumn( tr( "Size" ) ); - Layout9->addWidget( fileList ); + + Layout13->addWidget( fileList, 0, 0 ); fileProgress = new QProgressBar( files, "fileProgress" ); - Layout9->addWidget( fileProgress ); - buttons = new QHBoxLayout; - buttons->setSpacing( 6 ); - buttons->setMargin( 0 ); + Layout13->addWidget( fileProgress, 1, 0 ); - getButton = new QPushButton( files, "getButton" ); - getButton->setText( tr( "Get file" ) ); - buttons->addWidget( getButton ); + Layout11 = new QHBoxLayout; + Layout11->setSpacing( 6 ); + Layout11->setMargin( 0 ); browseOK = new QPushButton( files, "browseOK" ); browseOK->setText( tr( "Browse" ) ); - buttons->addWidget( browseOK ); - Layout9->addLayout( buttons ); + Layout11->addWidget( browseOK ); + + getButton = new QPushButton( files, "getButton" ); + getButton->setText( tr( "Get file" ) ); + Layout11->addWidget( getButton ); + + putButton = new QPushButton( files, "putButton" ); + putButton->setText( tr( "Put file" ) ); + Layout11->addWidget( putButton ); + + Layout13->addLayout( Layout11, 2, 0 ); statusBar = new QLabel( files, "statusBar" ); statusBar->setText( tr( "" ) ); - Layout9->addWidget( statusBar ); - filesLayout->addLayout( Layout9 ); + + Layout13->addWidget( statusBar, 3, 0 ); + filesLayout->addLayout( Layout13 ); obexFtpTab->insertTab( files, tr( "Device" ) ); localFs = new QWidget( obexFtpTab, "localFs" ); obexFtpTab->insertTab( localFs, tr( "Local" ) ); options = new QWidget( obexFtpTab, "options" ); - connRetries = new QLabel( options, "connRetries" ); - connRetries->setGeometry( QRect( 10, 45, 100, 16 ) ); - connRetries->setText( tr( "Retry to connect" ) ); + QWidget* privateLayoutWidget = new QWidget( options, "Layout5" ); + privateLayoutWidget->setGeometry( QRect( 45, 5, 162, 63 ) ); + Layout5 = new QVBoxLayout( privateLayoutWidget ); + Layout5->setSpacing( 6 ); + Layout5->setMargin( 0 ); - nReries = new QLineEdit( options, "nReries" ); - nReries->setGeometry( QRect( 115, 40, 60, 23 ) ); + Layout3 = new QHBoxLayout; + Layout3->setSpacing( 6 ); + Layout3->setMargin( 0 ); - uuidLabel = new QLabel( options, "uuidLabel" ); - uuidLabel->setGeometry( QRect( 15, 20, 67, 15 ) ); + uuidLabel = new QLabel( privateLayoutWidget, "uuidLabel" ); uuidLabel->setText( tr( "uuid type" ) ); + Layout3->addWidget( uuidLabel ); - uuidType = new QComboBox( FALSE, options, "uuidType" ); + uuidType = new QComboBox( FALSE, privateLayoutWidget, "uuidType" ); uuidType->insertItem( tr( "FBS" ) ); uuidType->insertItem( tr( "S45" ) ); - uuidType->setGeometry( QRect( 85, 10, 100, 30 ) ); + Layout3->addWidget( uuidType ); + Layout5->addLayout( Layout3 ); + + Layout4 = new QHBoxLayout; + Layout4->setSpacing( 6 ); + Layout4->setMargin( 0 ); + + connRetries = new QLabel( privateLayoutWidget, "connRetries" ); + connRetries->setText( tr( "Retry to connect" ) ); + Layout4->addWidget( connRetries ); + + nReries = new QSpinBox( privateLayoutWidget, "nReries" ); + nReries->setButtonSymbols( QSpinBox::PlusMinus ); + Layout4->addWidget( nReries ); + Layout5->addLayout( Layout4 ); obexFtpTab->insertTab( options, tr( "Options" ) ); browse = new QWidget( obexFtpTab, "browse" ); browseLayout = new QHBoxLayout( browse ); browseLayout->setSpacing( 0 ); browseLayout->setMargin( 0 ); browseLog = new QMultiLineEdit( browse, "browseLog" ); browseLayout->addWidget( browseLog ); obexFtpTab->insertTab( browse, tr( "Log" ) ); ObexFtpDialogBaseLayout->addWidget( obexFtpTab ); // tab order setTabOrder( obexFtpTab, fileList ); - setTabOrder( fileList, getButton ); - setTabOrder( getButton, browseOK ); - setTabOrder( browseOK, uuidType ); - setTabOrder( uuidType, nReries ); - setTabOrder( nReries, browseLog ); + setTabOrder( fileList, browseOK ); + setTabOrder( browseOK, getButton ); + setTabOrder( getButton, putButton ); + setTabOrder( putButton, uuidType ); + setTabOrder( uuidType, browseLog ); } /* * Destroys the object and frees any allocated resources */ ObexFtpDialogBase::~ObexFtpDialogBase() { // no need to delete child widgets, Qt does it all for us } diff --git a/noncore/net/opietooth/manager/obexftpdialogbase.h b/noncore/net/opietooth/manager/obexftpdialogbase.h index 3a4937a..32a313d 100644 --- a/noncore/net/opietooth/manager/obexftpdialogbase.h +++ b/noncore/net/opietooth/manager/obexftpdialogbase.h @@ -1,60 +1,64 @@ /**************************************************************************** ** Form interface generated from reading ui file 'obexftpdialogbase.ui' ** -** Created: Sun Mar 19 16:46:33 2006 +** Created: Tue Mar 21 00:28:12 2006 ** by: The User Interface Compiler (uic) ** ** WARNING! All changes made in this file will be lost! ****************************************************************************/ #ifndef OBEXFTPDIALOGBASE_H #define OBEXFTPDIALOGBASE_H #include <qvariant.h> #include <qdialog.h> class QVBoxLayout; class QHBoxLayout; class QGridLayout; class QComboBox; class QLabel; -class QLineEdit; class QListView; class QListViewItem; class QMultiLineEdit; class QProgressBar; class QPushButton; +class QSpinBox; class QTabWidget; class QWidget; class ObexFtpDialogBase : public QDialog { Q_OBJECT public: ObexFtpDialogBase( QWidget* parent = 0, const char* name = 0, bool modal = FALSE, WFlags fl = 0 ); ~ObexFtpDialogBase(); QTabWidget* obexFtpTab; QWidget* files; QListView* fileList; QProgressBar* fileProgress; - QPushButton* getButton; QPushButton* browseOK; + QPushButton* getButton; + QPushButton* putButton; QLabel* statusBar; QWidget* localFs; QWidget* options; - QLabel* connRetries; - QLineEdit* nReries; QLabel* uuidLabel; QComboBox* uuidType; + QLabel* connRetries; + QSpinBox* nReries; QWidget* browse; QMultiLineEdit* browseLog; protected: QVBoxLayout* ObexFtpDialogBaseLayout; QVBoxLayout* filesLayout; - QVBoxLayout* Layout9; - QHBoxLayout* buttons; + QGridLayout* Layout13; + QHBoxLayout* Layout11; + QVBoxLayout* Layout5; + QHBoxLayout* Layout3; + QHBoxLayout* Layout4; QHBoxLayout* browseLayout; }; #endif // OBEXFTPDIALOGBASE_H diff --git a/noncore/net/opietooth/manager/obexftpdialogbase.ui b/noncore/net/opietooth/manager/obexftpdialogbase.ui index 86e87e4..b372b9d 100644 --- a/noncore/net/opietooth/manager/obexftpdialogbase.ui +++ b/noncore/net/opietooth/manager/obexftpdialogbase.ui @@ -1,39 +1,39 @@ <!DOCTYPE UI><UI> <class>ObexFtpDialogBase</class> <widget> <class>QDialog</class> <property stdset="1"> <name>name</name> <cstring>ObexFtpDialogBase</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>221</width> - <height>396</height> + <width>267</width> + <height>312</height> </rect> </property> <property stdset="1"> <name>sizePolicy</name> <sizepolicy> <hsizetype>7</hsizetype> <vsizetype>7</vsizetype> </sizepolicy> </property> <property stdset="1"> <name>caption</name> <string>Browse device</string> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <vbox> <property stdset="1"> <name>margin</name> <number>0</number> </property> @@ -55,278 +55,317 @@ </property> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>files</cstring> </property> <attribute> <name>title</name> <string>Device</string> </attribute> <vbox> <property stdset="1"> <name>margin</name> <number>0</number> </property> <property stdset="1"> <name>spacing</name> <number>0</number> </property> <widget> <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> - <cstring>Layout9</cstring> + <cstring>Layout13</cstring> </property> - <vbox> + <grid> <property stdset="1"> <name>margin</name> <number>0</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> - <widget> + <widget row="0" column="0" > <class>QListView</class> <column> <property> <name>text</name> <string>Name</string> </property> <property> <name>clickable</name> <bool>true</bool> </property> <property> <name>resizeable</name> <bool>true</bool> </property> </column> <column> <property> <name>text</name> <string>Size</string> </property> <property> <name>clickable</name> <bool>true</bool> </property> <property> <name>resizeable</name> <bool>true</bool> </property> </column> <property stdset="1"> <name>name</name> <cstring>fileList</cstring> </property> </widget> - <widget> + <widget row="1" column="0" > <class>QProgressBar</class> <property stdset="1"> <name>name</name> <cstring>fileProgress</cstring> </property> </widget> - <widget> + <widget row="2" column="0" > <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> - <cstring>buttons</cstring> + <cstring>Layout11</cstring> </property> <hbox> <property stdset="1"> <name>margin</name> <number>0</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> <widget> <class>QPushButton</class> <property stdset="1"> <name>name</name> + <cstring>browseOK</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Browse</string> + </property> + </widget> + <widget> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> <cstring>getButton</cstring> </property> <property stdset="1"> <name>text</name> <string>Get file</string> </property> </widget> <widget> <class>QPushButton</class> <property stdset="1"> <name>name</name> - <cstring>browseOK</cstring> + <cstring>putButton</cstring> </property> <property stdset="1"> <name>text</name> - <string>Browse</string> + <string>Put file</string> </property> </widget> </hbox> </widget> - <widget> + <widget row="3" column="0" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>statusBar</cstring> </property> <property stdset="1"> <name>text</name> <string></string> </property> </widget> - </vbox> + </grid> </widget> </vbox> </widget> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>localFs</cstring> </property> <attribute> <name>title</name> <string>Local</string> </attribute> </widget> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>options</cstring> </property> <attribute> <name>title</name> <string>Options</string> </attribute> <widget> - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>connRetries</cstring> - </property> - <property stdset="1"> - <name>geometry</name> - <rect> - <x>10</x> - <y>45</y> - <width>100</width> - <height>16</height> - </rect> - </property> - <property stdset="1"> - <name>text</name> - <string>Retry to connect</string> - </property> - </widget> - <widget> - <class>QLineEdit</class> + <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> - <cstring>nReries</cstring> + <cstring>Layout5</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> - <x>115</x> - <y>40</y> - <width>60</width> - <height>23</height> + <x>45</x> + <y>5</y> + <width>162</width> + <height>63</height> </rect> </property> - </widget> - <widget> - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>uuidLabel</cstring> - </property> - <property stdset="1"> - <name>geometry</name> - <rect> - <x>15</x> - <y>20</y> - <width>67</width> - <height>15</height> - </rect> - </property> - <property stdset="1"> - <name>text</name> - <string>uuid type</string> - </property> - </widget> - <widget> - <class>QComboBox</class> - <item> - <property> - <name>text</name> - <string>FBS</string> + <vbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> </property> - </item> - <item> - <property> - <name>text</name> - <string>S45</string> + <property stdset="1"> + <name>spacing</name> + <number>6</number> </property> - </item> - <property stdset="1"> - <name>name</name> - <cstring>uuidType</cstring> - </property> - <property stdset="1"> - <name>geometry</name> - <rect> - <x>85</x> - <y>10</y> - <width>100</width> - <height>30</height> - </rect> - </property> + <widget> + <class>QLayoutWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Layout3</cstring> + </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>uuidLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>uuid type</string> + </property> + </widget> + <widget> + <class>QComboBox</class> + <item> + <property> + <name>text</name> + <string>FBS</string> + </property> + </item> + <item> + <property> + <name>text</name> + <string>S45</string> + </property> + </item> + <property stdset="1"> + <name>name</name> + <cstring>uuidType</cstring> + </property> + </widget> + </hbox> + </widget> + <widget> + <class>QLayoutWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>Layout4</cstring> + </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>connRetries</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Retry to connect</string> + </property> + </widget> + <widget> + <class>QSpinBox</class> + <property stdset="1"> + <name>name</name> + <cstring>nReries</cstring> + </property> + <property stdset="1"> + <name>buttonSymbols</name> + <enum>PlusMinus</enum> + </property> + </widget> + </hbox> + </widget> + </vbox> </widget> </widget> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>browse</cstring> </property> <attribute> <name>title</name> <string>Log</string> </attribute> <hbox> <property stdset="1"> <name>margin</name> <number>0</number> </property> <property stdset="1"> <name>spacing</name> <number>0</number> </property> <widget> <class>QMultiLineEdit</class> <property stdset="1"> <name>name</name> <cstring>browseLog</cstring> </property> </widget> </hbox> </widget> </widget> </vbox> </widget> <tabstops> <tabstop>obexFtpTab</tabstop> <tabstop>fileList</tabstop> - <tabstop>getButton</tabstop> <tabstop>browseOK</tabstop> + <tabstop>getButton</tabstop> + <tabstop>putButton</tabstop> <tabstop>uuidType</tabstop> - <tabstop>nReries</tabstop> <tabstop>browseLog</tabstop> </tabstops> </UI> |