mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[geometry] Not working third menu
This commit is contained in:
@@ -3,9 +3,10 @@ app_headers += apps/geometry/app.h
|
||||
|
||||
app_geometry_src = $(addprefix apps/geometry/,\
|
||||
app.cpp \
|
||||
figures_controller.cpp \
|
||||
definition_type_controller.cpp \
|
||||
figure_type_controller.cpp \
|
||||
list/figures_controller.cpp \
|
||||
list/definition_type_controller.cpp \
|
||||
list/figure_type_controller.cpp \
|
||||
list/figure_parameters_controller.cpp \
|
||||
)
|
||||
|
||||
apps_src += $(app_geometry_src)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define GEOMETRY_H
|
||||
|
||||
#include <escher.h>
|
||||
#include "figures_controller.h"
|
||||
#include "list/figures_controller.h"
|
||||
|
||||
namespace Geometry
|
||||
{
|
||||
|
||||
@@ -5,3 +5,4 @@ Point = "Point"
|
||||
Circle = "Cercle"
|
||||
FigureType = "Type de figure"
|
||||
DefinitionType = "Définition de la figure"
|
||||
ParametersChoice = "Choix des paramètres"
|
||||
|
||||
@@ -5,3 +5,4 @@ Point = "Point"
|
||||
Circle = "Cercle"
|
||||
FigureType = "Type de figure"
|
||||
DefinitionType = "Définition de la figure"
|
||||
ParametersChoice = "Choix des paramètres"
|
||||
|
||||
@@ -5,3 +5,4 @@ Point = "Point"
|
||||
Circle = "Cercle"
|
||||
FigureType = "Type de figure"
|
||||
DefinitionType = "Définition de la figure"
|
||||
ParametersChoice = "Choix des paramètres"
|
||||
|
||||
@@ -5,3 +5,4 @@ Point = "Point"
|
||||
Circle = "Cercle"
|
||||
FigureType = "Type de figure"
|
||||
DefinitionType = "Définition de la figure"
|
||||
ParametersChoice = "Choix des paramètres"
|
||||
|
||||
@@ -5,3 +5,4 @@ Point = "Point"
|
||||
Circle = "Cercle"
|
||||
FigureType = "Type de figure"
|
||||
DefinitionType = "Définition de la figure"
|
||||
ParametersChoice = "Choix des paramètres"
|
||||
|
||||
@@ -5,3 +5,4 @@ Point = "Point"
|
||||
Circle = "Cercle"
|
||||
FigureType = "Type de figure"
|
||||
DefinitionType = "Définition de la figure"
|
||||
ParametersChoice = "Choix des paramètres"
|
||||
|
||||
@@ -5,3 +5,4 @@ Point = "Point"
|
||||
Circle = "Cercle"
|
||||
FigureType = "Type de figure"
|
||||
DefinitionType = "Définition de la figure"
|
||||
ParametersChoice = "Choix des paramètres"
|
||||
|
||||
@@ -5,3 +5,4 @@ Point = "Point"
|
||||
Circle = "Cercle"
|
||||
FigureType = "Type de figure"
|
||||
DefinitionType = "Définition de la figure"
|
||||
ParametersChoice = "Choix des paramètres"
|
||||
|
||||
15
apps/geometry/figure_type.h
Normal file
15
apps/geometry/figure_type.h
Normal file
@@ -0,0 +1,15 @@
|
||||
#ifndef GEOMETRY_FIGURE_TYPE_H
|
||||
#define GEOMETRY_FIGURE_TYPE_H
|
||||
|
||||
namespace Geometry {
|
||||
|
||||
enum class FigureType {
|
||||
None = 0, // Used to trigger assert in debug mode
|
||||
Number, // It's not a real figure type but we use it to build figures like points
|
||||
Point,
|
||||
Circle
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -2,26 +2,31 @@
|
||||
|
||||
namespace Geometry {
|
||||
|
||||
static I18n::Message sMessages[] = {
|
||||
static I18n::Message sPointDefinitionsMessages[] = {
|
||||
I18n::Message::QuentinGuidee,
|
||||
I18n::Message::JeanBaptisteBoric
|
||||
};
|
||||
|
||||
DefinitionTypeController::DefinitionTypeController(Responder * parentResponder) :
|
||||
static I18n::Message sCircleDefinitionsMessages[] = {
|
||||
I18n::Message::JoachimLeFournis,
|
||||
I18n::Message::MaximeFriess
|
||||
};
|
||||
|
||||
DefinitionTypeController::DefinitionTypeController(Responder * parentResponder, FigureParametersController * parametersController) :
|
||||
ViewController(parentResponder),
|
||||
m_selectableTableView(this)
|
||||
m_selectableTableView(this),
|
||||
m_messages(nullptr),
|
||||
m_figureType(FigureType::None),
|
||||
m_parametersController(parametersController)
|
||||
{
|
||||
for (int i = 0; i < k_numberOfCells; i ++) {
|
||||
m_cells[i].setMessageFont(KDFont::LargeFont);
|
||||
}
|
||||
m_messages = sMessages;
|
||||
}
|
||||
|
||||
const char * DefinitionTypeController::title() {
|
||||
return I18n::translate(I18n::Message::DefinitionType);
|
||||
}
|
||||
|
||||
void DefinitionTypeController::viewWillAppear() {
|
||||
assert(m_figureType != FigureType::None && m_messages != nullptr);
|
||||
m_selectableTableView.reloadVisibleCells(); // We reload the cell of the table view to update their message
|
||||
selectRow(0);
|
||||
}
|
||||
|
||||
@@ -32,12 +37,12 @@ void DefinitionTypeController::didBecomeFirstResponder() {
|
||||
|
||||
bool DefinitionTypeController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) {
|
||||
StackViewController * stack = static_cast<StackViewController *>(parentResponder()->parentResponder()->parentResponder());
|
||||
stack->pop();
|
||||
StackViewController * stack = static_cast<StackViewController *>(parentResponder());
|
||||
stack->push(m_parametersController);
|
||||
return true;
|
||||
}
|
||||
if (event == Ion::Events::Back) {
|
||||
StackViewController * stack = static_cast<StackViewController *>(parentResponder()->parentResponder()->parentResponder());
|
||||
StackViewController * stack = static_cast<StackViewController *>(parentResponder());
|
||||
stack->pop();
|
||||
return true;
|
||||
}
|
||||
@@ -55,4 +60,19 @@ void DefinitionTypeController::willDisplayCellForIndex(HighlightCell * cell, int
|
||||
myCell->setMessage(m_messages[index]);
|
||||
}
|
||||
|
||||
void DefinitionTypeController::setFigureType(FigureType figureType) {
|
||||
m_figureType = figureType;
|
||||
switch (m_figureType) {
|
||||
case FigureType::Point:
|
||||
m_messages = sPointDefinitionsMessages;
|
||||
break;
|
||||
case FigureType::Circle:
|
||||
m_messages = sCircleDefinitionsMessages;
|
||||
break;
|
||||
default:
|
||||
assert(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,6 +3,8 @@
|
||||
|
||||
#include <escher.h>
|
||||
#include "apps/i18n.h"
|
||||
#include "../figure_type.h"
|
||||
#include "figure_parameters_controller.h"
|
||||
|
||||
namespace Geometry {
|
||||
/**
|
||||
@@ -10,28 +12,39 @@ namespace Geometry {
|
||||
*/
|
||||
class DefinitionTypeController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource {
|
||||
public:
|
||||
DefinitionTypeController(Responder * parentResponder/*, FigureDefinitionController * definitionController*/);
|
||||
DefinitionTypeController(Responder * parentResponder, FigureParametersController * parametersController);
|
||||
|
||||
/* ViewController */
|
||||
View * view() override { return &m_selectableTableView; }
|
||||
const char * title() override;
|
||||
|
||||
// We want to avoid using half of the screen just for titles
|
||||
virtual DisplayParameter displayParameter() override { return DisplayParameter::DoNotShowOwnTitle; }
|
||||
const char * title() override { return I18n::translate(I18n::Message::DefinitionType); }
|
||||
|
||||
/* Responder */
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
|
||||
/* ViewController */
|
||||
void didBecomeFirstResponder() override;
|
||||
void viewWillAppear() override;
|
||||
TELEMETRY_ID("FigureType");
|
||||
|
||||
/* SelectableTableViewDataSource */
|
||||
int numberOfRows() const override { return 2; }
|
||||
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
|
||||
KDCoordinate cellHeight() override { return k_cellHeight; }
|
||||
HighlightCell * reusableCell(int index) override;
|
||||
int reusableCellCount() const override { return k_numberOfCells; }
|
||||
|
||||
/* Customs methods */
|
||||
void setFigureType(FigureType type);
|
||||
private:
|
||||
constexpr static KDCoordinate k_cellHeight = Metric::ParameterCellHeight;
|
||||
constexpr static int k_numberOfCells = 2;
|
||||
MessageTableCellWithChevron m_cells[k_numberOfCells];
|
||||
SelectableTableView m_selectableTableView;
|
||||
I18n::Message * m_messages;
|
||||
/*FigureDefinitionController * m_FigureDefinitionController;*/
|
||||
FigureType m_figureType;
|
||||
FigureParametersController * m_parametersController;
|
||||
};
|
||||
|
||||
}
|
||||
73
apps/geometry/list/figure_parameters_controller.cpp
Normal file
73
apps/geometry/list/figure_parameters_controller.cpp
Normal file
@@ -0,0 +1,73 @@
|
||||
#include "figure_parameters_controller.h"
|
||||
#include "../app.h"
|
||||
|
||||
namespace Geometry {
|
||||
FigureParametersController::FigureParametersController(Responder * parentResponder):
|
||||
ViewController(parentResponder),
|
||||
m_selectableTableView(this)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void FigureParametersController::didBecomeFirstResponder() {
|
||||
Container::activeApp()->setFirstResponder(&m_selectableTableView);
|
||||
}
|
||||
|
||||
void FigureParametersController::viewWillAppear() {
|
||||
selectRow(0);
|
||||
}
|
||||
|
||||
bool FigureParametersController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK || event == Ion::Events::EXE) {
|
||||
StackViewController * stack = static_cast<StackViewController *>(parentResponder());
|
||||
stack->pop();
|
||||
stack->pop();
|
||||
stack->pop();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/* ListViewDataSource */
|
||||
int FigureParametersController::typeAtLocation(int i, int j) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int FigureParametersController::reusableCellCount(int type) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
HighlightCell * FigureParametersController::reusableCell(int index, int type) {
|
||||
return &m_choicesCells[index];
|
||||
}
|
||||
|
||||
int FigureParametersController::numberOfRows() const {
|
||||
return 2;
|
||||
}
|
||||
KDCoordinate FigureParametersController::rowHeight(int j) {
|
||||
return Metric::ParameterCellHeight;
|
||||
}
|
||||
|
||||
KDCoordinate FigureParametersController::cumulatedHeightFromIndex(int j) {
|
||||
return Metric::ParameterCellHeight*j;
|
||||
}
|
||||
|
||||
int FigureParametersController::indexFromCumulatedHeight(KDCoordinate offsetY) {
|
||||
return (offsetY - 1) / Metric::ParameterCellHeight;
|
||||
}
|
||||
|
||||
void FigureParametersController::willDisplayCellForIndex(HighlightCell * cell, int index) {
|
||||
|
||||
}
|
||||
|
||||
/*bool FigureParametersController::textFieldShouldFinishEditing(TextField * textField, Ion::Events::Event event) {
|
||||
return (event == Ion::Events::Up);
|
||||
/*return (event == Ion::Events::Down && selectedRow() < numberOfRows()-1)
|
||||
|| (event == Ion::Events::Up && selectedRow() > 0)
|
||||
|| TextFieldDelegate::textFieldShouldFinishEditing(textField, event);*//*
|
||||
}
|
||||
bool FigureParametersController::textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) {
|
||||
return true;
|
||||
}*/
|
||||
|
||||
}
|
||||
54
apps/geometry/list/figure_parameters_controller.h
Normal file
54
apps/geometry/list/figure_parameters_controller.h
Normal file
@@ -0,0 +1,54 @@
|
||||
#ifndef GEOMETRY_FIGURE_PARAMETERS_CONTROLLER_H
|
||||
#define GEOMETRY_FIGURE_PARAMETERS_CONTROLLER_H
|
||||
|
||||
#include <escher.h>
|
||||
#include "apps/i18n.h"
|
||||
#include "message_table_cell_with_selector.h"
|
||||
|
||||
|
||||
namespace Geometry {
|
||||
/**
|
||||
* \brief Controller returnig the parameter choosen by the user to define the figure
|
||||
*/
|
||||
class FigureParametersController : public ViewController, public ListViewDataSource, public SelectableTableViewDataSource {
|
||||
public:
|
||||
FigureParametersController(Responder * parentResponder);
|
||||
|
||||
/* ViewController */
|
||||
const char * title() override { return I18n::translate(I18n::Message::ParametersChoice); }
|
||||
// We want to avoid using half of the screen just for titles
|
||||
virtual DisplayParameter displayParameter() override { return DisplayParameter::DoNotShowOwnTitle; }
|
||||
View * view() override { return &m_selectableTableView; };
|
||||
|
||||
/* Responder */
|
||||
void didBecomeFirstResponder() override;
|
||||
void viewWillAppear() override;
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
|
||||
/* ListViewDataSource */
|
||||
int typeAtLocation(int i, int j) override; // TO IMPLEMENT
|
||||
int reusableCellCount(int type) override; // TO IMPLEMENT
|
||||
HighlightCell * reusableCell(int index, int type) override; // TO IMPLEMENT
|
||||
int numberOfRows() const override;
|
||||
KDCoordinate rowHeight(int j) override;
|
||||
KDCoordinate cumulatedHeightFromIndex(int j) override;
|
||||
int indexFromCumulatedHeight(KDCoordinate offsetY) override;
|
||||
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
|
||||
|
||||
|
||||
/* InputEventHandlerDelegate */
|
||||
//bool textFieldShouldFinishEditing(TextField * textField, Ion::Events::Event event) override;
|
||||
//bool textFieldDidFinishEditing(TextField * textField, const char * text, Ion::Events::Event event) override;
|
||||
|
||||
private:
|
||||
SelectableTableView m_selectableTableView;
|
||||
constexpr static int k_textCells = 2;
|
||||
constexpr static int k_choiceCells = 3;
|
||||
MessageTableCellWithEditableText m_textCells[k_textCells];
|
||||
MessageTableCellWithSelector m_choicesCells[k_choiceCells];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -3,6 +3,11 @@
|
||||
|
||||
namespace Geometry {
|
||||
|
||||
static FigureType sTypes[] = {
|
||||
FigureType::Point,
|
||||
FigureType::Circle
|
||||
};
|
||||
|
||||
static I18n::Message sMessages[] = {
|
||||
I18n::Message::Point,
|
||||
I18n::Message::Circle
|
||||
@@ -11,16 +16,12 @@ static I18n::Message sMessages[] = {
|
||||
FigureTypeController::FigureTypeController(Responder * parentResponder, DefinitionTypeController * definitionTypeController) :
|
||||
ViewController(parentResponder),
|
||||
m_selectableTableView(this),
|
||||
m_definitionTypeController(definitionTypeController)
|
||||
m_definitionTypeController(definitionTypeController),
|
||||
m_messages(sMessages)
|
||||
{
|
||||
for (int i = 0; i < k_numberOfCells; i ++) {
|
||||
m_cells[i].setMessageFont(KDFont::LargeFont);
|
||||
}
|
||||
m_messages = sMessages;
|
||||
}
|
||||
|
||||
const char * FigureTypeController::title() {
|
||||
return I18n::translate(I18n::Message::FigureType);
|
||||
}
|
||||
|
||||
void FigureTypeController::viewWillAppear() {
|
||||
@@ -35,6 +36,7 @@ void FigureTypeController::didBecomeFirstResponder() {
|
||||
bool FigureTypeController::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK || event == Ion::Events::EXE || event == Ion::Events::Right) {
|
||||
StackViewController * stack = static_cast<StackViewController *>(parentResponder());
|
||||
m_definitionTypeController->setFigureType(sTypes[selectedRow()]);
|
||||
stack->push(m_definitionTypeController);
|
||||
return true;
|
||||
}
|
||||
@@ -15,12 +15,19 @@ public:
|
||||
|
||||
/* ViewController */
|
||||
View * view() override { return &m_selectableTableView; }
|
||||
const char * title() override;
|
||||
// We want to avoid using half of the screen just for titles
|
||||
virtual DisplayParameter displayParameter() override { return DisplayParameter::DoNotShowOwnTitle; }
|
||||
const char * title() override { return I18n::translate(I18n::Message::FigureType); }
|
||||
|
||||
/* Responder */
|
||||
bool handleEvent(Ion::Events::Event event) override;
|
||||
void didBecomeFirstResponder() override;
|
||||
|
||||
/* ViewController */
|
||||
void viewWillAppear() override;
|
||||
TELEMETRY_ID("FigureType");
|
||||
|
||||
/* TableViewDataSource */
|
||||
int numberOfRows() const override { return 2; }
|
||||
void willDisplayCellForIndex(HighlightCell * cell, int index) override;
|
||||
KDCoordinate cellHeight() override { return k_cellHeight; }
|
||||
@@ -31,8 +38,8 @@ private:
|
||||
constexpr static int k_numberOfCells = 2;
|
||||
MessageTableCellWithChevron m_cells[k_numberOfCells];
|
||||
SelectableTableView m_selectableTableView;
|
||||
I18n::Message * m_messages;
|
||||
DefinitionTypeController * m_definitionTypeController;
|
||||
I18n::Message * m_messages;
|
||||
};
|
||||
|
||||
}
|
||||
@@ -10,7 +10,8 @@ FiguresController::FiguresController(Responder * parentResponder):
|
||||
m_addFigureCell(),
|
||||
m_emptyCell(),
|
||||
m_figureTypeController(this, &m_definitionTypeController),
|
||||
m_definitionTypeController(&m_figureTypeController)
|
||||
m_definitionTypeController(&m_figureTypeController, &m_parametersController),
|
||||
m_parametersController(&m_definitionTypeController)
|
||||
{
|
||||
m_addFigureCell.setMessage(I18n::Message::AddFigure);
|
||||
}
|
||||
@@ -6,7 +6,9 @@
|
||||
|
||||
namespace Geometry
|
||||
{
|
||||
|
||||
/**
|
||||
* \brief FiguresController is a controller to show the list of the figures
|
||||
*/
|
||||
class FiguresController : public ViewController, public SelectableTableViewDataSource, public SelectableTableViewDelegate, public TableViewDataSource {
|
||||
public:
|
||||
FiguresController(Responder * parentResponder);
|
||||
@@ -37,6 +39,7 @@ private:
|
||||
EvenOddCell m_emptyCell;
|
||||
FigureTypeController m_figureTypeController;
|
||||
DefinitionTypeController m_definitionTypeController;
|
||||
FigureParametersController m_parametersController;
|
||||
};
|
||||
|
||||
}
|
||||
22
apps/geometry/list/message_table_cell_with_selector.cpp
Normal file
22
apps/geometry/list/message_table_cell_with_selector.cpp
Normal file
@@ -0,0 +1,22 @@
|
||||
#include "message_table_cell_with_selector.h"
|
||||
|
||||
namespace Geometry {
|
||||
|
||||
MessageTableCellWithSelector::MessageTableCellWithSelector(ToolboxMessageTree * root, const KDFont * font) :
|
||||
Responder(nullptr),
|
||||
MessageTableCell((I18n::Message)0, font),
|
||||
m_objectsRoot(root),
|
||||
m_selectedMessage(nullptr)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
MessageTableCellWithSelector::handleEvent(Ion::Events::Event event) {
|
||||
if (event == Ion::Events::OK || event == Ion::Events::EXE) {
|
||||
//Container::activeApp()->displayModalViewController(m_toolbox, 0.f, 0.f)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
23
apps/geometry/list/message_table_cell_with_selector.h
Normal file
23
apps/geometry/list/message_table_cell_with_selector.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef ESHER_MESSAGE_TABLE_CELL_WITH_OBJECT_SELECTOR_H_
|
||||
#define ESHER_MESSAGE_TABLE_CELL_WITH_OBJECT_SELECTOR_H_
|
||||
|
||||
#include <escher/message_table_cell_with_buffer.h>
|
||||
#include <escher/toolbox_message_tree.h>
|
||||
#include "objects_controller.h"
|
||||
|
||||
namespace Geometry {
|
||||
|
||||
class MessageTableCellWithSelector : public Responder, public MessageTableCell {
|
||||
public:
|
||||
MessageTableCellWithSelector(ToolboxMessageTree * root = nullptr, const KDFont * font = KDFont::SmallFont);
|
||||
ToolboxMessageTree * getSelectedMessage() const { return m_selectedMessage; };
|
||||
bool handleEvent(Ion::Events::Event event);
|
||||
private:
|
||||
ToolboxMessageTree * m_objectsRoot;
|
||||
ToolboxMessageTree * m_selectedMessage;
|
||||
ObjectsController m_toolbox;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
0
apps/geometry/list/objects_controller.cpp
Normal file
0
apps/geometry/list/objects_controller.cpp
Normal file
20
apps/geometry/list/objects_controller.h
Normal file
20
apps/geometry/list/objects_controller.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#ifndef APPS_MATH_VARIABLE_BOX_CONTROLLER_H
|
||||
#define APPS_MATH_VARIABLE_BOX_CONTROLLER_H
|
||||
|
||||
#include <escher/nested_menu_controller.h>
|
||||
|
||||
namespace Geometry {
|
||||
|
||||
class ObjectsController : public NestedMenuController {
|
||||
ObjectsController(Responder * parentResponder);
|
||||
virtual int numberOfRows() const override;
|
||||
virtual int reusableCellCount(int type) override;
|
||||
virtual int typeAtLocation(int i, int j) override;
|
||||
virtual bool selectLeaf(int selectedRow) override;
|
||||
virtual HighlightCell * leafCellAtIndex(int index) override;
|
||||
virtual HighlightCell * nodeCellAtIndex(int index) override;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -20,6 +20,7 @@ public:
|
||||
virtual void scrollToCell(int i, int j);
|
||||
HighlightCell * cellAtLocation(int i, int j);
|
||||
void reloadCellAtLocation(int i, int j);
|
||||
void reloadVisibleCells();
|
||||
protected:
|
||||
#if ESCHER_VIEW_LOGGING
|
||||
const char * className() const override;
|
||||
@@ -34,6 +35,7 @@ protected:
|
||||
void setHorizontalCellOverlap(KDCoordinate o) { m_horizontalCellOverlap = o; }
|
||||
void setVerticalCellOverlap(KDCoordinate o) { m_verticalCellOverlap = o; }
|
||||
|
||||
void reloadVisibleCells();
|
||||
void reloadCellAtLocation(int i, int j);
|
||||
HighlightCell * cellAtLocation(int i, int j);
|
||||
TableViewDataSource * dataSource();
|
||||
|
||||
@@ -56,6 +56,10 @@ void TableView::reloadCellAtLocation(int i, int j) {
|
||||
m_contentView.reloadCellAtLocation(i, j);
|
||||
}
|
||||
|
||||
void TableView::reloadVisibleCells() {
|
||||
m_contentView.reloadVisibleCells();
|
||||
}
|
||||
|
||||
/* TableView::ContentView */
|
||||
|
||||
TableView::ContentView::ContentView(TableView * tableView, TableViewDataSource * dataSource, KDCoordinate horizontalCellOverlap, KDCoordinate verticalCellOverlap) :
|
||||
@@ -165,6 +169,15 @@ View * TableView::ContentView::subviewAtIndex(int index) {
|
||||
return m_dataSource->reusableCell(typeIndex, type);
|
||||
}
|
||||
|
||||
void TableView::ContentView::reloadVisibleCells() {
|
||||
for (int index = 0; index < numberOfSubviews(); index++) {
|
||||
View * cell = subview(index);
|
||||
int i = absoluteColumnNumberFromSubviewIndex(index);
|
||||
int j = absoluteRowNumberFromSubviewIndex(index);
|
||||
m_dataSource->willDisplayCellAtLocation((HighlightCell *)cell, i, j);
|
||||
}
|
||||
}
|
||||
|
||||
void TableView::ContentView::layoutSubviews(bool force) {
|
||||
/* The number of subviews might change during the layouting so it needs to be
|
||||
* recomputed at each step of the for loop. */
|
||||
|
||||
Reference in New Issue
Block a user