Fixed playlist detection for international servers.
[vlc-remote] / accountdialog.cpp
1 #include "accountdialog.h"
2 #include "ui_accountdialog.h"
3 #include "newaccountdialog.h"
4 #include <QDebug>
5 #include <QInputDialog>
6 #include <QSettings>
7 #include <QTcpSocket>
8 #include <QFuture>
9 #include <QtConcurrentRun>
10 AccountDialog::AccountDialog(QWidget *parent) :
11         QDialog(parent),
12         ui(new Ui::AccountDialog)
13 {
14     ui->setupUi(this);
15
16     connect(ui->addButton,SIGNAL(clicked()),this,SLOT(add()));
17     connect(ui->editButton,SIGNAL(clicked()),this,SLOT(edit()));
18     connect(ui->remButton,SIGNAL(clicked()),this,SLOT(rem()));
19     connect(ui->useButton,SIGNAL(clicked()),this,SLOT(use()));
20     connect(ui->listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(enableUi()));
21
22     load();
23
24 }
25
26 AccountDialog::~AccountDialog()
27 {
28     delete ui;
29 }
30
31 void AccountDialog::add()
32 {
33
34     NewAccountDialog *dialog = new NewAccountDialog(this);
35     dialog->exec();
36     load();
37 }
38 QString AccountDialog::currentIp()
39 {
40
41     QSettings settings;
42     QString useKey = settings.value("config/currentKey").toString();
43     QString useIp ;
44     if ( !useKey.isEmpty())
45         useIp = settings.value("account/"+useKey).toString();
46
47     else return QString();
48
49     return useIp;
50 }
51
52 void AccountDialog::load()
53 {
54     ui->editButton->setEnabled(false);
55     ui->remButton->setEnabled(false);
56     ui->useButton->setEnabled(false);
57     ui->listWidget->clear(); // tjr effacer , sinon on rajoute
58
59     QSettings settings;
60
61     QString useKey = settings.value("config/currentKey").toString();
62
63
64     settings.beginGroup("account");
65     foreach ( QString key, settings.allKeys())
66     {
67         QListWidgetItem * item = new QListWidgetItem;
68
69         item->setText(key);
70         item->setData(Qt::UserRole, settings.value(key));
71         if (useKey == key) {
72             QFont font = item->font();
73             font.setBold(true);
74             item->setFont(font);
75         }
76         ui->listWidget->addItem(item);
77     }
78     settings.endGroup();    
79
80
81
82 }
83
84
85 void AccountDialog::asyncTestConnection()
86 {
87     QSettings settings;
88     settings.beginGroup("account");
89
90     for ( int i=0; i<ui->listWidget->count(); ++i)
91     {
92
93         QListWidgetItem * item = ui->listWidget->item(i);
94         QString key = item->text();
95         QString hostIp = settings.value(key).toString();
96         qDebug()<<hostIp;
97         QTcpSocket * socket = new QTcpSocket(this);
98         socket->connectToHost(hostIp, 80);
99
100         if (socket->waitForConnected(1000))
101             item->setBackgroundColor(Qt::green);
102         else
103             item->setBackgroundColor(Qt::red);
104
105
106     }
107
108     settings.endGroup();
109
110 }
111
112
113 void AccountDialog::edit()
114 {
115     QString currentIp = ui->listWidget->currentItem()->data(Qt::UserRole).toString();
116     QString currentKey = ui->listWidget->currentItem()->text();
117
118     NewAccountDialog *dialog = new NewAccountDialog(this);
119     dialog->edit(currentKey, currentIp);
120     dialog->exec();
121
122     load();
123 }
124
125 void AccountDialog::rem()
126 {
127     QString key = ui->listWidget->currentItem()->text();
128
129     QSettings settings;
130     settings.beginGroup("account");
131     settings.remove(key);
132     settings.endGroup();
133
134     load(); // On recharge les compte
135 }
136
137 void AccountDialog::use()
138 {
139     QString currentKey = ui->listWidget->currentItem()->text();
140     QSettings settings;
141     settings.setValue("config/currentKey", currentKey);
142     load();
143 }
144
145 void AccountDialog::enableUi()
146 {
147     ui->editButton->setEnabled(true);
148     ui->remButton->setEnabled(true);
149     ui->useButton->setEnabled(true);
150 }