diff --git a/apps/code/menu_controller.cpp b/apps/code/menu_controller.cpp index 51e9045e4..beb669b58 100644 --- a/apps/code/menu_controller.cpp +++ b/apps/code/menu_controller.cpp @@ -15,7 +15,7 @@ MenuController::MenuController(Responder * parentResponder, ScriptStore * script }, this)), m_selectableTableView(this, this, 0, 1, 0, 0, 0, 0, this, nullptr, false), m_consoleController(parentResponder, m_scriptStore), - m_scriptParameterController(nullptr, I18n::Message::ScriptOptions, m_scriptStore) + m_scriptParameterController(nullptr, I18n::Message::ScriptOptions, m_scriptStore, this) { for (int i = 0; i< k_maxNumberOfCells; i++) { m_cells[i].setMessageFontSize(KDText::FontSize::Large); @@ -73,6 +73,11 @@ void MenuController::addScript() { m_selectableTableView.selectCellAtLocation(0, numberOfRows()-2); } +void MenuController::deleteScriptAtIndex(int i) { + m_scriptStore->deleteScript(i); + m_selectableTableView.reloadData(); +} + int MenuController::numberOfRows() { return m_scriptStore->numberOfScripts() + 1; //TODO do not add the addScript row if there can be no more scripts stored. diff --git a/apps/code/menu_controller.h b/apps/code/menu_controller.h index ffadeb063..2464209d7 100644 --- a/apps/code/menu_controller.h +++ b/apps/code/menu_controller.h @@ -9,6 +9,8 @@ namespace Code { +class ScriptParameterController; + class MenuController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource, public ButtonRowDelegate { public: MenuController(Responder * parentResponder, ScriptStore * scriptStore, ButtonRowController * footer); @@ -16,6 +18,7 @@ public: StackViewController * stackViewController(); void configureScript(); void addScript(); + void deleteScriptAtIndex(int i); /* ViewController */ View * view() override; diff --git a/apps/code/script_parameter_controller.cpp b/apps/code/script_parameter_controller.cpp index d940f95f7..ac5541933 100644 --- a/apps/code/script_parameter_controller.cpp +++ b/apps/code/script_parameter_controller.cpp @@ -1,8 +1,9 @@ #include "script_parameter_controller.h" +#include "menu_controller.h" namespace Code { -ScriptParameterController::ScriptParameterController(Responder * parentResponder, I18n::Message title, ScriptStore * scriptStore) : +ScriptParameterController::ScriptParameterController(Responder * parentResponder, I18n::Message title, ScriptStore * scriptStore, MenuController * menuController) : ViewController(parentResponder), m_pageTitle(title), m_editScript(I18n::Message::Default), @@ -11,12 +12,20 @@ ScriptParameterController::ScriptParameterController(Responder * parentResponder m_deleteScript(I18n::Message::Default), m_selectableTableView(this, this, 0, 1, Metric::CommonTopMargin, Metric::CommonRightMargin, Metric::CommonBottomMargin, Metric::CommonLeftMargin, this), - m_scriptStore(scriptStore) + m_scriptStore(scriptStore), + m_menuController(menuController), + m_currentScriptIndex(-1) { } void ScriptParameterController::setScript(int i){ m_editorController.setScript(m_scriptStore->editableScript(i)); + m_currentScriptIndex = i; +} + +void ScriptParameterController::dismissScriptParameterController() { + m_currentScriptIndex = -1; + stackController()->pop(); } View * ScriptParameterController::view() { @@ -34,6 +43,10 @@ bool ScriptParameterController::handleEvent(Ion::Events::Event event) { app()->displayModalViewController(&m_editorController, 0.5f, 0.5f); return true; //TODO other cases + case 3: + m_menuController->deleteScriptAtIndex(m_currentScriptIndex); + dismissScriptParameterController(); + return true; default: assert(false); return false; @@ -43,9 +56,7 @@ bool ScriptParameterController::handleEvent(Ion::Events::Event event) { } void ScriptParameterController::didBecomeFirstResponder() { - if (selectedRow() < 0) { - selectCellAtLocation(0, 0); - } + selectCellAtLocation(0, 0); app()->setFirstResponder(&m_selectableTableView); } @@ -75,4 +86,8 @@ void ScriptParameterController::willDisplayCellForIndex(HighlightCell * cell, in myCell->setMessage(labels[index]); } +StackViewController * ScriptParameterController::stackController() { + return static_cast(parentResponder()); +} + } diff --git a/apps/code/script_parameter_controller.h b/apps/code/script_parameter_controller.h index 398ffe39f..a493daae6 100644 --- a/apps/code/script_parameter_controller.h +++ b/apps/code/script_parameter_controller.h @@ -8,10 +8,13 @@ namespace Code { +class MenuController; + class ScriptParameterController : public ViewController, public SimpleListViewDataSource, public SelectableTableViewDataSource { public: - ScriptParameterController(Responder * parentResponder, I18n::Message title, ScriptStore * scriptStore); + ScriptParameterController(Responder * parentResponder, I18n::Message title, ScriptStore * scriptStore, MenuController * menuController); void setScript(int i); + void dismissScriptParameterController(); /* ViewController */ View * view() override; @@ -28,6 +31,7 @@ public: private: constexpr static int k_totalNumberOfCell = 4; + StackViewController * stackController(); I18n::Message m_pageTitle; MessageTableCell m_editScript; MessageTableCell m_renameScript; @@ -36,6 +40,8 @@ private: SelectableTableView m_selectableTableView; EditorController m_editorController; ScriptStore * m_scriptStore; + MenuController * m_menuController; + int m_currentScriptIndex; }; }