Advertisement
Guest User

Untitled

a guest
Oct 28th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.62 KB | None | 0 0
  1.  
  2. void DockContainer::restoreState(const QJsonObject &root)
  3. {
  4.     restoreContainer(root);
  5. }
  6.  
  7. QWidget* DockContainer::restoreContainer(const QJsonObject &root)
  8. {
  9.     auto type = root.value("type").toString();
  10.  
  11.     QWidget* widget = nullptr;
  12.     if(type == "splitter")
  13.     {
  14.         restoreSplitter(root);
  15.     }
  16.     else if(type == "section") /// create new section and restore it
  17.     {
  18.         return restoreSection(root);
  19.     }
  20.  
  21.     return widget;
  22. }
  23.  
  24. bool DockContainer::registerSection(DockSection *section)
  25. {
  26.     if(!section)
  27.         return false;
  28.  
  29.     mSections.push_back(section);
  30.     section->setDockContainer(this);
  31.  
  32.     return true;
  33. }
  34.  
  35. QSplitter *DockContainer::restoreSplitter(const QJsonObject &root)
  36. {
  37.     auto orientation = root.value("orientation").toString() == "vertical" ? Qt::Vertical : Qt::Horizontal;
  38.     auto items = root.value("items").toArray();
  39.     auto sizes = root.value("sizes").toArray();
  40.  
  41.     auto splitter = createSplitter(orientation, this);
  42.     if(!mSplitter)
  43.     {
  44.         mSplitter = splitter;
  45.         mMainLayout->addWidget(mSplitter);
  46.     }
  47.  
  48.     QList<int> sizesList;
  49.     for(int i = 0; i < items.size(); i++)
  50.     {
  51.         QWidget* item = restoreSplitter(items.at(i).toObject());
  52.         if(item)
  53.         {
  54.             splitter->addWidget(item);
  55.             sizesList.append(sizes.at(i).toInt());
  56.         }
  57.     }
  58.  
  59.     splitter->setSizes(sizesList);
  60.  
  61.     return splitter;
  62. }
  63.  
  64. DockSection *DockContainer::restoreSection(const QJsonObject &root)
  65. {
  66.     auto section = mDockManager->restoreSection(root);
  67.     registerSection(section);
  68.  
  69.     return section;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement