From 4f74b6d8494231910ead2a7fd1b195597f4c7cde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Fri, 10 Nov 2017 17:49:05 +0100 Subject: [PATCH] [code] The addScript button disappears when needed. When there is already the maximal number of scripts or when the ScriptStore accordion buffer is full. Change-Id: I0d43d42626da7f060a2309c66f1806b35a29bf38 --- apps/code/menu_controller.cpp | 17 +++++++++++------ apps/code/menu_controller.h | 4 +++- apps/code/script_store.cpp | 5 ++++- apps/code/script_store.h | 4 ++++ escher/include/escher/accordion.h | 2 +- escher/src/accordion.cpp | 28 ++++++++++++++-------------- 6 files changed, 37 insertions(+), 23 deletions(-) diff --git a/apps/code/menu_controller.cpp b/apps/code/menu_controller.cpp index 680603e56..5e3263f4a 100644 --- a/apps/code/menu_controller.cpp +++ b/apps/code/menu_controller.cpp @@ -40,7 +40,7 @@ void MenuController::didBecomeFirstResponder() { app()->setFirstResponder(&m_consoleButton); return; } - assert(m_selectableTableView.selectedRow() < numberOfRows()); + assert(m_selectableTableView.selectedRow() < m_scriptStore->numberOfScripts()); app()->setFirstResponder(&m_selectableTableView); } @@ -62,7 +62,7 @@ bool MenuController::handleEvent(Ion::Events::Event event) { if (selectedRow >= 0 && selectedRow < m_scriptStore->numberOfScripts()) { configureScript(); return true; - } else if (selectedRow == m_scriptStore->numberOfScripts()) { + } else if (shouldDisplayAddScriptRow() && selectedRow == m_scriptStore->numberOfScripts()) { addScript(); return true; } @@ -80,6 +80,7 @@ void MenuController::setParameteredScript() { } void MenuController::addScript() { + assert(m_scriptStore->numberOfScripts() < k_maxNumberOfScripts); if (m_scriptStore->addNewScript()) { m_selectableTableView.reloadData(); renameScriptAtIndex(m_scriptStore->numberOfScripts()-1); @@ -109,10 +110,14 @@ void MenuController::reloadConsole() { m_consoleController.unloadPythonEnvironment(); } +bool MenuController::shouldDisplayAddScriptRow() { + return (m_scriptStore->numberOfScripts() < k_maxNumberOfScripts + && !m_scriptStore->isFull()); +} + int MenuController::numberOfRows() { - return m_scriptStore->numberOfScripts() + 1; - //TODO do not add the addScript row if there can be no more scripts stored. -}; + return m_scriptStore->numberOfScripts() + shouldDisplayAddScriptRow(); +} KDCoordinate MenuController::rowHeight(int j) { return cellHeight(); @@ -152,7 +157,7 @@ int MenuController::reusableCellCount(int type) { int MenuController::typeAtLocation(int i, int j) { assert(i==0); assert(j>=0 && j= 0 && index < numberOfBuffers()); cleanFreeSpace(); @@ -148,20 +162,6 @@ int Accordion::startOfFreeSpace() { return 0; } -int Accordion::freeSpaceSize() { - cleanFreeSpace(); - int sizeOfFreeSpace = 0; - int freeSpaceStart = startOfFreeSpace(); - for (int i = freeSpaceStart; i < m_historySize; i++) { - if (m_history[i] == k_freeSpaceMarker) { - sizeOfFreeSpace++; - } else { - return sizeOfFreeSpace; - } - } - return sizeOfFreeSpace; -} - void Accordion::cleanFreeSpace() { if (m_history[m_startOfLastEditedBuffer] == k_freeSpaceMarker) { return;