diff --git a/mainwindow.cpp b/mainwindow.cpp
index 53bd11c..722b20d 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -17,9 +17,8 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
mAddress = ui->txt_address->text();
// load initial data
- sendCommand(""
- "GetParam"
- "");
+ sendCommand("GetParam");
+ sendCommand("GetParam");
}
MainWindow::~MainWindow()
@@ -27,6 +26,72 @@ MainWindow::~MainWindow()
delete ui;
}
+void MainWindow::sendCommand(QString cmd)
+{
+ QNetworkRequest request;
+ request.setUrl("http://" + mAddress + ":80/YamahaRemoteControl/ctrl");
+ request.setRawHeader("Content-Type", "text/xml; charset=UTF-8");
+ request.setRawHeader("Content-Length", QByteArray::number(cmd.size()));
+
+ QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
+ networkManager->post(request, cmd.toUtf8());
+ connect(networkManager, &QNetworkAccessManager::finished, this, &MainWindow::replyFinished);
+}
+
+void MainWindow::replyFinished(QNetworkReply* reply)
+{
+ QString ans;
+
+ if(reply->error() == QNetworkReply::NoError) {
+ QByteArray data = reply->readAll();
+ ans = QString(data);
+ } else {
+ qDebug() << reply->url();
+ qDebug() << reply->errorString();
+ return;
+ }
+
+ // check power state
+ QRegularExpression regexPower("(.*)");
+ QRegularExpressionMatch matchPower = regexPower.match(ans);
+
+ if (matchPower.hasMatch()) {
+ if (matchPower.captured(1) == "On") mPowered = true;
+ else if (matchPower.captured(1) == "Off") mPowered = false;
+ }
+
+ // check volume
+ QRegularExpression regexVolume("(.*)");
+ QRegularExpressionMatch matchVolume = regexVolume.match(ans);
+
+ if (matchVolume.hasMatch()) {
+ mVolume = matchVolume.captured(1).toInt();
+ }
+
+ qDebug() << ans;
+
+ reply->deleteLater();
+ updateUi();
+}
+
+void MainWindow::updateUi() {
+ ui->btn_onoff->setText(mPowered ? "On" : "Off");
+ ui->dial->setEnabled(mPowered);
+ ui->dial->setValue(mVolume);
+ ui->lbl_volume->setEnabled(mPowered);
+ ui->btn_hdmi1->setEnabled(mPowered);
+ ui->btn_hdmi2->setEnabled(mPowered);
+ ui->btn_hdmi3->setEnabled(mPowered);
+ ui->btn_spotify->setEnabled(mPowered);
+ ui->btn_airplay->setEnabled(mPowered);
+ ui->btn_audioin->setEnabled(mPowered);
+}
+
+void MainWindow::on_txt_address_textEdited(const QString &arg1)
+{
+ mAddress = arg1;
+}
+
void MainWindow::on_btn_onoff_clicked()
{
if (mPowered){
@@ -43,60 +108,10 @@ void MainWindow::on_btn_onoff_clicked()
updateUi();
}
-void MainWindow::sendCommand(QString cmd)
+}
+
+void yremote::MainWindow::on_dial_valueChanged(int value)
{
- QNetworkRequest request;
- request.setUrl("http://" + mAddress + ":80/YamahaRemoteControl/ctrl");
- request.setRawHeader("Content-Type", "text/xml; charset=UTF-8");
- request.setRawHeader("Content-Length", QByteArray::number(cmd.size()));
-
- QNetworkAccessManager *networkManager = new QNetworkAccessManager(this);
- mReply = networkManager->post(request, cmd.toUtf8());
- connect(networkManager, &QNetworkAccessManager::finished, this, &MainWindow::replyFinished);
-}
-
-void MainWindow::replyFinished()
-{
- QString ans;
- mReply->deleteLater();
-
- if(mReply->error() == QNetworkReply::NoError) {
- QByteArray data = mReply->readAll();
- ans = QString(data);
- } else {
- qDebug() << mReply->url();
- qDebug() << mReply->errorString();
- return;
- }
-
- // check power state
- qDebug() << ans;
- QRegularExpression regex("(.*)");
- QRegularExpressionMatch match = regex.match(ans);
-
- if (match.hasMatch()) {
- if (match.captured(1) == "On") mPowered = true;
- else if (match.captured(1) == "Off") mPowered = false;
- }
-
- updateUi();
-}
-
-void MainWindow::updateUi() {
- ui->btn_onoff->setText(mPowered ? "On" : "Off");
- ui->dial->setEnabled(mPowered);
- ui->lbl_volume->setEnabled(mPowered);
- ui->btn_hdmi1->setEnabled(mPowered);
- ui->btn_hdmi2->setEnabled(mPowered);
- ui->btn_hdmi3->setEnabled(mPowered);
- ui->btn_spotify->setEnabled(mPowered);
- ui->btn_airplay->setEnabled(mPowered);
- ui->btn_audioin->setEnabled(mPowered);
-}
-
-void MainWindow::on_txt_address_textEdited(const QString &arg1)
-{
- mAddress = arg1;
-}
-
+ ui->lbl_volume->setText(QString::number(value));
+ sendCommand("" + QString::number(value) + "1dB");
}
diff --git a/mainwindow.h b/mainwindow.h
index e246284..f3ce4d6 100644
--- a/mainwindow.h
+++ b/mainwindow.h
@@ -23,16 +23,18 @@ protected:
private slots:
void on_btn_onoff_clicked();
- void replyFinished();
+ void replyFinished(QNetworkReply *reply);
void on_txt_address_textEdited(const QString &arg1);
+ void on_dial_valueChanged(int value);
+
private:
Ui::MainWindow *ui;
QString mAddress;
- QNetworkReply *mReply;
bool mPowered = false;
+ int mVolume = 0;
void sendCommand(QString cmd);
void updateUi();
diff --git a/mainwindow.ui b/mainwindow.ui
index 0a45761..a25e7ee 100644
--- a/mainwindow.ui
+++ b/mainwindow.ui
@@ -43,7 +43,20 @@
-
-
+
+
+ -805
+
+
+ -165
+
+
+ 5
+
+
+ 5
+
+
-
@@ -145,7 +158,7 @@
QFrame::Sunken
- -66.5
+ -666
Qt::AlignCenter