X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fsettingsdlg.cpp;h=2b1b1953ce2f4af49fd8b080a9e7ae4e281cb532;hb=af55637d27c287425a091ae482acff97c7f0e382;hp=5d3c3caa4e1add1491693bb0b74de5dafc3918be;hpb=acce90cbfa861c32795ef2f113cc470a18c81c68;p=irwi diff --git a/src/settingsdlg.cpp b/src/settingsdlg.cpp index 5d3c3ca..2b1b195 100644 --- a/src/settingsdlg.cpp +++ b/src/settingsdlg.cpp @@ -1,181 +1,119 @@ #include "settingsdlg.h" +#include "advsettingsdlg.h" +#include "selectremotedlg.h" +#include "aboutdlg.h" +#include "iengine.h" +#include "iremote.h" -#include #include -#include -#include -#include -#include +#include +#include +#include +#include #include -#include -#include -#include -#include -#include +#include +#include -SettingsDlg::SettingsDlg(QWidget *parent) +SettingsDlg::SettingsDlg(QWidget *parent, IEngine *engine) : QDialog(parent) + , engine(engine) { - this->setWindowTitle(tr("Settings")); - - //TODO caching? - mfgNetAM = new QNetworkAccessManager(this); - connect(mfgNetAM, SIGNAL(finished(QNetworkReply*)), - this, SLOT(mfgListDownloadFinished(QNetworkReply*))); - - modelNetAM = new QNetworkAccessManager(this); - connect(modelNetAM, SIGNAL(finished(QNetworkReply*)), - this, SLOT(modelListDownloadFinished(QNetworkReply*))); - - remoteNetAM = new QNetworkAccessManager(this); - connect(remoteNetAM, SIGNAL(finished(QNetworkReply*)), - this, SLOT(remoteDownloadFinished(QNetworkReply*))); - - settings = new QSettings(this); - - layout = new QHBoxLayout(this); - - 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*))); + layout = new QVBoxLayout(this); + btnLayout = new QHBoxLayout(this); + remoteNameLayout = new QHBoxLayout(this); - mfgList = new QListWidget(this); - layout->addWidget(mfgList); - connect(mfgList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), - this, SLOT(mfgItemChanged(QListWidgetItem*, QListWidgetItem*))); + QSettings settings(this); + advSettingsBtn = new QPushButton(tr("Advanced"), this); + selectRemoteBtn = new QPushButton(tr("Select remote"), this); + aboutBtn = new QPushButton(tr("About"), this); + + rateUpBtn = new QPushButton( + QIcon(settings.value("rateUpIcon", + "/usr/share/icons/hicolor/48x48/hildon/chat_smiley_happy.png"). + toString()), + "", this); + 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); + + btnLayout->addWidget(advSettingsBtn); + btnLayout->addWidget(selectRemoteBtn); + btnLayout->addWidget(aboutBtn); + + connect(advSettingsBtn, SIGNAL(clicked()), + this, SLOT(showAdvSettingsDlg())); + connect(selectRemoteBtn, SIGNAL(clicked()), + this, SLOT(showSelectRemoteDlg())); + connect(aboutBtn, SIGNAL(clicked()), + this, SLOT(showAboutDlg())); + + remoteNameLabel = new QLabel( + settings.value("remoteName", + tr("")).toString(), this); + remoteNameLayout->addWidget(new QLabel(tr("Remote name: "), this)); + remoteNameLayout->addWidget(remoteNameLabel); + remoteNameLayout->addWidget(rateUpBtn); + remoteNameLayout->addWidget(rateDownBtn); + + layout->addLayout(remoteNameLayout); + layout->addLayout(btnLayout); + this->setLayout(layout); - modelList = new QListWidget(this); - layout->addWidget(modelList); - connect(modelList, SIGNAL(currentItemChanged(QListWidgetItem*, QListWidgetItem*)), - this, SLOT(modelItemChanged(QListWidgetItem*, QListWidgetItem*))); + updateRemoteName(); - this->setLayout(layout); + connect(engine->remote(), SIGNAL(ratingChanged(int)), + this, SLOT(setRating(int))); + engine->remote()->updateRating(); } SettingsDlg::~SettingsDlg() { + delete advSettingsBtn; + delete selectRemoteBtn; + delete aboutBtn; + delete rateUpBtn; + delete rateDownBtn; + delete remoteNameLabel; + delete remoteNameLayout; + delete btnLayout; delete layout; - delete settings; - delete mfgNetAM; - delete modelNetAM; } -void SettingsDlg::alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous) +void SettingsDlg::showAdvSettingsDlg() { - mfgNetAM->get( - QNetworkRequest( - QUrl( - settings->value( - "remoteUrl", - "http://mercury.wipsl.com/irwi/remotes/" - ).toString() - + current->text() + ".txt" - ) - ) - ); + AdvSettingsDlg dlg(this, engine); + dlg.exec(); + updateRemoteName(); } -void SettingsDlg::mfgListDownloadFinished(QNetworkReply *reply) +void SettingsDlg::showSelectRemoteDlg() { - mfgList->clear(); - if (reply->error() == QNetworkReply::NoError) { - QByteArray ba = reply->readAll(); - QBuffer buf(&ba, this); - buf.open(QIODevice::ReadOnly); - buf.seek(0); - while (buf.canReadLine()) - { - QString str(buf.readLine()); - str.chop(1); - mfgList->addItem(str); - } - } else { - //qDebug() << (int)reply->error(); - } - reply->close(); - reply->deleteLater(); + SelectRemoteDlg dlg(this, engine); + connect(&dlg, SIGNAL(remoteDownloaded()), + this, SLOT(updateRemoteName())); + dlg.exec(); } -void SettingsDlg::mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous) +void SettingsDlg::showAboutDlg() { - if (mfgList->currentItem() != NULL) { - modelNetAM->get( - QNetworkRequest( - QUrl( - settings->value( - "remoteUrl", - "http://mercury.wipsl.com/irwi/remotes/" - ).toString() - + alphabetList->currentItem()->text() - + "/" + current->text() + ".txt" - ) - ) - ); - } + AboutDlg dlg(this); + dlg.exec(); } -void SettingsDlg::modelListDownloadFinished(QNetworkReply *reply) +void SettingsDlg::updateRemoteName() { - modelList->clear(); - if (reply->error() == QNetworkReply::NoError) { - QByteArray ba = reply->readAll(); - QBuffer buf(&ba, this); - buf.open(QIODevice::ReadOnly); - buf.seek(0); - while (buf.canReadLine()) - { - QString str(buf.readLine()); - str.chop(1); - modelList->addItem(str); - } - } else { - //qDebug() << (int)reply->error(); - } - reply->close(); - reply->deleteLater(); + QSettings settings(this); + remoteNameLabel->setText(settings.value("remoteName", + tr("Select remote")).toString()); } -void SettingsDlg::modelItemChanged(QListWidgetItem *current, QListWidgetItem *previous) +void SettingsDlg::setRating(int rating) { - if (current) - { - if (!current->text().isEmpty()) { - remoteNetAM->get( - QNetworkRequest( - QUrl( - settings->value( - "remoteUrl", - "http://mercury.wipsl.com/irwi/remotes/" - ).toString() - + alphabetList->currentItem()->text() - + "/" + mfgList->currentItem->text() - + "/" + current->text() - ) - ) - ); - settings->setValue("remoteName", current->text()); - } - } + qDebug() << rating; } -void SettingsDlg::remoteDownloadFinished(QNetworkReply *reply) -{ - if (reply->error() == QNetworkReply::NoError) { - QFile file("/etc/lircd.conf"); - if(file.open(QIODevice::WriteOnly)) - { - file.write(reply->readAll()); - file.close(); - } - } - reply->close(); - reply->deleteLater(); - - system("lircctl restart"); -}