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

Generated on Fri Sep 10 2021 for the C++ Web Toolkit (Wt) by doxygen 1.9.2