FB11511 - position of log windows should be persistent between invocations of interface

This commit is contained in:
Alexander Ivash 2018-02-01 01:15:03 +03:00
parent 579d9a8640
commit 1ed7d164c4
3 changed files with 49 additions and 4 deletions

View file

@ -38,7 +38,7 @@ const QString FATAL_TEXT = "[FATAL]";
const QString SUPPRESS_TEXT = "[SUPPRESS]";
const QString UNKNOWN_TEXT = "[UNKNOWN]";
LogDialog::LogDialog(QWidget* parent, AbstractLoggerInterface* logger) : BaseLogDialog(parent) {
LogDialog::LogDialog(QWidget* parent, AbstractLoggerInterface* logger) : BaseLogDialog(parent), _windowGeometry("logDialogGeometry", QRect()) {
_logger = logger;
setWindowTitle("Log");
@ -155,6 +155,11 @@ LogDialog::LogDialog(QWidget* parent, AbstractLoggerInterface* logger) : BaseLog
_clearFilterButton->show();
connect(_clearFilterButton, &QPushButton::clicked, this, &LogDialog::handleClearFilterButton);
handleClearFilterButton();
auto windowGeometry = _windowGeometry.get();
if (windowGeometry.isValid()) {
setGeometry(windowGeometry);
}
}
void LogDialog::resizeEvent(QResizeEvent* event) {
@ -173,6 +178,11 @@ void LogDialog::resizeEvent(QResizeEvent* event) {
ELEMENT_HEIGHT);
}
void LogDialog::closeEvent(QCloseEvent* event) {
BaseLogDialog::closeEvent(event);
_windowGeometry.set(geometry());
}
void LogDialog::handleRevealButton() {
_logger->locateLog();
}

View file

@ -13,6 +13,7 @@
#define hifi_LogDialog_h
#include "BaseLogDialog.h"
#include <SettingHandle.h>
class QCheckBox;
class QPushButton;
@ -44,6 +45,8 @@ private slots:
protected:
void resizeEvent(QResizeEvent* event) override;
void closeEvent(QCloseEvent* event) override;
QString getCurrentLog() override;
void printLogFile();
@ -62,6 +65,7 @@ private:
QString _filterSelection;
AbstractLoggerInterface* _logger;
Setting::Handle<QRect> _windowGeometry;
};
#endif // hifi_LogDialog_h

View file

@ -22,14 +22,37 @@ if (scripts.length >= 2) {
// Set up the qml ui
var qml = Script.resolvePath('debugWindow.qml');
var HMD_DEBUG_WINDOW_GEOMETRY_KEY = 'hmdDebugWindowGeometry';
var hmdDebugWindowGeometryValue = Settings.getValue(HMD_DEBUG_WINDOW_GEOMETRY_KEY)
var windowWidth = 400;
var windowHeight = 900;
var hasPosition = false;
var windowX = 0;
var windowY = 0;
if (hmdDebugWindowGeometryValue !== '') {
var geometry = JSON.parse(hmdDebugWindowGeometryValue);
windowWidth = geometry.width
windowHeight = geometry.height
windowX = geometry.x
windowY = geometry.y
hasPosition = true;
}
var window = new OverlayWindow({
title: 'Debug Window',
source: qml,
width: 400, height: 900,
width: windowWidth, height: windowHeight,
});
window.setPosition(25, 50);
window.closed.connect(function() { Script.stop(); });
if (hasPosition) {
window.setPosition(windowX, windowY);
}
window.closed.connect(function () { Script.stop(); });
var getFormattedDate = function() {
var date = new Date();
@ -65,6 +88,14 @@ ScriptDiscoveryService.clearDebugWindow.connect(function() {
});
Script.scriptEnding.connect(function () {
var geometry = JSON.stringify({
x: window.position.x,
y: window.position.y,
width: window.size.x,
height: window.size.y
})
Settings.setValue(HMD_DEBUG_WINDOW_GEOMETRY_KEY, geometry);
window.close();
})