OSDN Git Service

Updated the window layout saving logic.
authortkawata <tkawata@users.sourceforge.jp>
Thu, 31 May 2012 16:25:40 +0000 (01:25 +0900)
committertkawata <tkawata@users.sourceforge.jp>
Thu, 31 May 2012 16:25:40 +0000 (01:25 +0900)
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
Source/DNSettings.h
Source/QtDennco/mainwindow.cpp

index 8cd6aa2..cfd977c 100644 (file)
@@ -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";
index 79e62fd..aace18a 100644 (file)
@@ -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;
index 9f04064..515b656 100644 (file)
@@ -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);