ui: save and load view layout

* QtMainWindow now saves and loads its layout parameters.
This commit is contained in:
malte_langkabel
2014-07-16 13:48:40 +02:00
parent 810ed7c064
commit 886171cb2a
8 changed files with 78 additions and 6 deletions
+55
View File
@@ -5,6 +5,7 @@
#include <QDockWidget>
#include <QMenuBar>
#include <QMessageBox>
#include <QSettings>
#include "component/view/View.h"
#include "qt/QtWidgetWrapper.h"
@@ -86,6 +87,60 @@ void QtMainWindow::removeView(View* view)
}
}
void QtMainWindow::loadLayout()
{
QSettings settings("data/window_settings.ini", QSettings::IniFormat);
settings.beginGroup("MainWindow");
resize(settings.value("size", QSize(600, 400)).toSize());
move(settings.value("position", QPoint(200, 200)).toPoint());
if (settings.value("maximized", false).toBool())
{
showMaximized();
}
settings.endGroup();
for (size_t i = 0; i < m_dockWidgets.size(); i++)
{
View* view = m_dockWidgets[i].first;
QDockWidget* dockWidget = m_dockWidgets[i].second;
settings.beginGroup(view->getName().c_str());
dockWidget->setFloating(settings.value("floating", false).toBool());
dockWidget->setHidden(settings.value("hidden", false).toBool());
dockWidget->resize(settings.value("size", QSize(400, 400)).toSize());
dockWidget->move(settings.value("position", QPoint(200, 200)).toPoint());
settings.endGroup();
}
}
void QtMainWindow::saveLayout()
{
QSettings settings("data/window_settings.ini", QSettings::IniFormat);
settings.beginGroup("MainWindow");
settings.setValue("maximized", isMaximized());
if (!isMaximized())
{
settings.setValue("size", size());
settings.setValue("position", pos());
}
settings.endGroup();
for (size_t i = 0; i < m_dockWidgets.size(); i++)
{
View* view = m_dockWidgets[i].first;
QDockWidget* dockWidget = m_dockWidgets[i].second;
settings.beginGroup(view->getName().c_str());
settings.setValue("floating", dockWidget->isFloating());
settings.setValue("hidden", dockWidget->isHidden());
settings.setValue("size", dockWidget->size());
settings.setValue("position", dockWidget->pos());
settings.endGroup();
}
}
void QtMainWindow::setupProjectMenu()
{
QMenu *menu = new QMenu(tr("&Project"), this);
+3
View File
@@ -20,6 +20,9 @@ public:
void addView(View* view);
void removeView(View* view);
void loadLayout();
void saveLayout();
public slots:
void about();
void newProject();
+10
View File
@@ -31,3 +31,13 @@ void QtMainView::removeView(View* view)
m_window->removeView(view);
m_views.erase(it);
}
void QtMainView::loadLayout()
{
m_window->loadLayout();
}
void QtMainView::saveLayout()
{
m_window->saveLayout();
}
+3
View File
@@ -19,6 +19,9 @@ public:
void addView(View* view);
void removeView(View* view);
virtual void loadLayout();
virtual void saveLayout();
private:
std::shared_ptr<QtMainWindow> m_window;
std::vector<View*> m_views;