mirror of
https://github.com/UpsilonNumworks/Upsilon.git
synced 2026-01-18 16:27:34 +01:00
[apps/settings] Implement structure of settings app
Change-Id: If42dc3fcb363e3ceac0dda9f89394f2535ab09be
This commit is contained in:
@@ -3,6 +3,7 @@ include apps/graph/Makefile
|
|||||||
include apps/home/Makefile
|
include apps/home/Makefile
|
||||||
include apps/probability/Makefile
|
include apps/probability/Makefile
|
||||||
include apps/regression/Makefile
|
include apps/regression/Makefile
|
||||||
|
include apps/settings/Makefile
|
||||||
include apps/statistics/Makefile
|
include apps/statistics/Makefile
|
||||||
#include apps/picview/Makefile
|
#include apps/picview/Makefile
|
||||||
|
|
||||||
|
|||||||
7
apps/settings/Makefile
Normal file
7
apps/settings/Makefile
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
app_objs += $(addprefix apps/settings/,\
|
||||||
|
app.o\
|
||||||
|
preference.o\
|
||||||
|
main_controller.o\
|
||||||
|
)
|
||||||
|
|
||||||
|
app_images += apps/settings/settings_icon.png
|
||||||
14
apps/settings/app.cpp
Normal file
14
apps/settings/app.cpp
Normal file
@@ -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))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
21
apps/settings/app.h
Normal file
21
apps/settings/app.h
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
#ifndef SETTINGS_APP_H
|
||||||
|
#define SETTINGS_APP_H
|
||||||
|
|
||||||
|
#include <escher.h>
|
||||||
|
#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
|
||||||
52
apps/settings/main_controller.cpp
Normal file
52
apps/settings/main_controller.cpp
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
#include "main_controller.h"
|
||||||
|
#include <assert.h>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
28
apps/settings/main_controller.h
Normal file
28
apps/settings/main_controller.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#ifndef SETTINGS_MAIN_CONTROLLER_H
|
||||||
|
#define SETTINGS_MAIN_CONTROLLER_H
|
||||||
|
|
||||||
|
#include <escher.h>
|
||||||
|
|
||||||
|
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
|
||||||
64
apps/settings/preference.cpp
Normal file
64
apps/settings/preference.cpp
Normal file
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
49
apps/settings/preference.h
Normal file
49
apps/settings/preference.h
Normal file
@@ -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
|
||||||
BIN
apps/settings/settings_icon.png
Normal file
BIN
apps/settings/settings_icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.4 KiB |
Reference in New Issue
Block a user