From e34b2534edc6513cc57bb71875be4d48e74c73a7 Mon Sep 17 00:00:00 2001 From: Salanto <62221668+Salanto@users.noreply.github.com> Date: Fri, 12 Jul 2024 13:23:40 +0200 Subject: [PATCH] Restore position in AOApplication --- src/aoapplication.cpp | 36 ++++++++++++++++++++---------------- src/aoapplication.h | 1 + src/courtroom.cpp | 14 ++------------ src/lobby.cpp | 3 ++- 4 files changed, 25 insertions(+), 29 deletions(-) diff --git a/src/aoapplication.cpp b/src/aoapplication.cpp index 686c88c..2ee6621 100644 --- a/src/aoapplication.cpp +++ b/src/aoapplication.cpp @@ -51,18 +51,7 @@ void AOApplication::construct_lobby() w_lobby = new Lobby(this, net_manager); - auto point = Options::getInstance().windowPosition("lobby"); - if (!Options::getInstance().restoreWindowPositionEnabled() || !point.has_value() || !pointExistsOnScreen(point.value())) - { - QRect geometry = QGuiApplication::primaryScreen()->geometry(); - int x = (geometry.width() - w_lobby->width()) / 2; - int y = (geometry.height() - w_lobby->height()) / 2; - w_lobby->move(x, y); - } - else - { - w_lobby->move(point->x(), point->y()); - } + centerOrMoveWidgetOnPrimaryScreen(w_lobby); if (Options::getInstance().discordEnabled()) { @@ -104,10 +93,7 @@ void AOApplication::construct_courtroom() w_courtroom = new Courtroom(this); - QRect geometry = QGuiApplication::primaryScreen()->geometry(); - int x = (geometry.width() - w_courtroom->width()) / 2; - int y = (geometry.height() - w_courtroom->height()) / 2; - w_courtroom->move(x, y); + centerOrMoveWidgetOnPrimaryScreen(w_courtroom); if (demo_server != nullptr) { @@ -245,6 +231,24 @@ bool AOApplication::pointExistsOnScreen(QPoint point) return false; } +void AOApplication::centerOrMoveWidgetOnPrimaryScreen(QWidget *widget) +{ + auto point = Options::getInstance().windowPosition(widget->objectName()); + qDebug() << widget->objectName(); + qDebug() << point.has_value(); + if (!Options::getInstance().restoreWindowPositionEnabled() || !point.has_value() || !pointExistsOnScreen(point.value())) + { + QRect geometry = QGuiApplication::primaryScreen()->geometry(); + int x = (geometry.width() - widget->width()) / 2; + int y = (geometry.height() - widget->height()) / 2; + widget->move(x, y); + } + else + { + widget->move(point->x(), point->y()); + } +} + #if (defined(_WIN32) || defined(_WIN64)) void AOApplication::load_bass_plugins() { diff --git a/src/aoapplication.h b/src/aoapplication.h index 998f349..beec23b 100644 --- a/src/aoapplication.h +++ b/src/aoapplication.h @@ -326,6 +326,7 @@ public: QString log_filename; bool pointExistsOnScreen(QPoint point); + void centerOrMoveWidgetOnPrimaryScreen(QWidget *widget); void initBASS(); static void load_bass_plugins(); diff --git a/src/courtroom.cpp b/src/courtroom.cpp index 39d6ff9..9d3240c 100644 --- a/src/courtroom.cpp +++ b/src/courtroom.cpp @@ -11,6 +11,7 @@ Courtroom::Courtroom(AOApplication *p_ao_app) , ao_app{p_ao_app} { setWindowFlags((this->windowFlags() | Qt::CustomizeWindowHint) & ~Qt::WindowMaximizeButtonHint); + setObjectName("courtroom"); ao_app->initBASS(); keepalive_timer = new QTimer(this); @@ -1370,16 +1371,6 @@ void Courtroom::done_received() show(); - if (Options::getInstance().restoreWindowPositionEnabled()) - { - auto maybe_point = Options::getInstance().windowPosition("courtroom"); - if (maybe_point.has_value() && ao_app->pointExistsOnScreen(maybe_point.value())) - { - qDebug() << maybe_point.value(); - QMainWindow::move(maybe_point.value()); - } - } - ui_spectator->show(); } @@ -1917,8 +1908,7 @@ void Courtroom::set_judge_buttons() void Courtroom::closeEvent(QCloseEvent *event) { - Options::getInstance().setWindowPosition("courtroom", pos()); - qDebug() << pos(); + Options::getInstance().setWindowPosition(objectName(), pos()); QMainWindow::closeEvent(event); } diff --git a/src/lobby.cpp b/src/lobby.cpp index f4da9d5..1f37f4b 100644 --- a/src/lobby.cpp +++ b/src/lobby.cpp @@ -16,6 +16,7 @@ Lobby::Lobby(AOApplication *p_ao_app, NetworkManager *p_net_manager) , net_manager{p_net_manager} { reloadUi(); + setObjectName("lobby"); } void Lobby::on_tab_changed(int index) @@ -83,7 +84,7 @@ int Lobby::pageSelected() void Lobby::closeEvent(QCloseEvent *event) { - Options::getInstance().setWindowPosition("lobby", pos()); + Options::getInstance().setWindowPosition(objectName(), pos()); QMainWindow::closeEvent(event); }