[apps/graph/list] Improve the drawRect of function cells

Change-Id: I2338151444e04f44e2b432ec8435ff63a2837fc9
This commit is contained in:
Émilie Feral
2016-09-23 14:03:05 +02:00
parent 4d4163f13b
commit 7efec4331d
5 changed files with 30 additions and 13 deletions

View File

@@ -3,6 +3,11 @@
#include <poincare.h>
#include <assert.h>
constexpr KDColor FunctionCell::k_evenLineBackgroundColor;
constexpr KDColor FunctionCell::k_oddLineBackgroundColor;
constexpr KDColor FunctionCell::k_selectedLineBackgroundColor;
constexpr KDColor FunctionCell::k_desactiveTextColor;
FunctionCell::FunctionCell() :
View(),
Responder(nullptr),
@@ -32,7 +37,7 @@ View * FunctionCell::subviewAtIndex(int index) {
}
void FunctionCell::layoutSubviews() {
m_functionNameView.setFrame(KDRect(0, 0, k_functionNameWidth, k_functionCellHeight));
m_functionExpressionView.setFrame(KDRect(k_functionNameWidth, 0, k_functionExpressionWidth, k_functionCellHeight));
m_functionExpressionView.setFrame(KDRect(k_functionNameWidth, 0, bounds().width()-k_functionNameWidth, k_functionCellHeight));
}

View File

@@ -17,9 +17,13 @@ public:
void didBecomeFirstResponder() override;
bool handleEvent(Ion::Events::Event event) override;
static constexpr KDColor k_evenLineBackgroundColor = KDColor(0xF9F9F9);
static constexpr KDColor k_oddLineBackgroundColor = KDColor(0xEEEEF2);
static constexpr KDColor k_selectedLineBackgroundColor = KDColor(0x8582DB);
static constexpr KDColor k_desactiveTextColor = KDColor(0x646464);
private:
static constexpr KDCoordinate k_functionNameWidth = 40;
static constexpr KDCoordinate k_functionExpressionWidth = 100;
static constexpr KDCoordinate k_functionCellHeight = 50;
int numberOfSubviews() const override;
View * subviewAtIndex(int index) override;

View File

@@ -10,15 +10,16 @@ FunctionExpressionView::FunctionExpressionView(Responder * parentResponder) :
}
void FunctionExpressionView::drawRect(KDContext * ctx, KDRect rect) const {
// Select the background color according to the even line and the cursor selection
bool evenLine = isEven();
KDColor background = evenLine ? KDColor(0xEEEEEE) : KDColor(0x777777);
KDColor background = evenLine ? FunctionCell::k_evenLineBackgroundColor : FunctionCell::k_oddLineBackgroundColor;
background = m_focused ? FunctionCell::k_selectedLineBackgroundColor : background;
ctx->fillRect(rect, background);
// Select text color according to the state of the function
bool active = function()->isActive();
KDColor text = active ? KDColorGreen : KDColorRed;
KDColor textBackground = m_focused ? KDColorWhite : KDColorBlack;
KDColor text = active ? KDColorBlack : FunctionCell::k_desactiveTextColor;
Graph::Function * function = FunctionExpressionView::function();
ctx->drawString(function->text(), KDPointZero, text, textBackground);
ctx->drawString(function->text(), KDPointZero, text, background);
// m_function->layout()->draw(ctx, KDPointZero);
}

View File

@@ -11,15 +11,21 @@ FunctionNameView::FunctionNameView(Responder * parentResponder, Invocation invoc
}
void FunctionNameView::drawRect(KDContext * ctx, KDRect rect) const {
KDCoordinate width = bounds().width();
KDCoordinate height = bounds().height();
// First color the color indicator
KDColor functionColor = function()->color();
ctx->fillRect(KDRect(0, 0, k_colorIndicatorThickness, height), functionColor);
// Select the background color according to the even line and the cursor selection
bool evenLine = isEven();
KDColor background = evenLine ? KDColor(0xEEEEEE) : KDColor(0x777777);
ctx->fillRect(rect, background);
KDColor background = evenLine ? FunctionCell::k_evenLineBackgroundColor : FunctionCell::k_oddLineBackgroundColor;
background = m_focused ? FunctionCell::k_selectedLineBackgroundColor : background;
ctx->fillRect(KDRect(4, 0, width-4, height), background);
// Select text color according to the state of the function
bool active = function()->isActive();
KDColor text = active ? KDColorGreen : KDColorRed;
KDColor textBackground = m_focused ? KDColorWhite : KDColorBlack;
KDColor text = active ? KDColorBlack : FunctionCell::k_desactiveTextColor;
Graph::Function * function = FunctionNameView::function();
ctx->drawString(function->name(), KDPointZero, text, textBackground);
ctx->drawString(function->name(), KDPoint(4, 0), text, background);
// m_function->layout()->draw(ctx, KDPointZero);
}

View File

@@ -18,6 +18,7 @@ public:
void didResignFirstResponder() override;
bool handleEvent(Ion::Events::Event event) override;
private:
constexpr static int k_colorIndicatorThickness = 4;
bool m_focused;
Invocation m_invocation;
};