From 7a32e4144c0e2ad1906ea210635e67a2627c28ad Mon Sep 17 00:00:00 2001 From: Nova Date: Mon, 17 Nov 2025 18:45:22 +0330 Subject: [PATCH] Save window position/size --- CMakeLists.txt | 25 ++++++++++++++++++------- include/global/DataStore.hpp | 1 + src/global/Configs.cpp | 1 + src/ui/mainwindow.cpp | 7 +++++++ 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a9183a..4d7d0d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -277,6 +277,24 @@ set(PROJECT_SOURCES include/configs/outbounds/custom.h include/configs/outbounds/chain.h include/configs/outbounds/extracore.h + include/ui/profile/edit_socks.h + src/ui/profile/edit_socks.cpp + include/ui/profile/edit_socks.ui + include/ui/profile/edit_http.h + src/ui/profile/edit_http.cpp + include/ui/profile/edit_http.ui + include/ui/profile/edit_trojan.h + src/ui/profile/edit_trojan.cpp + include/ui/profile/edit_trojan.ui + include/ui/profile/edit_hysteria.h + src/ui/profile/edit_hysteria.cpp + include/ui/profile/edit_hysteria.ui + include/ui/profile/edit_tuic.h + src/ui/profile/edit_tuic.cpp + include/ui/profile/edit_tuic.ui + include/ui/profile/edit_hysteria2.h + src/ui/profile/edit_hysteria2.cpp + include/ui/profile/edit_hysteria2.ui ) if (NOT APPLE AND Qt6_VERSION VERSION_GREATER_EQUAL 6.9.0) @@ -290,12 +308,6 @@ endif () qt_add_executable(Throne MANUAL_FINALIZATION ${PROJECT_SOURCES} - include/ui/profile/edit_socks.h src/ui/profile/edit_socks.cpp include/ui/profile/edit_socks.ui - include/ui/profile/edit_http.h src/ui/profile/edit_http.cpp include/ui/profile/edit_http.ui - include/ui/profile/edit_trojan.h src/ui/profile/edit_trojan.cpp include/ui/profile/edit_trojan.ui - include/ui/profile/edit_hysteria.h src/ui/profile/edit_hysteria.cpp include/ui/profile/edit_hysteria.ui - include/ui/profile/edit_tuic.h src/ui/profile/edit_tuic.cpp include/ui/profile/edit_tuic.ui - include/ui/profile/edit_hysteria2.h src/ui/profile/edit_hysteria2.cpp include/ui/profile/edit_hysteria2.ui ) # Target @@ -319,7 +331,6 @@ set_target_properties(Throne PROPERTIES MACOSX_BUNDLE_GUI_IDENTIFIER moe.Throne.macosx MACOSX_BUNDLE TRUE WIN32_EXECUTABLE TRUE - ) # Target Source Translations diff --git a/include/global/DataStore.hpp b/include/global/DataStore.hpp index f34d1f4..7a9e94d 100644 --- a/include/global/DataStore.hpp +++ b/include/global/DataStore.hpp @@ -77,6 +77,7 @@ namespace Configs { // Saved // Misc + QString mainWindowGeometry; QString log_level = "info"; QString test_latency_url = "http://cp.cloudflare.com/"; int url_test_timeout_ms = 3000; diff --git a/src/global/Configs.cpp b/src/global/Configs.cpp index 43eb40d..7a83026 100644 --- a/src/global/Configs.cpp +++ b/src/global/Configs.cpp @@ -323,6 +323,7 @@ namespace Configs { _add(new configItem("speed_test_timeout_ms", &speed_test_timeout_ms, itemType::integer)); _add(new configItem("url_test_timeout_ms", &url_test_timeout_ms, itemType::integer)); _add(new configItem("show_system_dns", &show_system_dns, itemType::boolean)); + _add(new configItem("main_window_geometry", &mainWindowGeometry, itemType::string)); } void DataStore::UpdateStartedId(int id) { diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp index 5dc5141..a158c5d 100644 --- a/src/ui/mainwindow.cpp +++ b/src/ui/mainwindow.cpp @@ -90,6 +90,12 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi setActionsData(); loadShortcuts(); + // geometry remembering + if (!Configs::dataStore->mainWindowGeometry.isEmpty()) { + auto geo = DecodeB64IfValid(Configs::dataStore->mainWindowGeometry); + this->restoreGeometry(geo); + } + // setup log ui->splitter->restoreState(DecodeB64IfValid(Configs::dataStore->splitter_state)); new SyntaxHighlighter(isDarkMode() || Configs::dataStore->theme.toLower() == "qdarkstyle", qvLogDocument); @@ -928,6 +934,7 @@ void MainWindow::on_menu_hotkey_settings_triggered() { void MainWindow::on_commitDataRequest() { qDebug() << "Start of data save"; // + Configs::dataStore->mainWindowGeometry = this->saveGeometry().toBase64(QByteArray::Base64Encoding); if (!isMaximized()) { auto olds = Configs::dataStore->mw_size; auto news = QString("%1x%2").arg(size().width()).arg(size().height());