Implement title bar statistics

This commit is contained in:
Cacodemon345
2021-12-01 15:55:41 +06:00
parent ac52b32adb
commit 88452f7957
4 changed files with 48 additions and 3 deletions

View File

@@ -13,6 +13,7 @@
#include "SDL.h"
#include "SDL_mutex.h"
#include "SDL_timer.h"
#include "qt_mainwindow.hpp"
#include "qt_sdl.h"
#include "cocoa_mouse.hpp"
@@ -76,6 +77,12 @@ main_thread_fn()
is_quit = 1;
}
uint32_t timer_onesec(uint32_t interval, void* param)
{
pc_onesec();
return interval;
}
int main(int argc, char* argv[]) {
QApplication app(argc, argv);
#ifdef __APPLE__
@@ -97,6 +104,7 @@ int main(int argc, char* argv[]) {
/* Set the PAUSE mode depending on the renderer. */
// plat_pause(0);
SDL_AddTimer(1000, timer_onesec, nullptr);
/* Initialize the rendering window, or fullscreen. */
QTimer::singleShot(50, []() { plat_resize(640, 480); } );

View File

@@ -48,6 +48,9 @@ MainWindow::MainWindow(QWidget *parent) :
connect(this, &MainWindow::showMessageForNonQtThread, this, &MainWindow::showMessage_, Qt::BlockingQueuedConnection);
connect(this, &MainWindow::setTitleForNonQtThread, this, &MainWindow::setTitle_, Qt::BlockingQueuedConnection);
connect(this, &MainWindow::getTitleForNonQtThread, this, &MainWindow::getTitle_, Qt::BlockingQueuedConnection);
connect(this, &MainWindow::pollMouse, ui->glesWidget, &GLESWidget::qt_mouse_poll);
connect(this, &MainWindow::setMouseCapture, this, [this](bool state) {
@@ -641,6 +644,34 @@ void MainWindow::on_actionFullscreen_triggered() {
}
}
void MainWindow::setTitle_(const wchar_t *title)
{
this->setWindowTitle(QString::fromWCharArray(title));
}
void MainWindow::setTitle(const wchar_t *title)
{
if (QThread::currentThread() == this->thread()) {
setTitle_(title);
} else {
emit setTitleForNonQtThread(title);
}
}
void MainWindow::getTitle_(wchar_t *title)
{
this->windowTitle().toWCharArray(title);
}
void MainWindow::getTitle(wchar_t *title)
{
if (QThread::currentThread() == this->thread()) {
getTitle_(title);
} else {
emit getTitleForNonQtThread(title);
}
}
void MainWindow::showMessage(const QString& header, const QString& message) {
if (QThread::currentThread() == this->thread()) {
showMessage_(header, message);

View File

@@ -20,6 +20,8 @@ public:
~MainWindow();
void showMessage(const QString& header, const QString& message);
void setTitle(const wchar_t* title);
void getTitle(wchar_t* title);
signals:
void paint(const QImage& image);
void blitToWidget(int x, int y, int w, int h);
@@ -33,6 +35,8 @@ signals:
void setMouseCapture(bool state);
void showMessageForNonQtThread(const QString& header, const QString& message);
void setTitleForNonQtThread(const wchar_t* title);
void getTitleForNonQtThread(wchar_t* title);
private slots:
void on_actionFullscreen_triggered();
void on_actionSettings_triggered();
@@ -45,6 +49,8 @@ private slots:
void on_actionKeyboard_requires_capture_triggered();
void showMessage_(const QString& header, const QString& message);
void setTitle_(const wchar_t* title);
void getTitle_(wchar_t* title);
protected:
void keyPressEvent(QKeyEvent* event) override;
void keyReleaseEvent(QKeyEvent* event) override;

View File

@@ -27,11 +27,11 @@ wchar_t* ui_window_title(wchar_t* str)
{
if (str == nullptr) {
static wchar_t title[512];
int chars = main_window->windowTitle().toWCharArray(title);
title[chars] = 0;
memset(title, 0, sizeof(title));
main_window->getTitle(title);
str = title;
} else {
main_window->setWindowTitle(QString::fromWCharArray(str));
main_window->setTitle(str);
}
return str;
}