Qt: Begin adding control info to report view

This commit is contained in:
Vicki Pfau 2022-01-10 13:06:03 -08:00
parent 54f89fec1e
commit eef3b5a57c
3 changed files with 31 additions and 0 deletions

View File

@ -195,6 +195,10 @@ void ReportView::generateReport() {
addGLInfo(hwReport);
addReport(QString("Hardware info"), hwReport.join('\n'));
QStringList controlsReport;
addGamepadInfo(controlsReport);
addReport(QString("Controls"), controlsReport.join('\n'));
QList<QScreen*> screens = QGuiApplication::screens();
std::sort(screens.begin(), screens.end(), [](const QScreen* a, const QScreen* b) {
if (a->geometry().y() < b->geometry().y()) {
@ -288,6 +292,10 @@ void ReportView::generateReport() {
} else {
windowReport << QString("ROM open: No");
}
#ifdef BUILD_SDL
InputController* input = window->inputController();
windowReport << QString("Active gamepad: %1").arg(input->gamepad(SDL_BINDING_BUTTON));
#endif
windowReport << QString("Configuration: %1").arg(configs.indexOf(config) + 1);
addReport(QString("Window %1").arg(winId), windowReport.join('\n'));
}
@ -446,6 +454,26 @@ void ReportView::addGLInfo(QStringList& report) {
#endif
}
void ReportView::addGamepadInfo(QStringList& report) {
#ifdef BUILD_SDL
InputController* input = GBAApp::app()->windows()[0]->inputController();
QStringList gamepads = input->connectedGamepads(SDL_BINDING_BUTTON);
report << QString("Connected gamepads: %1").arg(gamepads.size());
int i = 0;
for (const auto& gamepad : gamepads) {
report << QString("Gamepad %1: %2").arg(i).arg(gamepad);
++i;
}
if (gamepads.size()) {
i = 0;
for (Window* window : GBAApp::app()->windows()) {
++i;
report << QString("Window %1 gamepad: %2").arg(i).arg(window->inputController()->gamepad(SDL_BINDING_BUTTON));
}
}
#endif
}
void ReportView::addROMInfo(QStringList& report, CoreController* controller) {
report << QString("Currently paused: %1").arg(yesNo[controller->isPaused()]);

View File

@ -41,6 +41,7 @@ protected:
private:
void addCpuInfo(QStringList&);
void addGLInfo(QStringList&);
void addGamepadInfo(QStringList&);
void addROMInfo(QStringList&, CoreController*);
void addScreenInfo(QStringList&, const QScreen*);

View File

@ -66,6 +66,8 @@ public:
void updateMultiplayerStatus(bool canOpenAnother);
void updateMultiplayerActive(bool active);
InputController* inputController() { return &m_inputController; }
signals:
void startDrawing();
void shutdown();