#include <QNetworkReply>
#include <QUrl>
-Remote::Remote(const QString &name)
- : m_name(name)
+Remote::Remote()
+ : m_name("")
, m_mfg("")
, m_rating(0)
, m_voteCount(0)
+ , m_infoNAM(NULL)
+ , m_remoteNAM(NULL)
+ , m_ratingNAM(NULL)
{
- init();
- updateInfo();
}
Remote::Remote(const QString &name, const QString &mfg,
int rating, int voteCount)
- : m_name(name), m_mfg(mfg),
- m_rating(rating), m_voteCount(voteCount)
+ : m_name(name)
+ , m_mfg(mfg)
+ , m_rating(rating)
+ , m_voteCount(voteCount)
+ , m_infoNAM(NULL)
+ , m_remoteNAM(NULL)
+ , m_ratingNAM(NULL)
{
- init();
}
Remote::Remote(const Remote &r)
, m_mfg(r.m_mfg)
, m_rating(r.m_rating)
, m_voteCount(r.m_voteCount)
+ , m_infoNAM(NULL)
+ , m_remoteNAM(NULL)
+ , m_ratingNAM(NULL)
+{
+}
+
+Remote::~Remote()
{
- init();
+ delete m_infoNAM;
+ delete m_remoteNAM;
+ delete m_ratingNAM;
}
Remote &Remote::operator=(const Remote &other)
return *this;
}
-void Remote::init()
-{
- connect(&m_remoteNAM, SIGNAL(finished(QNetworkReply*)),
- this, SLOT(remoteDownloadFinished(QNetworkReply*)));
- connect(&m_infoNAM, SIGNAL(finished(QNetworkReply*)),
- this, SLOT(infoRequestFinished(QNetworkReply *)));
-}
-
void Remote::saveToFile()
{
if (!m_name.isEmpty()) {
- QString url = m_settings.value("remoteUrl",
+ if (!m_remoteNAM) {
+ m_remoteNAM = new QNetworkAccessManager(this);
+ connect(m_remoteNAM, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(remoteDownloadFinished(QNetworkReply*)));
+ }
+ QSettings settings(this);
+ QString url = settings.value("remoteUrl",
"http://mercury.wipsl.com/irwi/uploaded/").toString()
+ m_name;
- m_remoteNAM.get(QNetworkRequest(QUrl(url)));
- m_settings.setValue("remoteName", m_name);
+ m_remoteNAM->get(QNetworkRequest(QUrl(url)));
+ settings.setValue("remoteName", m_name);
}
}
void Remote::updateInfo()
{
if (!m_name.isEmpty()) {
- QString url = m_settings.value("baseUrl",
+ if (!m_infoNAM) {
+ m_infoNAM = new QNetworkAccessManager(this);
+ connect(m_infoNAM, SIGNAL(finished(QNetworkReply*)),
+ this, SLOT(infoRequestFinished(QNetworkReply *)));
+ }
+ QSettings settings(this);
+ QString url = settings.value("baseUrl",
"http://mercury.wipsl.com/irwi/").toString()
+ "vote/get?name="
+ m_name;
- m_infoNAM.get(QNetworkRequest(QUrl(url)));
+ m_infoNAM->get(QNetworkRequest(QUrl(url)));
}
}
void Remote::sendRating(Rating::Rating r)
{
if (m_name != "") {
- m_ratingNAM.get(QNetworkRequest(QUrl(
- m_settings.value("baseUrl",
+ if (!m_ratingNAM) {
+ m_ratingNAM = new QNetworkAccessManager(this);
+ }
+ QSettings settings(this);
+ m_ratingNAM->get(QNetworkRequest(QUrl(
+ settings.value("baseUrl",
"http://mercury.wipsl.com/irwi/db.xml").toString()
+ "vote/"
+ ((r == Rating::Up) ? "up" : "down")
void Remote::remoteDownloadFinished(QNetworkReply *reply)
{
if (reply->error() == QNetworkReply::NoError) {
- QFile file(m_settings.value("lircConf", "/etc/lircd.conf").toString());
- if(file.open(QIODevice::WriteOnly))
- {
+ QFile file(QSettings(this).value("lircConf",
+ "/etc/lircd.conf").toString());
+ if(file.open(QIODevice::WriteOnly)) {
file.write(reply->readAll());
file.close();
}
reply->deleteLater();
std::system("sudo /etc/init.d/lirc reload");
-
- //emit remoteDownloaded();
}
void Remote::infoRequestFinished(QNetworkReply *reply)
#include "advsettingsdlg.h"
#include "selectremotedlg.h"
#include "aboutdlg.h"
-#include "remote.h"
#include <QHBoxLayout>
#include <QVBoxLayout>
SettingsDlg::SettingsDlg(QWidget *parent)
: QDialog(parent)
- , remote(NULL)
{
- layout = new QVBoxLayout(this);
- btnLayout = new QHBoxLayout(this);
- remoteNameLayout = new QHBoxLayout(this);
+ QSettings settings(this);
+ m_layout = new QVBoxLayout(this);
+ m_btnLayout = new QHBoxLayout(this);
+ m_remoteNameLayout = new QHBoxLayout(this);
- advSettingsBtn = new QPushButton(tr("Advanced"), this);
- selectRemoteBtn = new QPushButton(tr("Select remote"), this);
- aboutBtn = new QPushButton(tr("About"), this);
- rateUpBtn = new QPushButton(
+ m_advSettingsBtn = new QPushButton(tr("Advanced"), this);
+ m_selectRemoteBtn = new QPushButton(tr("Select m_remote"), this);
+ m_aboutBtn = new QPushButton(tr("About"), this);
+ m_rateUpBtn = new QPushButton(
QIcon(settings.value("rateUpIcon",
"/usr/share/icons/hicolor/48x48/hildon/chat_smiley_happy.png").
toString()),
"", this);
- rateDownBtn = new QPushButton(
+ m_rateDownBtn = new QPushButton(
QIcon(settings.value("rateDownIcon",
"/usr/share/icons/hicolor/48x48/hildon/chat_smiley_sad.png").
toString()),
"", this);
- rateUpBtn->setMaximumSize(72, 72);
- rateDownBtn->setMaximumSize(72, 72);
+ m_rateUpBtn->setMaximumSize(72, 72);
+ m_rateDownBtn->setMaximumSize(72, 72);
- btnLayout->addWidget(advSettingsBtn);
- btnLayout->addWidget(selectRemoteBtn);
- btnLayout->addWidget(aboutBtn);
+ m_btnLayout->addWidget(m_advSettingsBtn);
+ m_btnLayout->addWidget(m_selectRemoteBtn);
+ m_btnLayout->addWidget(m_aboutBtn);
- remoteNameLabel = new QLabel(this);
- ratingLabel = new QLabel(this);
- remoteNameLayout->addWidget(remoteNameLabel);
- remoteNameLayout->addWidget(ratingLabel);
- remoteNameLayout->addWidget(rateUpBtn);
- remoteNameLayout->addWidget(rateDownBtn);
+ m_remoteNameLabel = new QLabel(this);
+ m_ratingLabel = new QLabel(this);
+ m_remoteNameLayout->addWidget(m_remoteNameLabel);
+ m_remoteNameLayout->addWidget(m_ratingLabel);
+ m_remoteNameLayout->addWidget(m_rateUpBtn);
+ m_remoteNameLayout->addWidget(m_rateDownBtn);
- connect(advSettingsBtn, SIGNAL(clicked()),
+ connect(m_advSettingsBtn, SIGNAL(clicked()),
this, SLOT(showAdvSettingsDlg()));
- connect(selectRemoteBtn, SIGNAL(clicked()),
+ connect(m_selectRemoteBtn, SIGNAL(clicked()),
this, SLOT(showSelectRemoteDlg()));
- connect(aboutBtn, SIGNAL(clicked()),
+ connect(m_aboutBtn, SIGNAL(clicked()),
this, SLOT(showAboutDlg()));
- connect(rateUpBtn, SIGNAL(clicked()),
+ connect(m_rateUpBtn, SIGNAL(clicked()),
this, SLOT(rateUpClicked()));
- connect(rateDownBtn, SIGNAL(clicked()),
+ connect(m_rateDownBtn, SIGNAL(clicked()),
this, SLOT(rateDownClicked()));
- layout->addLayout(remoteNameLayout);
- layout->addLayout(btnLayout);
- this->setLayout(layout);
+ m_layout->addLayout(m_remoteNameLayout);
+ m_layout->addLayout(m_btnLayout);
+ this->setLayout(m_layout);
- changeRemote();
+ initRemote();
}
SettingsDlg::~SettingsDlg()
{
- delete advSettingsBtn;
- delete selectRemoteBtn;
- delete rateUpBtn;
- delete rateDownBtn;
- delete aboutBtn;
- delete remoteNameLabel;
- delete ratingLabel;
- delete btnLayout;
- delete remoteNameLayout;
- delete layout;
- if (remote) {
- delete remote;
- }
+ delete m_advSettingsBtn;
+ delete m_selectRemoteBtn;
+ delete m_rateUpBtn;
+ delete m_rateDownBtn;
+ delete m_aboutBtn;
+ delete m_remoteNameLabel;
+ delete m_ratingLabel;
+ delete m_btnLayout;
+ delete m_remoteNameLayout;
+ delete m_layout;
}
void SettingsDlg::showAdvSettingsDlg()
void SettingsDlg::showSelectRemoteDlg()
{
SelectRemoteDlg dlg(this);
- changeRemote();
+ connect(&dlg, SIGNAL(m_remoteChanged(Remote)),
+ this, SLOT(setRemote(Remote)));
dlg.exec();
}
dlg.exec();
}
-void SettingsDlg::changeRemote()
+void SettingsDlg::initRemote()
{
- QString selectedRemote = settings.value("remoteName", "").toString();
+ QString selectedRemote = QSettings(this).value("remoteName", "").toString();
if (selectedRemote == "") {
- remoteNameLabel->setText("No remote selected");
+ m_remoteNameLabel->setText("No remote selected");
enableRateBtns(false);
} else {
- if (remote) {
- delete remote;
- }
- remote = new Remote(selectedRemote);
- connect(remote, SIGNAL(infoUpdated()),
+ m_remote = Remote(selectedRemote);
+ connect(&m_remote, SIGNAL(infoUpdated()),
this, SLOT(updateRemoteInfo()));
- remote->updateInfo();
+ m_remote.updateInfo();
enableRateBtns();
}
}
+void SettingsDlg::setRemote(Remote r)
+{
+ m_remote = r;
+ updateRemoteInfo();
+ enableRateBtns();
+}
+
void SettingsDlg::updateRemoteInfo()
{
- remoteNameLabel->setText(remote->mfg() + " " + remote->name());
- ratingLabel->setText(tr("Rating") + ": " + remote->rating());
+ m_remoteNameLabel->setText(m_remote.mfg() + " " + m_remote.name());
+ m_ratingLabel->setText(tr("Rating") + ": "
+ + QString::number(m_remote.rating()));
}
void SettingsDlg::rateUpClicked()
{
- remote->sendRating(Rating::Up);
+ m_remote.sendRating(Rating::Up);
enableRateBtns(false);
}
void SettingsDlg::rateDownClicked()
{
- remote->sendRating(Rating::Down);
+ m_remote.sendRating(Rating::Down);
enableRateBtns(false);
}
void SettingsDlg::enableRateBtns(bool enable)
{
- rateUpBtn->setEnabled(enable);
- rateDownBtn->setEnabled(enable);
+ m_rateUpBtn->setEnabled(enable);
+ m_rateDownBtn->setEnabled(enable);
}