OSDN Git Service

- auto resize window size along with the loaded UI.
authortkawata <tkawata@users.sourceforge.jp>
Thu, 31 May 2012 00:29:45 +0000 (09:29 +0900)
committertkawata <tkawata@users.sourceforge.jp>
Thu, 31 May 2012 00:29:45 +0000 (09:29 +0900)
- remember the layout of the dock widget (console view).

Source/DNSettings.cpp
Source/DNSettings.h
Source/QtDennco/mainwindow.cpp
Source/QtDennco/mainwindow.h

index 19bad77..8cd6aa2 100644 (file)
@@ -20,6 +20,7 @@
 #include "DNSettingsImpl.h"
 
 const char *DNSettings::CONTEXT_PATH        = "content_path";
+const char *DNSettings::WINDOWLAYOUT_DOCK   = "windowlayout_dock";
 
 const char *DNSettings::SERIAL_PORTNAME     = "serial portName";
 const char *DNSettings::SERIAL_RATE         = "serial rate";
index 7014364..79e62fd 100644 (file)
@@ -25,6 +25,7 @@ class DNSettings
 {
 public:
     static const char *CONTEXT_PATH;
+    static const char *WINDOWLAYOUT_DOCK;
 
     static const char *SERIAL_PORTNAME;
     static const char *SERIAL_RATE;
index 1624469..9f04064 100644 (file)
@@ -60,10 +60,62 @@ MainWindow::MainWindow(QWidget *parent) :
     ui->console->setFont(monofont);
     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);
+    }
 }
 
 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;
 }
@@ -170,10 +222,19 @@ void MainWindow::attachWebInterface()
         {
             frame->addToJavaScriptWindowObject("engine", mWebInterface);
             connect(frame, SIGNAL(javaScriptWindowObjectCleared()), this, SLOT(attachWebInterface()));
+            connect(frame, SIGNAL(initialLayoutCompleted()), this, SLOT(adjustWindowSize()));
         }
     }
 }
 
+void MainWindow::adjustWindowSize()
+{
+    int hadjust = ui->webView->page()->mainFrame()->scrollBarMaximum(Qt::Horizontal);
+    int vadjust = ui->webView->page()->mainFrame()->scrollBarMaximum(Qt::Vertical);
+    QSize currentSize = size();
+    resize(currentSize.width() + hadjust, currentSize.height() + vadjust);
+}
+
 void MainWindow::deleteCurrentEngine()
 {
     if (mEngine)
index 11f7c94..58b6eac 100644 (file)
@@ -51,6 +51,7 @@ private slots:
     void on_chooseDirButton_clicked();
     void on_startButton_clicked();
     void attachWebInterface();
+    void adjustWindowSize();
 
 private:
     bool  startEngine();