[escher] Add a booleen in stack controller to decide whether or not display the first stack header

Change-Id: I13bdb3c70da9d1ef16f192439d6daf6a00438ad4
This commit is contained in:
Émilie Feral
2016-09-16 11:41:36 +02:00
parent 2fed1c6a16
commit 46c5353116
3 changed files with 14 additions and 10 deletions

View File

@@ -4,7 +4,7 @@ Probability::App::App() :
::App(),
m_lawController(LawController(nullptr)),
m_parametersController(ParametersController(nullptr)),
m_stackViewController(this, &m_lawController)
m_stackViewController(this, &m_lawController, true)
{
}

View File

@@ -8,7 +8,7 @@ constexpr uint8_t kMaxNumberOfStacks = 4;
class StackViewController : public ViewController {
public:
StackViewController(Responder * parentResponder, ViewController * rootViewController);
StackViewController(Responder * parentResponder, ViewController * rootViewController, bool displayFirstStackHeader = false);
/* Push creates a new StackView and adds it */
void push(ViewController * vc);
@@ -22,7 +22,7 @@ public:
private:
class ControllerView : public View {
public:
ControllerView();
ControllerView(bool displayFirstStackHeader);
void setContentView(View * view);
void pushStack(const char * name);
void popStack();
@@ -38,6 +38,7 @@ private:
StackView m_stackViews[kMaxNumberOfStacks];
View * m_contentView;
int8_t m_numberOfStacks;
bool m_displayFirstStackHeader;
};
ControllerView m_view;

View File

@@ -4,10 +4,11 @@ extern "C" {
#include <escher/stack_view_controller.h>
#include <escher/app.h>
StackViewController::ControllerView::ControllerView() :
StackViewController::ControllerView::ControllerView(bool displayFirstStackHeader) :
View(),
m_contentView(nullptr),
m_numberOfStacks(0)
m_numberOfStacks(0),
m_displayFirstStackHeader(displayFirstStackHeader)
{
}
@@ -30,11 +31,12 @@ void StackViewController::ControllerView::popStack() {
void StackViewController::ControllerView::layoutSubviews() {
KDCoordinate stackHeight = 20;
KDCoordinate width = m_frame.width();
for (int i=1; i<m_numberOfStacks; i++) {
m_stackViews[i].setFrame(KDRect(0, stackHeight*(i-1), width, stackHeight));
int indexFirstHeader = m_displayFirstStackHeader ? 0 : 1;
for (int i=indexFirstHeader; i<m_numberOfStacks; i++) {
m_stackViews[i].setFrame(KDRect(0, stackHeight*(i-indexFirstHeader), width, stackHeight));
}
if (m_contentView) {
KDRect contentViewFrame = KDRect( 0, (m_numberOfStacks-1)*stackHeight,
KDRect contentViewFrame = KDRect( 0, (m_numberOfStacks-indexFirstHeader)*stackHeight,
width, m_frame.height() - m_numberOfStacks*stackHeight);
m_contentView->setFrame(contentViewFrame);
}
@@ -60,10 +62,11 @@ const char * StackViewController::ControllerView::className() const {
}
#endif
StackViewController::StackViewController(Responder * parentResponder, ViewController * rootViewController) :
StackViewController::StackViewController(Responder * parentResponder, ViewController * rootViewController, bool displayFirstStackHeader) :
ViewController(parentResponder),
m_numberOfChildren(0),
m_rootViewController(rootViewController)
m_rootViewController(rootViewController),
m_view(ControllerView(displayFirstStackHeader))
{
// push(rootViewController);
}