Added games installer and now its amazing

This commit is contained in:
Jon ESA
2026-04-01 19:44:03 +01:00
parent 0146bcb6f2
commit f0c231e935
4 changed files with 148 additions and 80 deletions

View File

@@ -8,7 +8,7 @@
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QUrl>
#include <QAbstractSocket>
WebSocketController::WebSocketController(QLineEdit *urlEdit,
QLabel *statusLabel,
@@ -27,10 +27,10 @@ void WebSocketController::setSettingsTree(SettingsTree *tree)
this, &WebSocketController::onValueEdited);
}
void WebSocketController::setGamesPanel(GamesPanel *panel) { m_gamesPanel = panel; }
void WebSocketController::setVersionsPanel(VersionsPanel *panel) { m_versionsPanel = panel; }
void WebSocketController::setPowerPanel(PowerPanel *panel) { m_powerPanel = panel; }
void WebSocketController::setLogPanel(LogPanel *panel) { m_logPanel = panel; }
void WebSocketController::setGamesPanel(GamesPanel *panel) { m_gamesPanel = panel; }
void WebSocketController::setVersionsPanel(VersionsPanel *p) { m_versionsPanel = p; }
void WebSocketController::setPowerPanel(PowerPanel *panel) { m_powerPanel = panel; }
void WebSocketController::setLogPanel(LogPanel *panel) { m_logPanel = panel; }
bool WebSocketController::isConnected() const
{
@@ -71,6 +71,7 @@ void WebSocketController::onConnected()
sendCommand(QStringLiteral("GBL List"));
sendCommand(QStringLiteral("GAM list"));
sendCommand(QStringLiteral("GAM listall")); // <-- fetch full catalogue
sendCommand(QStringLiteral("NAM"));
sendCommand(QStringLiteral("VER"));
sendCommand(QStringLiteral("UID"));
@@ -123,38 +124,35 @@ void WebSocketController::handleProtocol(const QString &msg)
}
// ---- LOG channel list ----
// Response: LOG name1 name2* name3 ... (* = enabled)
if (cmd == "LOG" && tokens.size() > 1 && m_logPanel) {
// Only handle the full list response (no '=' in any token)
bool isList = true;
for (int i = 1; i < tokens.size(); ++i) {
for (int i = 1; i < tokens.size(); ++i)
if (tokens[i].contains('=')) { isList = false; break; }
}
if (isList) m_logPanel->applyLogResponse(msg);
return;
}
// NAM
// ---- NAM ----
if (cmd == "NAM" && tokens.size() >= 2) {
if (m_versionsPanel) m_versionsPanel->setDeviceName(tokens[1]);
return;
}
// VER
// ---- VER ----
if (cmd == "VER" && tokens.size() >= 3) {
if (m_versionsPanel)
m_versionsPanel->setVersion(tokens[1], tokens.mid(2).join(' '));
return;
}
// UID
// ---- UID ----
if (cmd == "UID" && tokens.size() >= 3) {
if (m_versionsPanel)
m_versionsPanel->setUid(tokens[1], tokens.mid(2).join(' '));
return;
}
// RNP
// ---- RNP ----
if (cmd == "RNP" && tokens.size() >= 2) {
bool ok = false;
const int count = tokens[1].toInt(&ok);
@@ -169,13 +167,19 @@ void WebSocketController::handleProtocol(const QString &msg)
return;
}
// GAM list
// ---- GAM listall — full catalogue ----
if (cmd == "GAM" && tokens.size() >= 2 && tokens[1] == "listall") {
if (m_gamesPanel) m_gamesPanel->loadAllFromResponse(msg);
return;
}
// ---- GAM list — installed games ----
if (cmd == "GAM" && tokens.size() >= 2 && tokens[1] == "list") {
if (m_gamesPanel) m_gamesPanel->loadFromResponse(msg);
return;
}
// GBL List key1 key2 ...
// ---- GBL List key1 key2 ... ----
if (cmd == "GBL" && tokens.size() > 2 && tokens[1] == "List") {
m_settingsKeys = tokens.mid(2);
if (m_settingsTree) {
@@ -186,7 +190,7 @@ void WebSocketController::handleProtocol(const QString &msg)
return;
}
// GBL key=value
// ---- GBL key=value ----
if (cmd == "GBL" && tokens.size() >= 2 && m_settingsTree) {
const QString payload = tokens[1];
const int eqIdx = payload.indexOf('=');