1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
/*
* Copyright (C) 2008 Emweb bvba, Kessel-Lo, Belgium.
*
* See the LICENSE file for terms of use.
*/
#include <Wt/WPanel>
#include "PanelList.h"
using namespace Wt;
PanelList::PanelList(WContainerWidget *parent)
: WContainerWidget(parent)
{ }
WPanel *PanelList::addWidget(const WString& text, WWidget *w)
{
WPanel *p = new WPanel();
p->setTitle(text);
p->setCentralWidget(w);
addPanel(p);
return p;
}
void PanelList::addPanel(WPanel *panel)
{
panel->setCollapsible(true);
panel->collapse();
panel->expandedSS().connect(SLOT(this, PanelList::onExpand));
WContainerWidget::addWidget(panel);
}
void PanelList::onExpand(bool notUndo)
{
WPanel *panel = dynamic_cast<WPanel *>(sender());
if (notUndo) {
wasExpanded_ = -1;
for (unsigned i = 0; i < children().size(); ++i) {
WPanel *p = dynamic_cast<WPanel *>(children()[i]);
if (p != panel) {
if (!p->isCollapsed())
wasExpanded_ = i;
p->collapse();
}
}
} else {
if (wasExpanded_ != -1) {
WPanel *p = dynamic_cast<WPanel *>(children()[wasExpanded_]);
p->expand();
}
}
}
|