[apps/sequence] Redesign list controller

Change-Id: If114a643b0f682e98076cf1ec9f4479b3dafdfa6
This commit is contained in:
Émilie Feral
2017-02-16 14:17:56 +01:00
parent f605963588
commit 51c33b0a5b
31 changed files with 419 additions and 740 deletions

View File

@@ -1,4 +1,6 @@
#include "sequence.h"
#include "../../poincare/src/layout/baseline_relative_layout.h"
#include "../../poincare/src/layout/string_layout.h"
#include <string.h>
using namespace Shared;
@@ -14,7 +16,10 @@ Sequence::Sequence(const char * text, KDColor color) :
m_firstInitialConditionExpression(nullptr),
m_secondInitialConditionExpression(nullptr),
m_firstInitialConditionLayout(nullptr),
m_secondInitialConditionLayout(nullptr)
m_secondInitialConditionLayout(nullptr),
m_definitionName(nullptr),
m_firstInitialConditionName(nullptr),
m_secondInitialConditionName(nullptr)
{
}
@@ -36,6 +41,18 @@ Sequence::~Sequence() {
delete m_secondInitialConditionExpression;
m_secondInitialConditionExpression = nullptr;
}
if (m_definitionName != nullptr) {
delete m_definitionName;
m_definitionName = nullptr;
}
if (m_firstInitialConditionName != nullptr) {
delete m_firstInitialConditionName;
m_firstInitialConditionName = nullptr;
}
if (m_secondInitialConditionName != nullptr) {
delete m_secondInitialConditionName;
m_secondInitialConditionName = nullptr;
}
}
const char * Sequence::firstInitialConditionText() {
@@ -52,6 +69,30 @@ Sequence::Type Sequence::type() {
void Sequence::setType(Type type) {
m_type = type;
if (m_definitionName != nullptr) {
delete m_definitionName;
m_definitionName = nullptr;
}
if (m_firstInitialConditionName != nullptr) {
delete m_firstInitialConditionName;
m_firstInitialConditionName = nullptr;
}
if (m_secondInitialConditionName != nullptr) {
delete m_secondInitialConditionName;
m_secondInitialConditionName = nullptr;
}
if (m_type == Type::Explicite) {
m_definitionName = new BaselineRelativeLayout(new StringLayout(name(), 1), new StringLayout("n", 1, KDText::FontSize::Small), BaselineRelativeLayout::Type::Subscript);
}
if (m_type == Type::SingleRecurrence) {
m_definitionName = new BaselineRelativeLayout(new StringLayout(name(), 1), new StringLayout("n+1", 3, KDText::FontSize::Small), BaselineRelativeLayout::Type::Subscript);
m_firstInitialConditionName = new BaselineRelativeLayout(new StringLayout(name(), 1), new StringLayout("0", 1, KDText::FontSize::Small), BaselineRelativeLayout::Type::Subscript);
}
if (m_type == Type::DoubleRecurrence) {
m_definitionName = new BaselineRelativeLayout(new StringLayout(name(), 1), new StringLayout("n+2", 3, KDText::FontSize::Small), BaselineRelativeLayout::Type::Subscript);
m_firstInitialConditionName = new BaselineRelativeLayout(new StringLayout(name(), 1), new StringLayout("0", 1, KDText::FontSize::Small), BaselineRelativeLayout::Type::Subscript);
m_secondInitialConditionName = new BaselineRelativeLayout(new StringLayout(name(), 1), new StringLayout("1", 1, KDText::FontSize::Small), BaselineRelativeLayout::Type::Subscript);
}
}
Poincare::Expression * Sequence::firstInitialConditionExpression() {
@@ -104,4 +145,20 @@ char Sequence::symbol() const {
return 'n';
}
int Sequence::numberOfElements() {
return (int)m_type + 1;
}
Poincare::ExpressionLayout * Sequence::definitionName() {
return m_definitionName;
}
Poincare::ExpressionLayout * Sequence::firstInitialConditionName() {
return m_firstInitialConditionName;
}
Poincare::ExpressionLayout * Sequence::secondInitialConditionName() {
return m_secondInitialConditionName;
}
}