ui: save and load view layout
* QtMainWindow now saves and loads its layout parameters.
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -20,6 +20,9 @@ public:
|
||||
void addView(View* view);
|
||||
void removeView(View* view);
|
||||
|
||||
void loadLayout();
|
||||
void saveLayout();
|
||||
|
||||
public slots:
|
||||
void about();
|
||||
void newProject();
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user