implement ws

This commit is contained in:
marios8543 2025-04-24 21:04:41 +03:00
parent ccbef3b3e8
commit 31ccf2a5c7
2 changed files with 16 additions and 76 deletions

View File

@ -34,7 +34,6 @@ namespace autoapp
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui_(new Ui::MainWindow), webSocket(new QWebSocket),
reconnectTimer(new QTimer(this)),
metadataTimer(new QTimer(this)),
shuttingDown(false)
{
ui_->setupUi(this);
@ -43,10 +42,6 @@ namespace autoapp
connect(ui_->pushButtonToggleCursor, &QPushButton::clicked, this, &MainWindow::toggleCursor);
connect(ui_->pushButtonWirelessConnection, &QPushButton::clicked, this, &MainWindow::openConnectDialog);
// BT NOW PLAYING UPDATE
connect(metadataTimer, &QTimer::timeout, this, &MainWindow::updateNowPlaying);
metadataTimer->start(1000); // refresh every 5 seconds
// RADIO WEBSOCKET STUFF
reconnectTimer->setSingleShot(true);
reconnectTimer->setInterval(3000);
@ -89,75 +84,6 @@ namespace autoapp
}
}
void autoapp::ui::MainWindow::updateBtNowPlaying()
{
QDBusInterface manager(
"org.bluez",
"/",
"org.freedesktop.DBus.ObjectManager",
QDBusConnection::systemBus());
if (!manager.isValid())
{
qDebug() << "Failed to connect to BlueZ D-Bus";
return;
}
QDBusReply<QVariantMap> reply = manager.call("GetManagedObjects");
if (!reply.isValid())
{
qDebug() << "D-Bus call failed:" << reply.error().message();
return;
}
QVariantMap allObjects = reply.value();
for (auto it = allObjects.begin(); it != allObjects.end(); ++it)
{
QString path = it.key();
QVariantMap interfaces = it.value().toMap();
if (interfaces.contains("org.bluez.MediaPlayer1"))
{
qDebug() << "Found MediaPlayer at:" << path;
QDBusInterface mediaPlayer(
"org.bluez",
path,
"org.freedesktop.DBus.Properties",
QDBusConnection::systemBus());
QDBusReply<QVariant> trackReply = mediaPlayer.call("Get", "org.bluez.MediaPlayer1", "Track");
if (trackReply.isValid())
{
QVariantMap track = trackReply.value().toMap();
QString artist = track["Artist"].toString();
QString title = track["Title"].toString();
QString album = track["Album"].toString();
QString status = statusReply.value().toString();
qDebug() << "Now playing:" << artist << "-" << title << "from" << album;
qDebug() << "Status:" << status;
if (status == "Playing")
{
//ui_->stackedWidget->setCurrentIndex(0);
//ui_->btSongName->setText(title);
//ui_->btArtistName->setText(artist);
//ui_->btAlbumName->setText(album);
}
else
{
//ui_->stackedWidget->setCurrentIndex(1);
}
}
break;
}
}
}
void autoapp::ui::MainWindow::connectWebSocket()
{
QUrl url(QStringLiteral("ws://127.0.0.1:5000")); // Change to your real server
@ -167,6 +93,21 @@ void autoapp::ui::MainWindow::connectWebSocket()
void autoapp::ui::MainWindow::handleIncomingMessage(const QString &message)
{
// Your custom message processing logic here
qDebug() << "[Handler] Processing message:" << message;
QJsonDocument doc = QJsonDocument::fromJson(message.toUtf8(), &error);
QJsonObject rootObj = doc.object();
if (rootObj.contains("bluetooth")) {
ui_->stackedWidget->setCurrentIndex(0);
QJsonObject btObj = rootObj["bluetooth"].toObject();
ui_->btSongName->setText(btObj["song"].toString());
ui_->btArtistName->setText(btObj["artist"].toString());
ui_->btAlbumName->setText(btObj["album"].toString());
} else if (rootObj.contains("radio")) {
ui_->stackedWidget->setCurrentIndex(1);
QJsonObject radioObj = rootObj["radio"].toObject();
ui_->radioScreen->setText(radioObj["screen"].toString());
ui_->radioPreset->setText(radioObj["preset"].toString());
ui_->radioSecondLine->setText(radioObj["second"].toString());
}
}

View File

@ -48,7 +48,6 @@ namespace autoapp
private slots:
void connectWebSocket();
void handleIncomingMessage(const QString &message);
void updateBtNowPlaying();
private:
Ui::MainWindow *ui_;