From e1a77ce8aac4f51c5bf3bbf6fd8b8e4189dbbe70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Fri, 27 Jan 2017 17:52:33 +0100 Subject: [PATCH] [apps/settings] Implement structure of settings app Change-Id: If42dc3fcb363e3ceac0dda9f89394f2535ab09be --- apps/Makefile | 1 + apps/settings/Makefile | 7 ++++ apps/settings/app.cpp | 14 +++++++ apps/settings/app.h | 21 ++++++++++ apps/settings/main_controller.cpp | 52 ++++++++++++++++++++++++ apps/settings/main_controller.h | 28 +++++++++++++ apps/settings/preference.cpp | 64 ++++++++++++++++++++++++++++++ apps/settings/preference.h | 49 +++++++++++++++++++++++ apps/settings/settings_icon.png | Bin 0 -> 1452 bytes 9 files changed, 236 insertions(+) create mode 100644 apps/settings/Makefile create mode 100644 apps/settings/app.cpp create mode 100644 apps/settings/app.h create mode 100644 apps/settings/main_controller.cpp create mode 100644 apps/settings/main_controller.h create mode 100644 apps/settings/preference.cpp create mode 100644 apps/settings/preference.h create mode 100644 apps/settings/settings_icon.png diff --git a/apps/Makefile b/apps/Makefile index cc93bc87a..cd7dd50b4 100644 --- a/apps/Makefile +++ b/apps/Makefile @@ -3,6 +3,7 @@ include apps/graph/Makefile include apps/home/Makefile include apps/probability/Makefile include apps/regression/Makefile +include apps/settings/Makefile include apps/statistics/Makefile #include apps/picview/Makefile diff --git a/apps/settings/Makefile b/apps/settings/Makefile new file mode 100644 index 000000000..c2f0111c7 --- /dev/null +++ b/apps/settings/Makefile @@ -0,0 +1,7 @@ +app_objs += $(addprefix apps/settings/,\ + app.o\ + preference.o\ + main_controller.o\ +) + +app_images += apps/settings/settings_icon.png diff --git a/apps/settings/app.cpp b/apps/settings/app.cpp new file mode 100644 index 000000000..52feb0ebe --- /dev/null +++ b/apps/settings/app.cpp @@ -0,0 +1,14 @@ +#include "app.h" +#include "settings_icon.h" + +namespace Settings { + +App::App(Container * container) : + ::App(container, &m_stackViewController, "Parametre", "PARAMETRE", ImageStore::SettingsIcon), + m_preference(), + m_mainController(MainController(nullptr)), + m_stackViewController(StackViewController(&m_modalViewController, &m_mainController)) +{ +} + +} diff --git a/apps/settings/app.h b/apps/settings/app.h new file mode 100644 index 000000000..60c9143f9 --- /dev/null +++ b/apps/settings/app.h @@ -0,0 +1,21 @@ +#ifndef SETTINGS_APP_H +#define SETTINGS_APP_H + +#include +#include "main_controller.h" +#include "preference.h" + +namespace Settings { + +class App : public ::App { +public: + App(Container * container); +private: + Preference m_preference; + MainController m_mainController; + StackViewController m_stackViewController; +}; + +} + +#endif diff --git a/apps/settings/main_controller.cpp b/apps/settings/main_controller.cpp new file mode 100644 index 000000000..c4227bd4e --- /dev/null +++ b/apps/settings/main_controller.cpp @@ -0,0 +1,52 @@ +#include "main_controller.h" +#include + +namespace Settings { + +MainController::MainController(Responder * parentResponder) : + ViewController(parentResponder), + m_cells{ChevronMenuListCell((char*)"Angles"), ChevronMenuListCell((char*)"Resultats"), ChevronMenuListCell((char*)"Forme nombre"), + ChevronMenuListCell((char*)"Forme complexe"), ChevronMenuListCell((char*)"Langue")}, + m_selectableTableView(SelectableTableView(this, this, Metric::TopMargin, Metric::RightMargin, + Metric::BottomMargin, Metric::LeftMargin)) +{ +} + +const char * MainController::title() const { + return "Parametres"; +} + +View * MainController::view() { + return &m_selectableTableView; +} + +void MainController::didBecomeFirstResponder() { + if (m_selectableTableView.selectedRow() < 0) { + m_selectableTableView.selectCellAtLocation(0, 0); + } + app()->setFirstResponder(&m_selectableTableView); +} + +bool MainController::handleEvent(Ion::Events::Event event) { + return false; +} + +int MainController::numberOfRows() { + return k_totalNumberOfCell; +}; + +TableViewCell * MainController::reusableCell(int index) { + assert(index >= 0); + assert(index < k_totalNumberOfCell); + return &m_cells[index]; +} + +int MainController::reusableCellCount() { + return k_totalNumberOfCell; +} + +KDCoordinate MainController::cellHeight() { + return Metric::ParameterCellHeight; +} + +} diff --git a/apps/settings/main_controller.h b/apps/settings/main_controller.h new file mode 100644 index 000000000..644142a2c --- /dev/null +++ b/apps/settings/main_controller.h @@ -0,0 +1,28 @@ +#ifndef SETTINGS_MAIN_CONTROLLER_H +#define SETTINGS_MAIN_CONTROLLER_H + +#include + +namespace Settings { + +class MainController : public ViewController, public SimpleListViewDataSource { +public: + MainController(Responder * parentResponder); + + View * view() override; + const char * title() const override; + bool handleEvent(Ion::Events::Event event) override; + void didBecomeFirstResponder() override; + int numberOfRows() override; + KDCoordinate cellHeight() override; + TableViewCell * reusableCell(int index) override; + int reusableCellCount() override; +private: + constexpr static int k_totalNumberOfCell = 5; + ChevronMenuListCell m_cells[k_totalNumberOfCell]; + SelectableTableView m_selectableTableView; +}; + +} + +#endif diff --git a/apps/settings/preference.cpp b/apps/settings/preference.cpp new file mode 100644 index 000000000..807d4ca8a --- /dev/null +++ b/apps/settings/preference.cpp @@ -0,0 +1,64 @@ +#include "preference.h" + +namespace Settings { + +Preference::Preference() : + m_angleUnit(AngleUnit::Degree), + m_displayMode(DisplayMode::Auto), + m_numberType(NumberType::Reel), + m_complexFormat(ComplexFormat::Cartesian), + m_language(Language::French) +{ +} + +Preference::AngleUnit Preference::angleUnit() const { + return m_angleUnit; +} + +void Preference::setAngleUnit(AngleUnit angleUnit) { + if (angleUnit != m_angleUnit) { + m_angleUnit = angleUnit; + } +} + +Preference::DisplayMode Preference::displayMode() const { + return m_displayMode; +} + +void Preference::setDisplayMode(DisplayMode displayMode) { + if (displayMode != m_displayMode) { + m_displayMode = displayMode; + } +} + +Preference::NumberType Preference::numberType() const { + return m_numberType; +} + +void Preference::setNumberType(NumberType numberType) { + if (numberType != m_numberType) { + m_numberType = numberType; + } +} + +Preference::ComplexFormat Preference::complexFormat() const { + return m_complexFormat; +} + +void Preference::setComplexFormat(ComplexFormat complexFormat) { + if (complexFormat != m_complexFormat) { + m_complexFormat = complexFormat; + } +} + +Preference::Language Preference::language() const { + return m_language; +} + +void Preference::setLanguage(Language language) { + if (language != m_language) { + m_language = language; + } +} + +} diff --git a/apps/settings/preference.h b/apps/settings/preference.h new file mode 100644 index 000000000..b1bf43f1a --- /dev/null +++ b/apps/settings/preference.h @@ -0,0 +1,49 @@ +#ifndef SETTINGS_MODEL_H +#define SETTINGS_MODEL_H + +namespace Settings { + +class Preference { +public: + enum class AngleUnit { + Degree, + Radian + }; + enum class DisplayMode { + Auto, + Scientific + }; + enum class NumberType { + Reel, + Complex + }; + enum class ComplexFormat { + Cartesian, + Polar + }; + enum class Language { + French, + English + }; + Preference(); + AngleUnit angleUnit() const; + void setAngleUnit(AngleUnit angleUnit); + DisplayMode displayMode() const; + void setDisplayMode(DisplayMode displayMode); + NumberType numberType() const; + void setNumberType(NumberType numberType); + ComplexFormat complexFormat() const; + void setComplexFormat(ComplexFormat complexFormat); + Language language() const; + void setLanguage(Language language); +private: + AngleUnit m_angleUnit; + DisplayMode m_displayMode; + NumberType m_numberType; + ComplexFormat m_complexFormat; + Language m_language; +}; + +} + +#endif diff --git a/apps/settings/settings_icon.png b/apps/settings/settings_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b7cf4f93da3c20e23ad6289ba369de6a2e6ca3f9 GIT binary patch literal 1452 zcmZ8hdo)t567` zQG}Ex&ywV^$zz++)GXAUbI<+b-t&EYzTb1cpU?Mv|M^l*p`7GFnjioGUKtuNKEq_T-55^D1yoe&G5kBD|k)H^%aV=jCcFP@H6 z^-{k^FNzH&Ev*(pC{hpA!wE9JhTADuCEX79ImqQ^P<%F8)m2zoFxc?3-K?|^>MFO_ zq|7tUtGa9$rh(N)NmD0aBYT(LkzC^!Sr>=7pi0&Fq;!qT1Abg?3H(#jB4>L+`=n7N z_R!28b&XOS!t&|ZI^pBTeNn#IkB~BXm_};#(c|{6{NUo7no8Y|KiT4~-oJi+B+e=gc4JG%Kcu`)Hty93y8WnetmoakWS8b(p;TQAU#M0qhEsH-sBjW`3HP z)}2R|xk7t6@oxemfZMfYMf}0hkjyOV9ZdfLKiJ#C!R{mPl?u`0AY&(;d6p6WEMJ*~vtbnN{VwCFl}MNEBB6~$k@ zfQK+v1I6dqmxqPzmk>)AOKNXzB80;^9M3KIv7rSMD`v@NDfkqv%G-0snw{_?dC>=g zb5iJf@v$$ffTN|klF(3{S`~71?Nxlg%vCV@$z6JFez$YXauCR{5?}-Z9Z(YgO z6vDY%66dj4_O;vO<{rk+xy5{!$`|o7g6L^wI(bXy=22VW6O!ksWr85pqrp^5*TFEV zh0t{TW}S9K0)B{(_3>eUDH!&eGn1!2z$a-@S>Pb|&52^Kuf=e86!&Sb=4s<1ic4=)~z~w9lhBy_brzZvn2QPO)pAUG7BSUr5GS;E@ zWl=Kr2XlehjRF4FIwusPh@%}U49a~#P^L)CN2jJ%))-a#Xga>^7TDyYU1!k;)9hrF zmh)>h>gBLHy|eZ5dS-14#j`0OhcP`>kPmHS4iO+*{WAKQ0;-yoF&;3?Lj*`yk49s7 zpl(bv^(69Xc0Y4Mq4mAm?=@lCP8LNKjJi6~qjA%;i1B&E8PD2@l8An#d$;XcSsB_T zsD33A#A}X7;;huzjokbKowe;RfHHVY= zRTI+ryv+Q@FGjyG{a5TxCeS^kkj;JFx@J5pJlFHvH}+5)W8)>H3hc z35LA#fLq(58nD-`nRhX!dk3&0D%QmkU_%Q@F^v+T7^*uhp^Y^=o28Pha%TuS{ z823QmzJ5>!fw&Xn0+(0APQKX8Zb}xzxKV@^pKbI-@63Sch$RO46N9YrF+m~#ETAw; z2owgffMZ}VYmq~tCeWSCnla1#4}lOF7#f`LKLXUs8Vdi15DizMiwJ