Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void DockContainer::restoreState(const QJsonObject &root)
- {
- restoreContainer(root);
- }
- QWidget* DockContainer::restoreContainer(const QJsonObject &root)
- {
- auto type = root.value("type").toString();
- QWidget* widget = nullptr;
- if(type == "splitter")
- {
- restoreSplitter(root);
- }
- else if(type == "section") /// create new section and restore it
- {
- return restoreSection(root);
- }
- return widget;
- }
- bool DockContainer::registerSection(DockSection *section)
- {
- if(!section)
- return false;
- mSections.push_back(section);
- section->setDockContainer(this);
- return true;
- }
- QSplitter *DockContainer::restoreSplitter(const QJsonObject &root)
- {
- auto orientation = root.value("orientation").toString() == "vertical" ? Qt::Vertical : Qt::Horizontal;
- auto items = root.value("items").toArray();
- auto sizes = root.value("sizes").toArray();
- auto splitter = createSplitter(orientation, this);
- if(!mSplitter)
- {
- mSplitter = splitter;
- mMainLayout->addWidget(mSplitter);
- }
- QList<int> sizesList;
- for(int i = 0; i < items.size(); i++)
- {
- QWidget* item = restoreSplitter(items.at(i).toObject());
- if(item)
- {
- splitter->addWidget(item);
- sizesList.append(sizes.at(i).toInt());
- }
- }
- splitter->setSizes(sizesList);
- return splitter;
- }
- DockSection *DockContainer::restoreSection(const QJsonObject &root)
- {
- auto section = mDockManager->restoreSection(root);
- registerSection(section);
- return section;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement