Fixed playlist disappearing on remove or clear.
[vlc-remote] / accountdialog.cpp
index 71cfc93..b64f7e8 100644 (file)
@@ -1,8 +1,12 @@
 #include "accountdialog.h"
 #include "ui_accountdialog.h"
+#include "newaccountdialog.h"
 #include <QDebug>
 #include <QInputDialog>
 #include <QSettings>
+#include <QTcpSocket>
+#include <QFuture>
+#include <QtConcurrentRun>
 AccountDialog::AccountDialog(QWidget *parent) :
         QDialog(parent),
         ui(new Ui::AccountDialog)
@@ -10,8 +14,12 @@ AccountDialog::AccountDialog(QWidget *parent) :
     ui->setupUi(this);
 
     connect(ui->addButton,SIGNAL(clicked()),this,SLOT(add()));
+    connect(ui->editButton,SIGNAL(clicked()),this,SLOT(edit()));
+    connect(ui->remButton,SIGNAL(clicked()),this,SLOT(rem()));
+    connect(ui->useButton,SIGNAL(clicked()),this,SLOT(use()));
+    connect(ui->listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(enableUi()));
 
-    load();  // On charge les compte
+    load();
 
 }
 
@@ -19,46 +27,124 @@ AccountDialog::~AccountDialog()
 {
     delete ui;
 }
+
 void AccountDialog::add()
 {
-    qDebug()<<"add";
-
-    QString Ip = QInputDialog::getText(this,"ip?","enter your ip");
-    // On peut checker si c'est une bonne forme d'ip avec QRegExp
 
-    QString ipKey = "Label"+Ip;  // La faudra l'integré dans un widget personnalisé ( entrez le label, entrez l' IP)
+    NewAccountDialog *dialog = new NewAccountDialog(this);
+    dialog->exec();
+    load();
+}
+QString AccountDialog::currentIp()
+{
 
     QSettings settings;
-    settings.beginGroup("account");
-    settings.setValue(ipKey, Ip);
-    settings.endGroup();
+    QString useKey = settings.value("config/currentKey").toString();
+    QString useIp ;
+    if ( !useKey.isEmpty())
+        useIp = settings.value("account/"+useKey).toString();
 
-    load(); // On recharge les compte
+    else return QString();
 
+    return useIp;
 }
+
 void AccountDialog::load()
 {
+    ui->editButton->setEnabled(false);
+    ui->remButton->setEnabled(false);
+    ui->useButton->setEnabled(false);
     ui->listWidget->clear(); // tjr effacer , sinon on rajoute
+
     QSettings settings;
+
+    QString useKey = settings.value("config/currentKey").toString();
+
+
     settings.beginGroup("account");
     foreach ( QString key, settings.allKeys())
     {
         QListWidgetItem * item = new QListWidgetItem;
+
         item->setText(key);
-        item->setData(Qt::UserRole,settings.value(key));
+        item->setData(Qt::UserRole, settings.value(key));
+        if (useKey == key) {
+            QFont font = item->font();
+            font.setBold(true);
+            item->setFont(font);
+        }
         ui->listWidget->addItem(item);
+    }
+    settings.endGroup();    
+
+
+
+}
+
+
+void AccountDialog::asyncTestConnection()
+{
+    QSettings settings;
+    settings.beginGroup("account");
+
+    for ( int i=0; i<ui->listWidget->count(); ++i)
+    {
+
+        QListWidgetItem * item = ui->listWidget->item(i);
+        QString key = item->text();
+        QString hostIp = settings.value(key).toString();
+        qDebug()<<hostIp;
+        QTcpSocket * socket = new QTcpSocket(this);
+        socket->connectToHost(hostIp, 80);
+
+        if (socket->waitForConnected(1000))
+            item->setBackgroundColor(Qt::green);
+        else
+            item->setBackgroundColor(Qt::red);
+
 
     }
+
     settings.endGroup();
+
 }
 
+
 void AccountDialog::edit()
 {
+    QString currentIp = ui->listWidget->currentItem()->data(Qt::UserRole).toString();
+    QString currentKey = ui->listWidget->currentItem()->text();
 
+    NewAccountDialog *dialog = new NewAccountDialog(this);
+    dialog->edit(currentKey, currentIp);
+    dialog->exec();
+
+    load();
 }
 
 void AccountDialog::rem()
 {
+    QString key = ui->listWidget->currentItem()->text();
 
+    QSettings settings;
+    settings.beginGroup("account");
+    settings.remove(key);
+    settings.endGroup();
+
+    load(); // On recharge les compte
+}
 
+void AccountDialog::use()
+{
+    QString currentKey = ui->listWidget->currentItem()->text();
+    QSettings settings;
+    settings.setValue("config/currentKey", currentKey);
+    load();
+}
+
+void AccountDialog::enableUi()
+{
+    ui->editButton->setEnabled(true);
+    ui->remButton->setEnabled(true);
+    ui->useButton->setEnabled(true);
 }