From 6276bb9d64aa806152024facac44692185dcf832 Mon Sep 17 00:00:00 2001 From: tkawata Date: Fri, 1 Jun 2012 01:25:40 +0900 Subject: [PATCH] Updated the window layout saving logic. Now, not only the layout of the console widget is saved, but also the size of the console widget is saved and reloaded. --- Source/DNSettings.cpp | 3 +-- Source/DNSettings.h | 2 +- Source/QtDennco/mainwindow.cpp | 57 +++++------------------------------------- 3 files changed, 8 insertions(+), 54 deletions(-) diff --git a/Source/DNSettings.cpp b/Source/DNSettings.cpp index 8cd6aa2..cfd977c 100644 --- a/Source/DNSettings.cpp +++ b/Source/DNSettings.cpp @@ -20,8 +20,7 @@ #include "DNSettingsImpl.h" const char *DNSettings::CONTEXT_PATH = "content_path"; -const char *DNSettings::WINDOWLAYOUT_DOCK = "windowlayout_dock"; - +const char *DNSettings::WINDOWLAYOUT = "windowlayout"; const char *DNSettings::SERIAL_PORTNAME = "serial portName"; const char *DNSettings::SERIAL_RATE = "serial rate"; const char *DNSettings::SERIAL_DATABITS = "serial databits"; diff --git a/Source/DNSettings.h b/Source/DNSettings.h index 79e62fd..aace18a 100644 --- a/Source/DNSettings.h +++ b/Source/DNSettings.h @@ -25,7 +25,7 @@ class DNSettings { public: static const char *CONTEXT_PATH; - static const char *WINDOWLAYOUT_DOCK; + static const char *WINDOWLAYOUT; static const char *SERIAL_PORTNAME; static const char *SERIAL_RATE; diff --git a/Source/QtDennco/mainwindow.cpp b/Source/QtDennco/mainwindow.cpp index 9f04064..515b656 100644 --- a/Source/QtDennco/mainwindow.cpp +++ b/Source/QtDennco/mainwindow.cpp @@ -61,67 +61,22 @@ MainWindow::MainWindow(QWidget *parent) : TKLog::setDestination(this); connect(this, SIGNAL(consoleUpdated()), this, SLOT(update()), Qt::AutoConnection); - std::string area = DNSettings::getValue(DNSettings::WINDOWLAYOUT_DOCK, "B"); - if (area == "B") - { - addDockWidget(Qt::BottomDockWidgetArea, ui->dockWidget_3); - } - else if (area == "L") - { - addDockWidget(Qt::LeftDockWidgetArea, ui->dockWidget_3); - } - else if (area == "R") - { - addDockWidget(Qt::RightDockWidgetArea, ui->dockWidget_3); - } - else if (area == "T") - { - addDockWidget(Qt::TopDockWidgetArea, ui->dockWidget_3); - } - else if (area == "F") - { - ui->dockWidget_3->setFloating(true); - } + std::string savedWindowStateStr = DNSettings::getValue(DNSettings::WINDOWLAYOUT,""); + QByteArray savedWindowStateQArray(savedWindowStateStr.c_str()); + restoreState(QByteArray::fromHex(savedWindowStateQArray)); } MainWindow::~MainWindow() { - std::string areaStr = "B"; - if (ui->dockWidget_3->isFloating()) - { - areaStr = "F"; - } - else - { - Qt::DockWidgetArea area = dockWidgetArea(ui->dockWidget_3); - switch (area) - { - case Qt::BottomDockWidgetArea: - areaStr = "B"; - break; - - case Qt::LeftDockWidgetArea: - areaStr = "L"; - break; - case Qt::RightDockWidgetArea: - areaStr = "R"; - break; - case Qt::TopDockWidgetArea: - areaStr = "T"; - break; - default: - areaStr = "B"; - break; - } - } - DNSettings::setValue(DNSettings::WINDOWLAYOUT_DOCK, areaStr); - instance = 0; delete ui; } void MainWindow::closeEvent(QCloseEvent *event) { + QByteArray savingWindowStateQArray = saveState().toHex(); + DNSettings::setValue(DNSettings::WINDOWLAYOUT, savingWindowStateQArray.constData()); + stopEngine(); deleteCurrentEngine(); QMainWindow::closeEvent(event); -- 2.11.0