#include "settingsdlg.h"
+#include "advsettingsdlg.h"
+#include "selectremotedlg.h"
+#include "aboutdlg.h"
#include <QHBoxLayout>
-#include <QLabel>
-#include <QString>
-#include <QListWidget>
-#include <QListWidgetItem>
+#include <QVBoxLayout>
+#include <QWidget>
+#include <QDialog>
+#include <QPushButton>
#include <QSettings>
-#include <QtNetwork/QNetworkAccessManager>
-#include <QtNetwork/QNetworkReply>
+#include <QLabel>
SettingsDlg::SettingsDlg(QWidget *parent)
: QDialog(parent)
{
- this->setWindowTitle(tr("Settings"));
-
- //TODO caching?
- netAM = new QNetworkAccessManager(this);
+ layout = new QVBoxLayout(this);
+ btnLayout = new QHBoxLayout(this);
+ remoteNameLayout = new QHBoxLayout(this);
- settings = new QSettings(this);
+ QSettings settings(this);
+ advSettingsBtn = new QPushButton(tr("Advanced"), this);
+ selectRemoteBtn = new QPushButton(tr("Select remote"), this);
+ aboutBtn = new QPushButton(tr("About"), this);
- layout = new QHBoxLayout(this);
+ btnLayout->addWidget(advSettingsBtn);
+ btnLayout->addWidget(selectRemoteBtn);
+ btnLayout->addWidget(aboutBtn);
- alphabetList = new QListWidget(this);
- for (char c = 'a'; c <= 'z'; ++c)
- {
- alphabetList->addItem(QString(c));
- }
- layout->addWidget(alphabetList);
- connect(alphabetList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
- this, SLOT(alphabetItemChanged(QListWidgetItem*, QListWidgetItem*)));
-
- mfgList = new QListWidget(this);
- layout->addWidget(mfgList);
- connect(mfgList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
- this, SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*)));
+ connect(advSettingsBtn, SIGNAL(clicked()),
+ this, SLOT(showAdvSettingsDlg()));
+ connect(selectRemoteBtn, SIGNAL(clicked()),
+ this, SLOT(showSelectRemoteDlg()));
+ connect(aboutBtn, SIGNAL(clicked()),
+ this, SLOT(showAboutDlg()));
- modelList = new QListWidget(this);
- layout->addWidget(modelList);
- connect(modelList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)),
- this, SLOT(modelItemChanged(QListWidgetItem*, QListWidgetItem*)));
+ remoteNameLabel = new QLabel(
+ settings.value("remoteName",
+ tr("<no remote selected>")).toString(), this);
+ remoteNameLayout->addWidget(new QLabel(tr("Remote name: "), this));
+ remoteNameLayout->addWidget(remoteNameLabel);
+ layout->addLayout(remoteNameLayout);
+ layout->addLayout(btnLayout);
this->setLayout(layout);
+
+ updateRemoteName();
}
SettingsDlg::~SettingsDlg()
{
+ delete advSettingsBtn;
+ delete selectRemoteBtn;
+ delete aboutBtn;
+ delete remoteNameLabel;
+ delete remoteNameLayout;
+ delete btnLayout;
delete layout;
- delete settings;
- delete netAM;
}
-void SettingsDlg::alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
+void SettingsDlg::showAdvSettingsDlg()
{
- QNetworkReply* reply = netAM->get(
- QNetworkRequest(
- QUrl(
- settings->value(
- "remoteUrl",
- "http://mercury.wipsl.com/irwi/remotes/"
- ).toString() + current->text() + ".txt"
- )
- )
- );
- connect(netAM, SIGNAL(finished(QNetworkReply*)),
- this, SLOT(mfgListDownloadFinished(QNetworkReply*)));
+ AdvSettingsDlg dlg(this);
+ dlg.exec();
}
-void SettingsDlg::mfgListDownloadFinished(QNetworkReply *reply)
+void SettingsDlg::showSelectRemoteDlg()
{
- mfgList->clear();
- while (reply->canReadLine())
- {
- mfgList->addItem(QString(reply->readLine()));
- }
- reply->deleteLater();
+ SelectRemoteDlg dlg(this);
+ connect(&dlg, SIGNAL(remoteDownloaded()),
+ this, SLOT(updateRemoteName()));
+ dlg.exec();
}
-void SettingsDlg::mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
+void SettingsDlg::showAboutDlg()
{
+ AboutDlg dlg(this);
+ dlg.exec();
}
-void SettingsDlg::modelItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
+void SettingsDlg::updateRemoteName()
{
- if (current)
- {
- settings->setValue("remoteName", current->text());
- //TODO save remote from server to /etc/lircd.conf
- //maybe lirc needs restart after that?
- }
+ QSettings settings(this);
+ remoteNameLabel->setText(settings.value("remoteName",
+ tr("Select remote")).toString());
}
+