Save window position/size

This commit is contained in:
Nova 2025-11-17 18:45:22 +03:30
parent 70c0ecd926
commit 7a32e4144c
4 changed files with 27 additions and 7 deletions

View File

@ -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

View File

@ -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;

View File

@ -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) {

View File

@ -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());