From 16d10775dcfe63a1b943eb68b594be749ef86e19 Mon Sep 17 00:00:00 2001 From: stojce Date: Mon, 7 Oct 2013 21:04:36 +0200 Subject: [PATCH] #19434 restore window position on start - store position and size on app end - restore position and size on app start --- interface/src/Application.cpp | 35 +++++++++++++++++++++++++++++++++-- interface/src/Application.h | 2 ++ 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6d7686328f..e0b098d36d 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -214,8 +214,7 @@ Application::Application(int& argc, char** argv, timeval &startup_time) : cache->setCacheDirectory("interfaceCache"); _networkAccessManager->setCache(cache); - QRect available = desktop()->availableGeometry(); - _window->resize(available.size()); + restoreSizeAndPosition(); _window->setVisible(true); _glWidget->setFocusPolicy(Qt::StrongFocus); _glWidget->setFocus(); @@ -230,6 +229,7 @@ Application::Application(int& argc, char** argv, timeval &startup_time) : } Application::~Application() { + storeSizeAndPosition(); NodeList::getInstance()->removeHook(&_voxels); NodeList::getInstance()->removeHook(this); NodeList::getInstance()->removeDomainListener(this); @@ -247,6 +247,37 @@ Application::~Application() { delete _glWidget; } +void Application::restoreSizeAndPosition() { + QSettings* settings = new QSettings(this); + QRect available = desktop()->availableGeometry(); + + settings->beginGroup("Window"); + + float x = loadSetting(settings, "x", 0); + float y = loadSetting(settings, "y", 0); + _window->move(x, y); + + int width = loadSetting(settings, "width", available.width()); + int height = loadSetting(settings, "height", available.height()); + _window->resize(width, height); + + settings->endGroup(); +} + +void Application::storeSizeAndPosition() { + QSettings* settings = new QSettings(this); + + settings->beginGroup("Window"); + + settings->setValue("width", _window->rect().width()); + settings->setValue("height", _window->rect().height()); + + settings->setValue("x", _window->pos().x()); + settings->setValue("y", _window->pos().y()); + + settings->endGroup(); +} + void Application::initializeGL() { qDebug( "Created Display Window.\n" ); diff --git a/interface/src/Application.h b/interface/src/Application.h index 620d6d57f5..4f9c2e24d6 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -89,6 +89,8 @@ public: Application(int& argc, char** argv, timeval &startup_time); ~Application(); + void restoreSizeAndPosition(); + void storeSizeAndPosition(); void initializeGL(); void paintGL(); void resizeGL(int width, int height);