X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=accountdialog.cpp;h=7ca7502f574661a8953eb6dec38a43e87c9b803b;hb=61de3426104aa1a78a187fba5406a0d48c8f260a;hp=009e2201439e06caaa834f4485ef603ffc057d73;hpb=b376c5a6db43dbeca79e41e62de10ec0c87c0099;p=vlc-remote diff --git a/accountdialog.cpp b/accountdialog.cpp index 009e220..7ca7502 100644 --- a/accountdialog.cpp +++ b/accountdialog.cpp @@ -6,13 +6,32 @@ #include #include #include -#include +#include + + + +QListWidgetItem asyncTestItem(const QListWidgetItem &item) +{ + + QListWidgetItem item2= item; + item2.setText("boby"); + + return item; + +} + + + + AccountDialog::AccountDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AccountDialog) { ui->setupUi(this); + mFuturWatcher = new QFutureWatcher(this); + connect(mFuturWatcher,SIGNAL(resultReadyAt(int)),this,SLOT(setAsyncItem(int))); + connect(ui->addButton,SIGNAL(clicked()),this,SLOT(add())); connect(ui->editButton,SIGNAL(clicked()),this,SLOT(edit())); connect(ui->remButton,SIGNAL(clicked()),this,SLOT(rem())); @@ -35,6 +54,19 @@ void AccountDialog::add() dialog->exec(); load(); } +QString AccountDialog::currentIp() +{ + + QSettings settings; + QString useKey = settings.value("config/currentKey").toString(); + QString useIp ; + if ( !useKey.isEmpty()) + useIp = settings.value("account/"+useKey).toString(); + + else return QString(); + + return useIp; +} void AccountDialog::load() { @@ -44,9 +76,10 @@ void AccountDialog::load() ui->listWidget->clear(); // tjr effacer , sinon on rajoute QSettings settings; - settings.beginGroup("config"); - QString useKey = settings.value("currentKey").toString(); - settings.endGroup(); + + QString useKey = settings.value("config/currentKey").toString(); + + QList asycItems; settings.beginGroup("account"); foreach ( QString key, settings.allKeys()) @@ -61,42 +94,59 @@ void AccountDialog::load() item->setFont(font); } ui->listWidget->addItem(item); + asycItems.append(*item); } settings.endGroup(); + // ... create and add in the list widget + + // QFuture itemFutur = QtConcurrent::mapped(asycItems, asyncTestItem); -} + mFuturWatcher->setFuture(QtConcurrent::mapped(asycItems, asyncTestItem)); +} -void AccountDialog::asyncTestConnection() +QListWidgetItem AccountDialog::asyncTestItem(const QListWidgetItem& item) { + //==========> NEED TO USE POINTER TO AVOID setAsyncItem! But I don't know how;.. + QListWidgetItem newItem = item; + + QTcpSocket * socket = new QTcpSocket; QSettings settings; - settings.beginGroup("account"); + QString host = settings.value("account/"+item.text()).toString(); + QStringList hostSplit = host.split(":"); + QString ip = hostSplit.at(0); + QString port = hostSplit.at(1); - for ( int i=0; ilistWidget->count(); ++i) - { - QListWidgetItem * item = ui->listWidget->item(i); - QString key = item->text(); - QString hostIp = settings.value(key).toString(); - qDebug()<connectToHost(hostIp, 80); + socket->connectToHost(ip,port.toInt()); - if (socket->waitForConnected(1000)) - item->setBackgroundColor(Qt::green); - else - item->setBackgroundColor(Qt::red); + if (socket->waitForConnected(1000)) + newItem.setIcon(QIcon::fromTheme("widgets_tickmark_list")); + else + newItem.setIcon(QIcon::fromTheme("statusarea_presence_busy_error")); + return newItem; + + +} + + + +void AccountDialog::setAsyncItem(int row) // EDIT THE ROW AFTER ASYNC FUNCTION FINISHED +{ + QListWidgetItem newItem = mFuturWatcher->resultAt(row); + QListWidgetItem * item = ui->listWidget->item(row); + + item->setIcon(newItem.icon()); - } - settings.endGroup(); } + void AccountDialog::edit() { QString currentIp = ui->listWidget->currentItem()->data(Qt::UserRole).toString(); @@ -124,13 +174,10 @@ void AccountDialog::rem() void AccountDialog::use() { QString currentKey = ui->listWidget->currentItem()->text(); - QSettings settings; - settings.beginGroup("config"); - settings.setValue("currentKey", currentKey); - settings.endGroup(); - + settings.setValue("config/currentKey", currentKey); load(); + emit accept(); } void AccountDialog::enableUi()