diff --git a/AdvancedDockingSystem/include/ads/ContainerWidget.h b/AdvancedDockingSystem/include/ads/ContainerWidget.h
index be8a03c..929058a 100644
--- a/AdvancedDockingSystem/include/ads/ContainerWidget.h
+++ b/AdvancedDockingSystem/include/ads/ContainerWidget.h
@@ -31,13 +31,37 @@ class ContainerWidget : public QFrame
public:
explicit ContainerWidget(QWidget *parent = NULL);
+ //
+ // Public API
+ //
+
Qt::Orientation orientation() const;
void setOrientation(Qt::Orientation orientation);
- void dropContent(const InternalContentData& data, SectionWidget* targetSection, DropArea area);
+ /*!
+ * Adds the section-content sc to this container-widget into the section-widget sw.
+ * If sw is not NULL, the area is used to indicate how the content should be arranged.
+ * Returns a pointer to the SectionWidget of the added SectionContent. Do not use it for anything else than adding more
+ * SectionContent elements with this method.
+ */
+ SectionWidget* addSectionContent(const SectionContent::RefPtr& sc, SectionWidget* sw = NULL, DropArea area = CenterDropArea);
- void addSection(SectionWidget* section);
+ /*!
+ * Creates a QMenu based on available SectionContents.
+ * The ownership is needs to be handled by the caller.
+ */
+ QMenu* createContextMenu() const;
+
+ //
+ // Internal Stuff Begins Here
+ //
+
+ // splitSections splits "section1" and "section2" with given "orientation".
+ // The "section2" element is moved to the "section1" element.
void splitSections(SectionWidget* section1, SectionWidget* section2, Qt::Orientation orientation = Qt::Horizontal);
+
+ SectionWidget* dropContent(const InternalContentData& data, SectionWidget* targetSection, DropArea area, bool autoActive = true);
+ void addSection(SectionWidget* section);
SectionWidget* sectionAt(const QPoint& pos) const;
// Drop areas for the ContainerWidget
@@ -50,12 +74,17 @@ public:
QByteArray saveState() const;
bool restoreState(const QByteArray& data);
- QMenu* createContextMenu() const;
-
private:
void saveGeometryWalk(QDataStream& out, QWidget* widget) const;
bool restoreGeometryWalk(QDataStream& in, QSplitter* currentSplitter = NULL);
+ // takeContent searches all section-widgets and floating-widgets for "sc" and takes
+ // the ownership of it and passes it to "data" object.
+ bool takeContent(const SectionContent::RefPtr& sc, InternalContentData& data);
+
+private slots:
+ void onActionToggleSectionContentVisibility(bool visible);
+
signals:
void orientationChanged();
diff --git a/AdvancedDockingSystem/include/ads/FloatingWidget.h b/AdvancedDockingSystem/include/ads/FloatingWidget.h
index bcbd56e..8a0bcc0 100644
--- a/AdvancedDockingSystem/include/ads/FloatingWidget.h
+++ b/AdvancedDockingSystem/include/ads/FloatingWidget.h
@@ -26,11 +26,10 @@ public:
FloatingWidget(ContainerWidget* container, SectionContent::RefPtr sc, SectionTitleWidget* titleWidget, SectionContentWidget* contentWidget, QWidget* parent = NULL);
virtual ~FloatingWidget();
- InternalContentData takeContent();
SectionContent::RefPtr content() const { return _content; }
-protected:
- virtual void closeEvent(QCloseEvent* e);
+public://private:
+ bool takeContent(InternalContentData& data);
private:
ContainerWidget* _container;
diff --git a/AdvancedDockingSystem/include/ads/SectionWidget.h b/AdvancedDockingSystem/include/ads/SectionWidget.h
index 9b5fb0b..03ce30f 100644
--- a/AdvancedDockingSystem/include/ads/SectionWidget.h
+++ b/AdvancedDockingSystem/include/ads/SectionWidget.h
@@ -39,7 +39,7 @@ public:
const QList& contents() const { return _contents; }
void addContent(SectionContent::RefPtr c);
void addContent(const InternalContentData& data, bool autoActivate);
- InternalContentData take(int uid, bool del = true);
+ bool take(int uid, InternalContentData& data);
int indexOfContent(SectionContent::RefPtr c) const;
int indexOfContentByTitlePos(const QPoint& pos, QWidget* exclude = NULL) const;
diff --git a/AdvancedDockingSystem/src/ContainerWidget.cpp b/AdvancedDockingSystem/src/ContainerWidget.cpp
index 18f1c2c..ab1d2e9 100644
--- a/AdvancedDockingSystem/src/ContainerWidget.cpp
+++ b/AdvancedDockingSystem/src/ContainerWidget.cpp
@@ -1,5 +1,7 @@
#include "ads/ContainerWidget.h"
#include "ads/Internal.h"
+#include "ads/SectionTitleWidget.h"
+#include "ads/SectionContentWidget.h"
#include
#include
@@ -21,7 +23,7 @@ static QSplitter* newSplitter(Qt::Orientation orientation = Qt::Horizontal, QWid
return s;
}
-static void dropContentOuterHelper(ContainerWidget* cw, QLayout* l, const InternalContentData& data, Qt::Orientation orientation, bool append)
+static SectionWidget* dropContentOuterHelper(ContainerWidget* cw, QLayout* l, const InternalContentData& data, Qt::Orientation orientation, bool append)
{
SectionWidget* sw = new SectionWidget(cw);
sw->addContent(data, true);
@@ -70,6 +72,7 @@ static void dropContentOuterHelper(ContainerWidget* cw, QLayout* l, const Intern
#endif
}
}
+ return sw;
}
///////////////////////////////////////////////////////////////////////
@@ -100,29 +103,125 @@ void ContainerWidget::setOrientation(Qt::Orientation orientation)
}
}
-void ContainerWidget::dropContent(const InternalContentData& data, SectionWidget* targetSection, DropArea area)
+SectionWidget* ContainerWidget::addSectionContent(const SectionContent::RefPtr& sc, SectionWidget* sw, DropArea area)
{
+ if (!sw)
+ {
+ if (_sections.isEmpty())
+ { // Create default section
+ sw = new SectionWidget(this);
+ addSection(sw);
+ }
+ else if (area == CenterDropArea)
+ // Use existing default section
+ sw = _sections.first();
+ }
+
+ // Drop it based on "area"
+ InternalContentData data;
+ data.content = sc;
+ data.titleWidget = new SectionTitleWidget(sc, NULL);
+ data.contentWidget = new SectionContentWidget(sc, NULL);
+ return dropContent(data, sw, area, false);
+}
+
+QMenu* ContainerWidget::createContextMenu() const
+{
+ QMenu* m = new QMenu(NULL);
+
+ // Contents of SectionWidgets
+ for (int i = 0; i < _sections.size(); ++i)
+ {
+ SectionWidget* sw = _sections.at(i);
+ QList contents = sw->contents();
+ foreach (const SectionContent::RefPtr& c, contents)
+ {
+ QAction* a = m->addAction(QIcon(), c->uniqueName());
+ a->setProperty("uid", c->uid());
+ a->setProperty("type", "section");
+ a->setCheckable(true);
+ a->setChecked(c->titleWidget()->isVisible());
+#if QT_VERSION >= 0x050000
+ QObject::connect(a, &QAction::toggled, this, &ContainerWidget::onActionToggleSectionContentVisibility);
+#else
+ QObject::connect(a, SIGNAL(toggled(bool)), this, SLOT(onActionToggleSectionContentVisibility(bool)));
+#endif
+ }
+ }
+
+ // Contents of FloatingWidgets
+ if (_floatingWidgets.size())
+ {
+ if (m->actions().size())
+ m->addSeparator();
+ for (int i = 0; i < _floatingWidgets.size(); ++i)
+ {
+ FloatingWidget* fw = _floatingWidgets.at(i);
+ SectionContent::RefPtr c = fw->content();
+ QAction* a = m->addAction(QIcon(), c->uniqueName());
+ a->setProperty("uid", c->uid());
+ a->setProperty("type", "floating");
+ a->setCheckable(true);
+ a->setChecked(fw->isVisible());
+#if QT_VERSION >= 0x050000
+ QObject::connect(a, &QAction::toggled, fw, &FloatingWidget::setVisible);
+#else
+ QObject::connect(a, SIGNAL(toggled(bool)), fw, SLOT(setVisible(bool)));
+#endif
+ }
+ }
+
+ return m;
+}
+
+///////////////////////////////////////////////////////////////////////
+// PRIVATE API BEGINS HERE
+///////////////////////////////////////////////////////////////////////
+
+void ContainerWidget::splitSections(SectionWidget* s1, SectionWidget* s2, Qt::Orientation orientation)
+{
+ addSection(s1);
+
+ if (!s2)
+ s2 = new SectionWidget(this);
+ addSection(s2);
+
+ QSplitter* currentSplitter = findParentSplitter(s1);
+ if (currentSplitter)
+ {
+ const int index = currentSplitter->indexOf(s1);
+ QSplitter* splitter = newSplitter(orientation, this);
+ splitter->addWidget(s1);
+ splitter->addWidget(s2);
+ currentSplitter->insertWidget(index, splitter);
+ }
+}
+
+SectionWidget* ContainerWidget::dropContent(const InternalContentData& data, SectionWidget* targetSection, DropArea area, bool autoActive)
+{
+ SectionWidget* ret = NULL;
+
// Drop on outer area
if (!targetSection)
{
switch (area)
{
case TopDropArea:
- dropContentOuterHelper(this, _mainLayout, data, Qt::Vertical, false);
+ ret = dropContentOuterHelper(this, _mainLayout, data, Qt::Vertical, false);
break;
case RightDropArea:
- dropContentOuterHelper(this, _mainLayout, data, Qt::Horizontal, true);
+ ret = dropContentOuterHelper(this, _mainLayout, data, Qt::Horizontal, true);
break;
case BottomDropArea:
- dropContentOuterHelper(this, _mainLayout, data, Qt::Vertical, true);
+ ret = dropContentOuterHelper(this, _mainLayout, data, Qt::Vertical, true);
break;
case LeftDropArea:
- dropContentOuterHelper(this, _mainLayout, data, Qt::Horizontal, false);
+ ret = dropContentOuterHelper(this, _mainLayout, data, Qt::Horizontal, false);
break;
default:
- return;
+ return NULL;
}
- return;
+ return NULL;
}
QSplitter* targetSectionSplitter = findParentSplitter(targetSection);
@@ -147,6 +246,7 @@ void ContainerWidget::dropContent(const InternalContentData& data, SectionWidget
s->addWidget(targetSection);
targetSectionSplitter->insertWidget(index, s);
}
+ ret = sw;
break;
}
case RightDropArea:
@@ -166,6 +266,7 @@ void ContainerWidget::dropContent(const InternalContentData& data, SectionWidget
s->addWidget(sw);
targetSectionSplitter->insertWidget(index, s);
}
+ ret = sw;
break;
}
case BottomDropArea:
@@ -185,6 +286,7 @@ void ContainerWidget::dropContent(const InternalContentData& data, SectionWidget
s->addWidget(sw);
targetSectionSplitter->insertWidget(index, s);
}
+ ret = sw;
break;
}
case LeftDropArea:
@@ -204,16 +306,19 @@ void ContainerWidget::dropContent(const InternalContentData& data, SectionWidget
targetSectionSplitter->insertWidget(index, s);
s->addWidget(targetSection);
}
+ ret = sw;
break;
}
case CenterDropArea:
{
- targetSection->addContent(data, true);
+ targetSection->addContent(data, autoActive);
+ ret = targetSection;
break;
}
default:
break;
}
+ return ret;
}
void ContainerWidget::addSection(SectionWidget* section)
@@ -232,22 +337,6 @@ void ContainerWidget::addSection(SectionWidget* section)
_splitter->addWidget(section);
}
-void ContainerWidget::splitSections(SectionWidget* s1, SectionWidget* s2, Qt::Orientation orientation)
-{
- addSection(s1);
- addSection(s2);
-
- QSplitter* currentSplitter = findParentSplitter(s1);
- if (currentSplitter)
- {
- const int index = currentSplitter->indexOf(s1);
- QSplitter* splitter = newSplitter(orientation, this);
- splitter->addWidget(s1);
- splitter->addWidget(s2);
- currentSplitter->insertWidget(index, splitter);
- }
-}
-
SectionWidget* ContainerWidget::sectionAt(const QPoint& pos) const
{
const QPoint gpos = mapToGlobal(pos);
@@ -307,6 +396,17 @@ QByteArray ContainerWidget::saveState() const
continue;
saveGeometryWalk(out, li->widget());
}
+
+ // Save state of FloatingWidgets
+ out << _floatingWidgets.count();
+ for (int i = 0; i < _floatingWidgets.count(); ++i)
+ {
+ FloatingWidget* fw = _floatingWidgets.at(i);
+ out << fw->content()->uniqueName();
+ out << fw->isVisible();
+ out << fw->saveGeometry();
+ }
+
return ba;
}
@@ -328,6 +428,7 @@ bool ContainerWidget::restoreState(const QByteArray& data)
QList currentSections = _sections;
_sections.clear();
+ // Restore splitters and section widgets
const bool success = restoreGeometryWalk(in, NULL);
if (success)
{
@@ -336,47 +437,30 @@ bool ContainerWidget::restoreState(const QByteArray& data)
delete old;
qDeleteAll(currentSections);
}
+
+ // Restore floating widgets
+ int fwCount = 0;
+ in >> fwCount;
+ for (int i = 0; i < fwCount; ++i)
+ {
+ QString uname;
+ bool visible = false;
+ QRect geom;
+ in >> uname >> visible >> geom;
+
+ SectionContent::RefPtr sc = SectionContent::LookupMapByName.value(uname).toStrongRef();
+ if (!sc)
+ {
+ qWarning() << "Can not find floating widget section-content" << uname;
+ continue;
+ }
+
+// FloatingWidget* fw = new FloatingWidget(this, sc,)
+ }
+
return success;
}
-QMenu* ContainerWidget::createContextMenu() const
-{
- QMenu* m = new QMenu(const_cast(this));
-
- // Contents of SectionWidgets
- for (int i = 0; i < _sections.size(); ++i)
- {
- SectionWidget* sw = _sections.at(i);
- QList contents = sw->contents();
- foreach (const SectionContent::RefPtr& c, contents)
- {
- m->addAction(QIcon(), QString("Content %1").arg(c->uid()));
- }
- }
-
- // Contents of FloatingWidgets
- if (_floatingWidgets.size())
- {
- if (m->actions().size())
- m->addSeparator();
- for (int i = 0; i < _floatingWidgets.size(); ++i)
- {
- FloatingWidget* fw = _floatingWidgets.at(i);
- SectionContent::RefPtr c = fw->content();
- QAction* a = m->addAction(QIcon(), QString("Floating %1").arg(c->uid()));
- a->setCheckable(true);
- a->setChecked(fw->isVisible());
-#if QT_VERSION >= 0x050000
- QObject::connect(a, &QAction::toggled, fw, &FloatingWidget::setVisible);
-#else
- QObject::connect(a, SIGNAL(toggled(bool)), fw, SLOT(setVisible(bool)));
-#endif
- }
- }
-
- return m;
-}
-
void ContainerWidget::saveGeometryWalk(QDataStream& out, QWidget* widget) const
{
QSplitter* sp = NULL;
@@ -448,7 +532,7 @@ bool ContainerWidget::restoreGeometryWalk(QDataStream& in, QSplitter* currentSpl
in >> currentIndex >> count;
SectionWidget* sw = new SectionWidget(this);
-// sw->setGeometry(geom);
+ // sw->setGeometry(geom);
for (int i = 0; i < count; ++i)
{
QString name;
@@ -469,4 +553,32 @@ bool ContainerWidget::restoreGeometryWalk(QDataStream& in, QSplitter* currentSpl
return true;
}
+bool ContainerWidget::takeContent(const SectionContent::RefPtr& sc, InternalContentData& data)
+{
+ // Search in sections
+ bool found = false;
+ for (int i = 0; i < _sections.count() && !found; ++i)
+ {
+ found = _sections.at(i)->take(sc->uid(), data);
+ }
+
+ // Search in floating widgets
+ for (int i = 0; i < _floatingWidgets.count() && !found; ++i)
+ {
+ found = _floatingWidgets.at(i)->content()->uid() == sc->uid();
+ _floatingWidgets.at(i)->takeContent(data);
+ }
+
+ return found;
+}
+
+void ContainerWidget::onActionToggleSectionContentVisibility(bool visible)
+{
+ QAction* a = qobject_cast(sender());
+ if (!a)
+ return;
+ const int uid = a->property("uid").toInt();
+ qDebug() << "Change visibility of" << uid << visible;
+}
+
ADS_NAMESPACE_END
diff --git a/AdvancedDockingSystem/src/FloatingWidget.cpp b/AdvancedDockingSystem/src/FloatingWidget.cpp
index cc7d69f..8ad0466 100644
--- a/AdvancedDockingSystem/src/FloatingWidget.cpp
+++ b/AdvancedDockingSystem/src/FloatingWidget.cpp
@@ -22,13 +22,13 @@ FloatingWidget::FloatingWidget(ContainerWidget* container, SectionContent::RefPt
_titleWidget(titleWidget),
_contentWidget(contentWidget)
{
- QBoxLayout* l = new QBoxLayout(QBoxLayout::TopToBottom, this);
+ QBoxLayout* l = new QBoxLayout(QBoxLayout::TopToBottom);
l->setContentsMargins(0, 0, 0, 0);
l->setSpacing(0);
setLayout(l);
// Title + Controls
- _titleLayout = new QBoxLayout(QBoxLayout::LeftToRight, this);
+ _titleLayout = new QBoxLayout(QBoxLayout::LeftToRight);
_titleLayout->addWidget(titleWidget, 1);
l->addLayout(_titleLayout, 0);
@@ -62,9 +62,8 @@ FloatingWidget::~FloatingWidget()
_container->_floatingWidgets.removeAll(this);
}
-InternalContentData FloatingWidget::takeContent()
+bool FloatingWidget::takeContent(InternalContentData& data)
{
- InternalContentData data;
data.content = _content;
data.titleWidget = _titleWidget;
data.contentWidget = _contentWidget;
@@ -75,11 +74,7 @@ InternalContentData FloatingWidget::takeContent()
layout()->removeWidget(_contentWidget);
_contentWidget = NULL;
- return data;
-}
-
-void FloatingWidget::closeEvent(QCloseEvent*)
-{
+ return true;
}
ADS_NAMESPACE_END
diff --git a/AdvancedDockingSystem/src/SectionTitleWidget.cpp b/AdvancedDockingSystem/src/SectionTitleWidget.cpp
index 104798f..ab2b5b3 100644
--- a/AdvancedDockingSystem/src/SectionTitleWidget.cpp
+++ b/AdvancedDockingSystem/src/SectionTitleWidget.cpp
@@ -83,14 +83,15 @@ void SectionTitleWidget::mouseReleaseEvent(QMouseEvent* ev)
if (loc != InvalidDropArea)
{
#if !defined(ADS_ANIMATIONS_ENABLED)
- InternalContentData data = _fw->takeContent();
+ InternalContentData data;
+ _fw->takeContent(data);
_fw->deleteLater();
#if QT_VERSION >= 0x050000
_fw.clear();
#else
_fw = 0;
#endif
- cw->dropContent(data, sw, loc);
+ cw->dropContent(data, sw, loc, true);
#else
QPropertyAnimation* moveAnim = new QPropertyAnimation(_fw, "pos", this);
moveAnim->setStartValue(_fw->pos());
@@ -132,14 +133,15 @@ void SectionTitleWidget::mouseReleaseEvent(QMouseEvent* ev)
if (dropArea != DropArea::InvalidDropArea)
{
#if !defined(ADS_ANIMATIONS_ENABLED)
- InternalContentData data = _fw->takeContent();
+ InternalContentData data;
+ _fw->takeContent(data);
_fw->deleteLater();
#if QT_VERSION >= 0x050000
_fw.clear();
#else
_fw = 0;
#endif
- cw->dropContent(data, NULL, dropArea);
+ cw->dropContent(data, NULL, dropArea, true);
#else
#endif
}
@@ -224,7 +226,12 @@ void SectionTitleWidget::mouseMoveEvent(QMouseEvent* ev)
&& !section->titleAreaGeometry().contains(section->mapFromGlobal(ev->globalPos())))
{
// Create floating widget.
- InternalContentData data = section->take(_content->uid(), false);
+ InternalContentData data;
+ if (!section->take(_content->uid(), data))
+ {
+ qWarning() << "THIS SHOULD NOT HAPPEN!!" << _content->uid() << _content->uniqueName();
+ return;
+ }
_fw = new FloatingWidget(cw, data.content, data.titleWidget, data.contentWidget, cw);
_fw->resize(section->size());
diff --git a/AdvancedDockingSystem/src/SectionWidget.cpp b/AdvancedDockingSystem/src/SectionWidget.cpp
index 15354e6..de6dbe1 100644
--- a/AdvancedDockingSystem/src/SectionWidget.cpp
+++ b/AdvancedDockingSystem/src/SectionWidget.cpp
@@ -145,10 +145,8 @@ void SectionWidget::addContent(const InternalContentData& data, bool autoActivat
// take removes a widget from the SectionWidget but does not delete
// the used SectionTitle- and SectionContent-Widget. Instead it returns
// these objects.
-InternalContentData SectionWidget::take(int uid, bool del)
+bool SectionWidget::take(int uid, InternalContentData& data)
{
- InternalContentData data;
-
// Find SectionContent.
SectionContent::RefPtr sc;
int index = -1;
@@ -160,6 +158,8 @@ InternalContentData SectionWidget::take(int uid, bool del)
sc = _contents.takeAt(i);
break;
}
+ if (!sc)
+ return false;
// Title wrapper widget (TAB)
SectionTitleWidget* title = _sectionTitles.takeAt(index);
@@ -167,8 +167,8 @@ InternalContentData SectionWidget::take(int uid, bool del)
{
_tabsLayout->removeWidget(title);
title->disconnect(this);
- if (del)
- title->deleteLater();
+// if (del)
+// title->deleteLater();
}
// Content wrapper widget (CONTENT)
@@ -177,8 +177,8 @@ InternalContentData SectionWidget::take(int uid, bool del)
{
_contentsLayout->removeWidget(content);
content->disconnect(this);
- if (del)
- content->deleteLater();
+// if (del)
+// content->deleteLater();
}
// Select the previous tab as activeTab.
@@ -193,7 +193,7 @@ InternalContentData SectionWidget::take(int uid, bool del)
data.content = sc;
data.titleWidget = title;
data.contentWidget = content;
- return data;
+ return !data.content.isNull();
}
int SectionWidget::indexOfContent(SectionContent::RefPtr c) const
diff --git a/AdvancedDockingSystemDemo/src/mainwindow.cpp b/AdvancedDockingSystemDemo/src/mainwindow.cpp
index 2842271..03ae029 100644
--- a/AdvancedDockingSystemDemo/src/mainwindow.cpp
+++ b/AdvancedDockingSystemDemo/src/mainwindow.cpp
@@ -46,9 +46,9 @@ static ADS_NS::SectionContent::RefPtr createCalendarSC()
static ADS_NS::SectionContent::RefPtr createFileSystemTreeSC()
{
QTreeView* w = new QTreeView();
-// QFileSystemModel* m = new QFileSystemModel(w);
-// m->setRootPath(QDir::currentPath());
-// w->setModel(m);
+ // QFileSystemModel* m = new QFileSystemModel(w);
+ // m->setRootPath(QDir::currentPath());
+ // w->setModel(m);
const int index = ++CONTENT_COUNT;
return ADS_NS::SectionContent::newSectionContent(new IconTitleWidget(QIcon(), QString("Filesystem %1").arg(index)), w, QString("uname-%1").arg(index));
@@ -91,31 +91,47 @@ MainWindow::MainWindow(QWidget *parent) :
QObject::connect(ui->actionAddSectionContent, SIGNAL(triggered(bool)), this, SLOT(onActionAddSectionContentTriggered()));
#endif
- // CREATE SOME TESTING DOCKS
_container = new ADS_NS::ContainerWidget();
_container->setOrientation(Qt::Vertical);
setCentralWidget(_container);
- ADS_NS::SectionWidget* section = NULL;
+ // Test #1: Use low-level API
+ // if (true)
+ // {
+ // ADS_NS::SectionWidget* section = NULL;
- section = new ADS_NS::SectionWidget(_container);
- section->addContent(createLongTextLabelSC());
- _container->addSection(section);
+ // section = new ADS_NS::SectionWidget(_container);
+ // section->addContent(createLongTextLabelSC());
+ // _container->addSection(section);
- section = new ADS_NS::SectionWidget(_container);
- section->addContent(createCalendarSC());
- _container->addSection(section);
+ // section = new ADS_NS::SectionWidget(_container);
+ // section->addContent(createCalendarSC());
+ // _container->addSection(section);
- section = new ADS_NS::SectionWidget(_container);
- section->addContent(createFileSystemTreeSC());
- _container->addSection(section);
+ // section = new ADS_NS::SectionWidget(_container);
+ // section->addContent(createFileSystemTreeSC());
+ // _container->addSection(section);
- section = new ADS_NS::SectionWidget(_container);
- section->addContent(createCalendarSC());
- _container->addSection(section);
+ // section = new ADS_NS::SectionWidget(_container);
+ // section->addContent(createCalendarSC());
+ // _container->addSection(section);
+ // }
- restoreGeometry(loadDataHelper("MainWindow"));
- _container->restoreState(loadDataHelper("ContainerWidget"));
+ // Test #2: Use high-level public API
+ if (true)
+ {
+ ADS_NS::SectionWidget* sw1 = _container->addSectionContent(createLongTextLabelSC());
+ ADS_NS::SectionWidget* sw2 = _container->addSectionContent(createCalendarSC(), sw1, ADS_NS::BottomDropArea);
+ ADS_NS::SectionWidget* sw3 = _container->addSectionContent(createFileSystemTreeSC(), NULL, ADS_NS::RightDropArea);
+ ADS_NS::SectionWidget* sw4 = _container->addSectionContent(createCalendarSC());
+ }
+
+ // Default window geometry
+ resize(800, 600);
+
+ // Restore window geometry and ContainerWidget state from last session
+ // restoreGeometry(loadDataHelper("MainWindow"));
+ // _container->restoreState(loadDataHelper("ContainerWidget"));
}
MainWindow::~MainWindow()
@@ -126,14 +142,6 @@ MainWindow::~MainWindow()
void MainWindow::onActionAddSectionContentTriggered()
{
return;
-
-// auto titleWidget = new IconTitleWidget(QIcon(), QString("Title"));
-// auto contentWidget = createRandomWidget(-1, -1);
-// auto content = ADS_NS::SectionContent::newSectionContent(titleWidget, contentWidget);
-
-// auto section = new ADS_NS::SectionWidget(_container);
-// _container->addSection(section);
-// section->addContent(content);
}
void MainWindow::contextMenuEvent(QContextMenuEvent* e)