From 2e7b8bff84f69e23289c67adbb274ec646a1ff1a Mon Sep 17 00:00:00 2001 From: Jari Jarvi Date: Fri, 18 Jun 2010 11:29:19 +0300 Subject: [PATCH] SettingsDlg implementation --- src/advsettingsdlg.cpp | 4 +- src/advsettingsdlg.h | 4 +- src/mainwidget.cpp | 14 +----- src/mainwidget.h | 6 --- src/selectremotedlg.cpp | 3 +- src/selectremotedlg.h | 7 ++- src/settingsdlg.cpp | 110 +++++++++++++++++++++++++++++++---------------- src/settingsdlg.h | 17 +++++--- src/src.pro | 12 +----- 9 files changed, 92 insertions(+), 85 deletions(-) diff --git a/src/advsettingsdlg.cpp b/src/advsettingsdlg.cpp index e3d5351..014354e 100644 --- a/src/advsettingsdlg.cpp +++ b/src/advsettingsdlg.cpp @@ -7,11 +7,9 @@ #include "advsettingsdlg.h" #include "settingstable.h" -#include "iengine.h" -AdvSettingsDlg::AdvSettingsDlg(QDialog *parent, IEngine *engine) +AdvSettingsDlg::AdvSettingsDlg(QDialog *parent) : QDialog(parent) - , engine(engine) , layout(NULL) , btnLayout(NULL) , settings(NULL) diff --git a/src/advsettingsdlg.h b/src/advsettingsdlg.h index d04c7f5..f05bd04 100644 --- a/src/advsettingsdlg.h +++ b/src/advsettingsdlg.h @@ -8,14 +8,13 @@ class QPushButton; class QVBoxLayout; class QHBoxLayout; class SettingsTable; -class IEngine; class AdvSettingsDlg : public QDialog { Q_OBJECT public: - AdvSettingsDlg(QDialog *parent, IEngine *engine); + AdvSettingsDlg(QDialog *parent); ~AdvSettingsDlg(); private: @@ -27,7 +26,6 @@ private slots: void save(); private: - IEngine *engine; QHBoxLayout *layout; QVBoxLayout *btnLayout; QSettings *settings; diff --git a/src/mainwidget.cpp b/src/mainwidget.cpp index 76a3ccf..3c9207b 100644 --- a/src/mainwidget.cpp +++ b/src/mainwidget.cpp @@ -1,6 +1,4 @@ #include "mainwidget.h" -#include "engine.h" -#include "iengine.h" #include "settingsdlg.h" #include @@ -11,10 +9,7 @@ MainWidget::MainWidget (QWidget *parent) : QWidget(parent) - , engine(new Engine()) { - engine->setRemote("1"); - layout = new QGridLayout(this); settings = new QSettings(this); @@ -57,7 +52,6 @@ MainWidget::MainWidget (QWidget *parent) MainWidget::~MainWidget() { delete settings; - delete engine; } void MainWidget::paintEvent(QPaintEvent*) @@ -70,7 +64,7 @@ void MainWidget::paintEvent(QPaintEvent*) void MainWidget::showSettingsDialog() { - SettingsDlg dlg(this, engine); + SettingsDlg dlg(this); dlg.exec(); update(); // Repaint required if bgAlpha value was changed resize(); @@ -87,10 +81,4 @@ void MainWidget::resize() QWidget::resize(w, h); } -void MainWidget::sendCmdClicked(IRemote::RemoteCmd cmd) -{ - engine->remote()->sendCmd(cmd); - -} - diff --git a/src/mainwidget.h b/src/mainwidget.h index 4e211d9..c39f54d 100644 --- a/src/mainwidget.h +++ b/src/mainwidget.h @@ -3,8 +3,6 @@ #include -#include "iremote.h" - class IEngine; class QGridLayout; class QToolButton; @@ -21,9 +19,6 @@ public: public slots: void showSettingsDialog(); -private slots: - void sendCmdClicked(IRemote::RemoteCmd cmd); - protected: void paintEvent(QPaintEvent *event); @@ -31,7 +26,6 @@ private: void resize(); private: - IEngine *engine; QSettings *settings; static const int BUTTON_COUNT = 6; QGridLayout *layout; diff --git a/src/selectremotedlg.cpp b/src/selectremotedlg.cpp index a74c8b5..5354930 100644 --- a/src/selectremotedlg.cpp +++ b/src/selectremotedlg.cpp @@ -2,7 +2,6 @@ #include "remotedbparser.h" #include "model.h" -#include "iengine.h" #include @@ -25,7 +24,7 @@ #include #include -SelectRemoteDlg::SelectRemoteDlg(QWidget *parent, IEngine *engine) +SelectRemoteDlg::SelectRemoteDlg(QWidget *parent) : QDialog(parent) { // this->setWindowTitle(tr("Select remote")); diff --git a/src/selectremotedlg.h b/src/selectremotedlg.h index 3658ac0..c3118dc 100644 --- a/src/selectremotedlg.h +++ b/src/selectremotedlg.h @@ -15,21 +15,21 @@ class QWidget; class QPushButton; class QLabel; class RemoteList; -class IEngine; class SelectRemoteDlg : public QDialog { Q_OBJECT public: - SelectRemoteDlg(QWidget *parent, IEngine *engine); + SelectRemoteDlg(QWidget *parent); ~SelectRemoteDlg(); signals: void remoteDownloaded(); private slots: - void alphabetItemChanged(QListWidgetItem *current, QListWidgetItem *previous); + void alphabetItemChanged(QListWidgetItem *current, + QListWidgetItem *previous); void mfgItemChanged(QListWidgetItem *current, QListWidgetItem *previous); void listDownloadFinished(QNetworkReply *reply); @@ -38,7 +38,6 @@ private slots: void remoteDownloadFinished(QNetworkReply *reply); private: - IEngine *engine; QHBoxLayout *layout; QListWidget *alphabetList; QListWidget *mfgList; diff --git a/src/settingsdlg.cpp b/src/settingsdlg.cpp index 2b1b195..6a1786e 100644 --- a/src/settingsdlg.cpp +++ b/src/settingsdlg.cpp @@ -2,8 +2,7 @@ #include "advsettingsdlg.h" #include "selectremotedlg.h" #include "aboutdlg.h" -#include "iengine.h" -#include "iremote.h" +#include "remote.h" #include #include @@ -14,27 +13,27 @@ #include #include -SettingsDlg::SettingsDlg(QWidget *parent, IEngine *engine) +SettingsDlg::SettingsDlg(QWidget *parent) : QDialog(parent) - , engine(engine) + , remote(NULL) { + QSettings settings(this); + layout = new QVBoxLayout(this); btnLayout = new QHBoxLayout(this); remoteNameLayout = new QHBoxLayout(this); - 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"). + "/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"). + "/usr/share/icons/hicolor/48x48/hildon/chat_smiley_sad.png"). toString()), "", this); rateUpBtn->setMaximumSize(72, 72); @@ -44,57 +43,69 @@ SettingsDlg::SettingsDlg(QWidget *parent, IEngine *engine) btnLayout->addWidget(selectRemoteBtn); btnLayout->addWidget(aboutBtn); + remoteNameLabel = new QLabel(this); + ratingLabel = new QLabel(this); + remoteNameLayout->addWidget(remoteNameLabel); + remoteNameLayout->addWidget(ratingLabel); + remoteNameLayout->addWidget(rateUpBtn); + remoteNameLayout->addWidget(rateDownBtn); + 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); + connect(rateUpBtn, SIGNAL(clicked()), + this, SLOT(rateUpClicked())); + connect(rateDownBtn, SIGNAL(clicked()), + this, SLOT(rateDownClicked())); + + QString selectedRemote = settings.value("remoteName", "").toString(); + if (selectedRemote == "") + { + remoteNameLabel->setText(tr("No remote selected")); + enableRateBtns(false); + } + else + { + changeRemote(selectedRemote); + } layout->addLayout(remoteNameLayout); layout->addLayout(btnLayout); this->setLayout(layout); - - updateRemoteName(); - - connect(engine->remote(), SIGNAL(ratingChanged(int)), - this, SLOT(setRating(int))); - engine->remote()->updateRating(); } SettingsDlg::~SettingsDlg() { + delete layout; + delete btnLayout; + delete remoteNameLayout; delete advSettingsBtn; delete selectRemoteBtn; - delete aboutBtn; delete rateUpBtn; delete rateDownBtn; + delete aboutBtn; delete remoteNameLabel; - delete remoteNameLayout; - delete btnLayout; - delete layout; + delete ratingLabel; + if (remote) + { + delete remote; + } } void SettingsDlg::showAdvSettingsDlg() { - AdvSettingsDlg dlg(this, engine); + AdvSettingsDlg dlg(this); dlg.exec(); - updateRemoteName(); } void SettingsDlg::showSelectRemoteDlg() { - SelectRemoteDlg dlg(this, engine); - connect(&dlg, SIGNAL(remoteDownloaded()), - this, SLOT(updateRemoteName())); + SelectRemoteDlg dlg(this); + connect(&dlg, SIGNAL(remoteChanged(QString)), + this, SLOT(updateRemoteInfo(QString))); dlg.exec(); } @@ -104,16 +115,41 @@ void SettingsDlg::showAboutDlg() dlg.exec(); } -void SettingsDlg::updateRemoteName() +void SettingsDlg::changeRemote(const QString &name) { - QSettings settings(this); - remoteNameLabel->setText(settings.value("remoteName", - tr("Select remote")).toString()); + if (remote) + { + delete remote; + } + remote = new Remote(name); + connect(remote, SIGNAL(infoUpdated()), + this, SLOT(updateRemoteInfo())); + remote->updateInfo(); + enableRateBtns(); +} + +void SettingsDlg::updateRemoteInfo() +{ + remoteNameLabel->setText(remote->mfg() + " " + remote->name()); + ratingLabel->setText(tr("Rating") + ": " + remote->rating()); +} + +void SettingsDlg::rateUpClicked() +{ + remote->sendRating(Rating::Up); + enableRateBtns(false); +} + +void SettingsDlg::rateDownClicked() +{ + remote->sendRating(Rating::Down); + enableRateBtns(false); } -void SettingsDlg::setRating(int rating) +void SettingsDlg::enableRateBtns(bool enable) { - qDebug() << rating; + rateUpBtn->setEnabled(enable); + rateDownBtn->setEnabled(enable); } diff --git a/src/settingsdlg.h b/src/settingsdlg.h index a8e0079..25fbab9 100644 --- a/src/settingsdlg.h +++ b/src/settingsdlg.h @@ -8,26 +8,28 @@ class QHBoxLayout; class QVBoxLayout; class QPushButton; class QLabel; -class IEngine; +class Remote; class SettingsDlg : public QDialog { Q_OBJECT public: - SettingsDlg(QWidget *parent, IEngine *engine); + SettingsDlg(QWidget *parent = 0); ~SettingsDlg(); -public slots: - void updateRemoteName(); - private slots: void showAdvSettingsDlg(); void showSelectRemoteDlg(); void showAboutDlg(); - void setRating(int); + void changeRemote(const QString &name); + void updateRemoteInfo(); + void rateUpClicked(); + void rateDownClicked(); + +private: + void enableRateBtns(bool enable = true); private: - IEngine *engine; QVBoxLayout *layout; QHBoxLayout *btnLayout; QHBoxLayout *remoteNameLayout; @@ -38,6 +40,7 @@ private: QPushButton *aboutBtn; QLabel *remoteNameLabel; QLabel *ratingLabel; + Remote *remote; }; #endif diff --git a/src/src.pro b/src/src.pro index d2e4b4f..8614642 100644 --- a/src/src.pro +++ b/src/src.pro @@ -1,28 +1,20 @@ TEMPLATE = app TARGET = irwi +SOURCES += settingsdlg.cpp SOURCES += main.cpp SOURCES += mainwidget.cpp SOURCES += irctrl.cpp SOURCES += remote.cpp -SOURCES += engine.cpp -SOURCES += remotedbparser.cpp -SOURCES += netio.cpp -SOURCES += settingsdlg.cpp SOURCES += selectremotedlg.cpp SOURCES += advsettingsdlg.cpp SOURCES += settingstable.cpp SOURCES += aboutdlg.cpp +HEADERS += settingsdlg.h HEADERS += mainwidget.h HEADERS += irctrl.h HEADERS += remote.h -HEADERS += iremote.h -HEADERS += engine.h -HEADERS += iengine.h -HEADERS += remotedbparser.h -HEADERS += netio.h -HEADERS += settingsdlg.h HEADERS += selectremotedlg.h HEADERS += advsettingsdlg.h HEADERS += settingstable.h -- 1.7.9.5