DockManager.cpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "DockManager.h"
  2. #include "DockableWidget.h"
  3. #include "DockableWidgetArea.h"
  4. void DockManager::addDockArea(DockableWidgetArea* area)
  5. {
  6. if (areas.indexOf(area) == -1) {
  7. areas.append(area);
  8. }
  9. }
  10. int DockManager::dockAreaIndex(DockableWidgetArea* area) const
  11. {
  12. return areas.indexOf(area);
  13. }
  14. void DockManager::dockWidget(DockableWidget* widget, const QPoint& p, const QRect& r)
  15. {
  16. AreaMap::iterator it = areaMap.begin(); // TODO
  17. if (it != areaMap.end()) {
  18. areaMap[widget] = it.value();
  19. return it.value()->addWidget(widget, r);
  20. }
  21. }
  22. void DockManager::undockWidget(DockableWidget* widget)
  23. {
  24. AreaMap::iterator it = areaMap.find(widget);
  25. if (it != areaMap.end()) {
  26. it.value()->removeWidget(widget);
  27. }
  28. }
  29. void DockManager::insertWidget(
  30. DockableWidget* widget, int index,
  31. DockableWidgetLayout::DockSide side, int distance, int w, int h)
  32. {
  33. if (index < 0 || index >= areas.size()) return;
  34. //Q_ASSERT(areaMap.find(widget) == areaMap.end());
  35. areas[index]->addWidget(widget, side, distance, w, h);
  36. areaMap[widget] = areas[index];
  37. }
  38. bool DockManager::insertLocation(QRect& r, const QSizePolicy& sizePol)
  39. {
  40. AreaMap::iterator it = areaMap.begin(); // TODO
  41. if (it == areaMap.end()) return false;
  42. return it.value()->insertLocation(r, sizePol);
  43. }
  44. void DockManager::visibilityChanged(DockableWidget* widget)
  45. {
  46. AreaMap::iterator it = areaMap.find(widget);
  47. if (it != areaMap.end()) {
  48. it.value()->layout->changed();
  49. }
  50. }
  51. void DockManager::getConfig(int index, QStringList& list) const
  52. {
  53. areas[index]->getConfig(list);
  54. }
  55. void DockManager::attachWidget(DockableWidget* widget)
  56. {
  57. dockWidgets.append(widget);
  58. }
  59. void DockManager::detachWidget(DockableWidget* widget)
  60. {
  61. dockWidgets.removeAll(widget);
  62. }
  63. const QList<DockableWidget*>& DockManager::managedWidgets() const
  64. {
  65. return dockWidgets;
  66. }
  67. DockableWidget* DockManager::findDockableWidget(const QString& id) const
  68. {
  69. for (QList<DockableWidget*>::const_iterator it = dockWidgets.begin();
  70. it != dockWidgets.end(); ++it) {
  71. if ((*it)->id() == id) return *it;
  72. }
  73. return 0;
  74. }