lircctl -> sudo
[irwi] / src / selectremotedlg.cpp
index ccb9c7e..6e4dd6e 100644 (file)
 #include <QFile>
 #include <QMap>
 #include <QMessageBox>
+#include <QPushButton>
+#include <QListWidgetItem>
 
 SelectRemoteDlg::SelectRemoteDlg(QWidget *parent)
     : QDialog(parent)
 {
     this->setWindowTitle(tr("Select remote"));
+    this->setMinimumHeight(320);
 
     deviceNameMap = new QMap<QString, QString>();
 
@@ -42,6 +45,7 @@ SelectRemoteDlg::SelectRemoteDlg(QWidget *parent)
     layout = new QHBoxLayout(this);
 
     alphabetList = new QListWidget(this);
+    alphabetList->setMaximumWidth(96);
     for (char c = 'a'; c <= 'z'; ++c)
     {
         alphabetList->addItem(QString(c));
@@ -57,8 +61,11 @@ SelectRemoteDlg::SelectRemoteDlg(QWidget *parent)
 
     modelList = new QListWidget(this);
     layout->addWidget(modelList);
-    connect(modelList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
-                this, SLOT(modelItemChanged(QListWidgetItem*, QListWidgetItem*)));
+
+    downloadBtn = new QPushButton(tr("Download"), this);
+    layout->addWidget(downloadBtn);
+    connect(downloadBtn, SIGNAL(clicked()), 
+            this, SLOT(downloadRemote()));
 
     this->setLayout(layout);
 }
@@ -79,9 +86,16 @@ SelectRemoteDlg::~SelectRemoteDlg()
     deviceNameMap = NULL;
 }
 
+void SelectRemoteDlg::setBusy(bool busy)
+{
+    setAttribute(Qt::WA_Maemo5ShowProgressIndicator, busy);
+    setEnabled(!busy);
+}
+
 void SelectRemoteDlg::beginDownload(const QString &url, QNetworkAccessManager *nam)
 {
     nam->get(QNetworkRequest(QUrl(url)));
+    setBusy(true);
 }
 
 void SelectRemoteDlg::alphabetItemChanged(QListWidgetItem *current,
@@ -112,6 +126,7 @@ void SelectRemoteDlg::mfgListDownloadFinished(QNetworkReply *reply)
     }
     reply->close();
     reply->deleteLater();
+    setBusy(false);
 }
 
 void SelectRemoteDlg::mfgItemChanged(QListWidgetItem *current,
@@ -150,11 +165,12 @@ void SelectRemoteDlg::modelListDownloadFinished(QNetworkReply *reply)
     }
     reply->close();
     reply->deleteLater();
+    setBusy(false);
 }
 
-void SelectRemoteDlg::modelItemChanged(QListWidgetItem *current,
-                                       QListWidgetItem * /*previous*/)
+void SelectRemoteDlg::downloadRemote()
 {
+    QListWidgetItem *current = modelList->currentItem();
     if (current)
     {
         if (!current->text().isEmpty()) {
@@ -183,10 +199,12 @@ void SelectRemoteDlg::remoteDownloadFinished(QNetworkReply *reply)
     reply->close();
     reply->deleteLater();
 
-    std::system("lircctl restart");
+    std::system("sudo /etc/init.d/lirc restart");
 
+    emit remoteDownloaded();
+    setBusy(false);
     QMessageBox mbox(QMessageBox::Information, tr("Success"),
-            tr("Remote downloaded"), QMessageBox::Ok, this, Qt::Popup);
+            tr("Remote downloaded"), QMessageBox::Ok, this);
     mbox.exec();
     this->close();
 }