mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-19 00:37:25 +01:00
[apps] Do not display empty cells in store_controller
This commit is contained in:
@@ -19,7 +19,7 @@ void FloatPairStore::set(double f, int series, int i, int j) {
|
||||
}
|
||||
}
|
||||
|
||||
int FloatPairStore::numberOfPairs() const {
|
||||
int FloatPairStore::numberOfPairsOfAllSeries() const {
|
||||
int result = 0;
|
||||
for (int i = 0; i < k_numberOfSeries; i++) {
|
||||
result += m_numberOfPairs[i];
|
||||
|
||||
@@ -21,7 +21,11 @@ public:
|
||||
return m_data[series][i][j];
|
||||
}
|
||||
void set(double f, int series, int i, int j);
|
||||
int numberOfPairs() const;
|
||||
int numberOfPairsOfAllSeries() const;
|
||||
int numberOfPairs(int series) const {
|
||||
assert(series >= 0 && series < k_numberOfSeries);
|
||||
return m_numberOfPairs[series];
|
||||
}
|
||||
void deletePairAtIndex(int series, int j);
|
||||
void deleteAllPairs(int series);
|
||||
void deleteAllPairsOfAllSeries();
|
||||
|
||||
@@ -60,6 +60,13 @@ int StoreController::typeAtLocation(int i, int j) {
|
||||
}
|
||||
|
||||
void StoreController::willDisplayCellAtLocation(HighlightCell * cell, int i, int j) {
|
||||
// Handle empty cells
|
||||
if (j > m_store->numberOfPairs(seriesAtColumn(i)) && j < numberOfRows() - 1) {
|
||||
((EvenOddCell *)cell)->setEven(j%2 == 0);
|
||||
assert(cellAtLocationIsEditable(i, j));
|
||||
((EvenOddEditableTextCell *)cell)->editableTextCell()->textField()->setText("");
|
||||
return;
|
||||
}
|
||||
willDisplayCellAtLocationWithDisplayMode(cell, i, j, PrintFloat::Mode::Decimal);
|
||||
}
|
||||
|
||||
@@ -78,7 +85,7 @@ bool StoreController::handleEvent(Ion::Events::Event event) {
|
||||
return true;
|
||||
}
|
||||
assert(selectedColumn() >= 0 && selectedColumn() < numberOfColumns());
|
||||
int series = selectedColumn()/k_numberOfColumnsPerSeries;
|
||||
int series = seriesAtColumn(selectedColumn());
|
||||
if ((event == Ion::Events::OK || event == Ion::Events::EXE) && selectedRow() == 0) {
|
||||
m_storeParameterController.selectXColumn(selectedColumn()%k_numberOfColumnsPerSeries == 0);
|
||||
m_storeParameterController.selectSeries(series);
|
||||
@@ -109,16 +116,16 @@ bool StoreController::cellAtLocationIsEditable(int columnIndex, int rowIndex) {
|
||||
}
|
||||
|
||||
bool StoreController::setDataAtLocation(double floatBody, int columnIndex, int rowIndex) {
|
||||
m_store->set(floatBody, columnIndex/k_numberOfColumnsPerSeries, columnIndex%k_numberOfColumnsPerSeries, rowIndex-1);
|
||||
m_store->set(floatBody, seriesAtColumn(columnIndex), columnIndex%k_numberOfColumnsPerSeries, rowIndex-1);
|
||||
return true;
|
||||
}
|
||||
|
||||
double StoreController::dataAtLocation(int columnIndex, int rowIndex) {
|
||||
return m_store->get(columnIndex/k_numberOfColumnsPerSeries, columnIndex%k_numberOfColumnsPerSeries, rowIndex-1);
|
||||
return m_store->get(seriesAtColumn(columnIndex), columnIndex%k_numberOfColumnsPerSeries, rowIndex-1);
|
||||
}
|
||||
|
||||
int StoreController::numberOfElements() {
|
||||
return m_store->numberOfPairs();
|
||||
return m_store->numberOfPairsOfAllSeries();
|
||||
}
|
||||
|
||||
int StoreController::maxNumberOfElements() const {
|
||||
|
||||
@@ -40,6 +40,7 @@ protected:
|
||||
int maxNumberOfElements() const override;
|
||||
virtual HighlightCell * titleCells(int index) = 0;
|
||||
char m_draftTextBuffer[TextField::maxBufferSize()];
|
||||
int seriesAtColumn(int column) const { return column / k_numberOfColumnsPerSeries; }
|
||||
EvenOddEditableTextCell * m_editableCells[k_maxNumberOfEditableCells];
|
||||
FloatPairStore * m_store;
|
||||
StoreParameterController m_storeParameterController;
|
||||
|
||||
Reference in New Issue
Block a user