# HG changeset patch # User Ideenmodellierer # Date 1598800763 -7200 # Node ID 998529b3e142da4596c4b90be665af3f1a43fbdb # Parent 06b21f1e47a5f8e18ad53f1141b546d2b6d86122 Added new top level menu for customization of views In the previous versions all menus were occupied by menu option. To indroduce the selection views for data visualization a new tab had to be added. The menu "Customize views" has been moded to the new tab but not yet removed from the previous one. In addition a view for selection of big font options has been added (including multilanguage strings and other infrastructure) diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/gfx_colors.h --- a/Discovery/Inc/gfx_colors.h Sun Aug 30 17:14:31 2020 +0200 +++ b/Discovery/Inc/gfx_colors.h Sun Aug 30 17:19:23 2020 +0200 @@ -86,8 +86,8 @@ CLUT_MenuPageDecoParameter, CLUT_MenuPageHardware, CLUT_MenuPageSystem, + CLUT_MenuPageCustomView, CLUT_MenuPageDivePlanner, - CLUT_MenuPage9, CLUT_MenuPage10, CLUT_ButtonSymbols, CLUT_InfoSurface, diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/tMenuCustom.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Discovery/Inc/tMenuCustom.h Sun Aug 30 17:19:23 2020 +0200 @@ -0,0 +1,55 @@ +/////////////////////////////////////////////////////////////////////////////// +/// -*- coding: UTF-8 -*- +/// +/// \file Discovery/Inc/tMenuCustom.h +/// \brief Menu Custom View - Provide access to custom view options +/// \author heinrichs weikamp gmbh +/// \date 25-Aug-2020 +/// +/// $Id$ +/////////////////////////////////////////////////////////////////////////////// +/// \par Copyright (c) 2014-2020 Heinrichs Weikamp gmbh +/// +/// This program is free software: you can redistribute it and/or modify +/// it under the terms of the GNU General Public License as published by +/// the Free Software Foundation, either version 3 of the License, or +/// (at your option) any later version. +/// +/// This program is distributed in the hope that it will be useful, +/// but WITHOUT ANY WARRANTY; without even the implied warranty of +/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +/// GNU General Public License for more details. +/// +/// You should have received a copy of the GNU General Public License +/// along with this program. If not, see . +////////////////////////////////////////////////////////////////////////////// + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef TMENU_CUSTOM_H +#define TMENU_CUSTOM_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include + +/** @addtogroup Template + * @{ + */ + +/* Exported variables --------------------------------------------------------*/ + + +/* Exported functions --------------------------------------------------------*/ + +uint32_t tMCustom_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext); + + #ifdef __cplusplus +} +#endif + +#endif /* TMENU_CUSTOM_H */ + +/************************ (C) COPYRIGHT heinrichs weikamp *****END OF FILE****/ diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/tMenuEditCustom.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Discovery/Inc/tMenuEditCustom.h Sun Aug 30 17:19:23 2020 +0200 @@ -0,0 +1,41 @@ +/////////////////////////////////////////////////////////////////////////////// +/// -*- coding: UTF-8 -*- +/// +/// \file Discovery/Inc/tMenuEditCustom.h +/// \brief Header file for editing custom view Settings +/// \author heinrichs weikamp gmbh +/// \date 05-Aug-2014 +/// +/// $Id$ +/////////////////////////////////////////////////////////////////////////////// +/// \par Copyright (c) 2014-2020 Heinrichs Weikamp gmbh +/// +/// This program is free software: you can redistribute it and/or modify +/// it under the terms of the GNU General Public License as published by +/// the Free Software Foundation, either version 3 of the License, or +/// (at your option) any later version. +/// +/// This program is distributed in the hope that it will be useful, +/// but WITHOUT ANY WARRANTY; without even the implied warranty of +/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +/// GNU General Public License for more details. +/// +/// You should have received a copy of the GNU General Public License +/// along with this program. If not, see . +////////////////////////////////////////////////////////////////////////////// + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef TMENU_EDIT_CUSTOM_H +#define TMENU_EDIT_CUSTOM_H + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f4xx_hal.h" +#include "gfx_engine.h" +#include "settings.h" +#include "data_central.h" + +void openEdit_Custom(uint8_t line); +void openEdit_CustomviewDivemode2(const uint8_t* pcv_changelist); +void CustomviewDivemode2_refresh(); + +#endif /* TMENU_EDIT_CUSTOM_H */ diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/tStructure.h --- a/Discovery/Inc/tStructure.h Sun Aug 30 17:14:31 2020 +0200 +++ b/Discovery/Inc/tStructure.h Sun Aug 30 17:19:23 2020 +0200 @@ -304,15 +304,41 @@ #define StMSYS6_SetFactoryBC _MB(2,8,6,11,0) #define StMSYS6_SetSampleIndx _MB(2,8,6,12,0) -/* PAGE 9 */ -#define StMPLAN _MB(2,9,0,0,0) + /* PAGE 9 */ + + # define StMCustom _MB(2,9,0,0,0) + + /* PAGE 9 EDIT FIELD CONTENT */ +// + +#define StMCustom1_CViewTimeout _MB(2,9,1,1,0) +#define StMCustom1_CViewStandard _MB(2,9,1,2,0) +#define StMCustom1_CornerTimeout _MB(2,9,1,3,0) +#define StMCustom1_CornerStandard _MB(2,9,1,4,0) + -/* PAGE 9 EDIT FIELD CONTENT */ -#define StMPLAN2_Interval _MB(2,9,2,1,0) -#define StMPLAN3_DiveTime _MB(2,9,3,1,0) -#define StMPLAN4_MaxDepth _MB(2,9,4,1,0) -#define StMPLAN5_ExitResult _MB(2,9,5,1,0) -#define StMPLAN4_Settings _MB(2,9,6,1,0) +#define StMCustom2_CViewSelection1 _MB(2,9,2,1,0) +#define StMCustom2_CViewSelection2 _MB(2,9,2,2,0) +#define StMCustom2_CViewSelection3 _MB(2,9,2,3,0) +#define StMCustom2_CViewSelection4 _MB(2,9,2,4,0) +#define StMCustom2_CViewSelection5 _MB(2,9,2,5,0) +#define StMCustom2_CViewSelection6 _MB(2,9,2,6,0) + + +#define StMCustom2_BFSelection _MB(2,9,3,1,0) + +/* PAGE 10 */ +#define StMPLAN _MB(2,10,0,0,0) + +/* PAGE 10 EDIT FIELD CONTENT */ +#define StMPLAN2_Interval _MB(2,10,2,1,0) +#define StMPLAN3_DiveTime _MB(2,10,3,1,0) +#define StMPLAN4_MaxDepth _MB(2,10,4,1,0) +#define StMPLAN5_ExitResult _MB(2,10,5,1,0) +#define StMPLAN4_Settings _MB(2,10,6,1,0) + + + //#define StMDECO6_SALINITY _MB(2,5,6,1,0) @@ -321,7 +347,7 @@ -//#define StMDECO7_AMV _MB(2,5,7,1,0) +//#define StMDECO7_AMV _MB(2,5,7,1,0) //#define StMDECO7_DefaultAMV _MB(2,5,7,2,0) //#define StMDECO7_RESERVE _MB(2,5,7,3,0) diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Inc/text_multilanguage.h --- a/Discovery/Inc/text_multilanguage.h Sun Aug 30 17:14:31 2020 +0200 +++ b/Discovery/Inc/text_multilanguage.h Sun Aug 30 17:19:23 2020 +0200 @@ -302,6 +302,14 @@ TXT2BYTE_ApneaSurface, /* */ TXT2BYTE_FLIPDISPLAY, + TXT2BYTE_SelectCustomviews, + TXT2BYTE_SelectBigFont, + TXT2BYTE_MaxDepth, + TXT2BYTE_Stopwatch, + TXT2BYTE_TTS, + TXT2BYTE_ppoNair, + TXT2BYTE_Navigation, + TXT2BYTE_DepthData, TXT2BYTE_END }; diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Src/gfx_colors.c --- a/Discovery/Src/gfx_colors.c Sun Aug 30 17:14:31 2020 +0200 +++ b/Discovery/Src/gfx_colors.c Sun Aug 30 17:19:23 2020 +0200 @@ -88,8 +88,8 @@ 0x00FFC000,//0x00C4EACC, // CLUT_MenuPageDecoParameter 0x00AC00ff,//0x00E5AE18, // CLUT_MenuPageHardware 0x00ff00ff,//0x00E5AEFF, // CLUT_MenuPageSystem - 0x00C4EACC,//0x00FFFF00, // CLUT_MenuPageDivePlanner - 0x00000000, // CLUT_MenuPage9 - UNUSED + 0x00FF55FF,//0x00FFFF00, // CLUT_MenuPageCustomView + 0x00C4EACC, // CLUT_MenuPageDivePlanner 0x00000000, // CLUT_MenuPage10 - UNUSED 0x00FFFFFF, // CLUT_ButtonSymbols 0x000092D0, // CLUT_InfoSurface diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Src/tMenuCustom.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Discovery/Src/tMenuCustom.c Sun Aug 30 17:19:23 2020 +0200 @@ -0,0 +1,76 @@ +/////////////////////////////////////////////////////////////////////////////// +/// -*- coding: UTF-8 -*- +/// +/// \file Discovery/Src/tMenuCustom.c +/// \brief Menu Custom - Provide access to custom view options +/// \author heinrichs weikamp gmbh +/// \date 25-Aug-2020 +/// +/// \details +/// +/// $Id$ +/////////////////////////////////////////////////////////////////////////////// +/// \par Copyright (c) 2014-2020 Heinrichs Weikamp gmbh +/// +/// This program is free software: you can redistribute it and/or modify +/// it under the terms of the GNU General Public License as published by +/// the Free Software Foundation, either version 3 of the License, or +/// (at your option) any later version. +/// +/// This program is distributed in the hope that it will be useful, +/// but WITHOUT ANY WARRANTY; without even the implied warranty of +/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +/// GNU General Public License for more details. +/// +/// You should have received a copy of the GNU General Public License +/// along with this program. If not, see . +////////////////////////////////////////////////////////////////////////////// + +/* Includes ------------------------------------------------------------------*/ +#include +#include +#include "tMenu.h" +#include "tStructure.h" +#include "tMenuCustom.h" +#include "text_multilanguage.h" +#include "data_central.h" + + +/* Exported functions --------------------------------------------------------*/ + +uint32_t tMCustom_refresh(uint8_t line, char *text, uint16_t *tab, char *subtext) +{ + uint8_t textPointer; + + textPointer = 0; + *tab = 550; + *subtext = 0; + + if((line == 0) || (line == 1)) + { + text[textPointer++] = TXT_2BYTE; + text[textPointer++] = TXT2BYTE_Customviews; + } + text[textPointer++] = '\n'; + text[textPointer++] = '\r'; + text[textPointer] = 0; + + if((line == 0) || (line == 2)) + { + text[textPointer++] = TXT_2BYTE; + text[textPointer++] = TXT2BYTE_SelectCustomviews; + } + strcpy(&text[textPointer],"\n\r"); + textPointer += 2; + + if((line == 0) || (line == 3)) + { + text[textPointer++] = TXT_2BYTE; + text[textPointer++] = TXT2BYTE_SelectBigFont; + } + strcpy(&text[textPointer],"\n\r"); + textPointer += 2; + + return StMCustom; +} + diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Src/tMenuEditCustom.c --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Discovery/Src/tMenuEditCustom.c Sun Aug 30 17:19:23 2020 +0200 @@ -0,0 +1,721 @@ +/////////////////////////////////////////////////////////////////////////////// +/// -*- coding: UTF-8 -*- +/// +/// \file Discovery/Src/tMenuEditXtra.c +/// \brief Menu Edit Xtra - Specials in Divemode like Reset Stopwatch +/// \author heinrichs weikamp gmbh +/// \date 02-Mar-2015 +/// +/// \details +/// +/// $Id$ +/////////////////////////////////////////////////////////////////////////////// +/// \par Copyright (c) 2014-2018 Heinrichs Weikamp gmbh +/// +/// This program is free software: you can redistribute it and/or modify +/// it under the terms of the GNU General Public License as published by +/// the Free Software Foundation, either version 3 of the License, or +/// (at your option) any later version. +/// +/// This program is distributed in the hope that it will be useful, +/// but WITHOUT ANY WARRANTY; without even the implied warranty of +/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +/// GNU General Public License for more details. +/// +/// You should have received a copy of the GNU General Public License +/// along with this program. If not, see . +////////////////////////////////////////////////////////////////////////////// + +/* Includes ------------------------------------------------------------------*/ +#include "tMenuEditCustom.h" + +#include "gfx_fonts.h" +#include "simulation.h" +#include "timer.h" +#include "tMenuEdit.h" +#include "tHome.h" // for enum CUSTOMVIEWS and init_t7_compass() +#include "t3.h" +#include "t7.h" +#include "data_exchange_main.h" +#include "motion.h" + +#define CV_PER_PAGE (5u) /* number of cv selections shown at one page */ + +static uint8_t customviewsSubpage = 0; +static uint8_t customviewsSubpageMax = 0; /* number of pages needed to display all selectable views */ +static const uint8_t* pcv_curchangelist; +/* Private function prototypes -----------------------------------------------*/ +void openEdit_Customview2(void); +void refresh_Customviews2(void); +/* Announced function prototypes -----------------------------------------------*/ +uint8_t OnAction_CViewTimeout (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); +uint8_t OnAction_CViewStandard (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); +uint8_t OnAction_CornerTimeout (uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); +uint8_t OnAction_CornerStandard(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action); + + +/* Exported functions --------------------------------------------------------*/ + + + + +void refresh_Customviews2(void) +{ + char text[32]; + uint8_t textpointer = 0; + + // header + text[0] = '\001'; + text[1] = TXT_2BYTE; + text[2] = TXT2BYTE_Customviews; + text[3] = 0; + write_topline(text); + + // custom view center return + textpointer = 0; + text[textpointer++] = TXT_2BYTE; + text[textpointer++] = TXT2BYTE_CViewTimeout; + textpointer += snprintf(&text[textpointer],11," %02u\016\016 %c\017",settingsGetPointer()->tX_customViewTimeout,TXT_Seconds); + write_label_var( 30, 700, ME_Y_LINE1, &FontT48, text); + + // custom view center primary + text[0] = TXT_2BYTE; + text[1] = TXT2BYTE_CViewStandard; + text[2] = ' '; + text[3] = ' '; + switch(settingsGetPointer()->tX_customViewPrimary) + { + case CVIEW_sensors: + text[4] = TXT_2BYTE; + text[5] = TXT2BYTE_O2monitor; + break; + case CVIEW_sensors_mV: + text[4] = TXT_2BYTE; + text[5] = TXT2BYTE_O2voltage; + break; + case CVIEW_Compass: + text[4] = TXT_2BYTE; + text[5] = TXT2BYTE_Compass; + break; + case CVIEW_Decolist: + text[4] = TXT_2BYTE; + text[5] = TXT2BYTE_Decolist; + break; + case CVIEW_Tissues: + text[4] = TXT_2BYTE; + text[5] = TXT2BYTE_Tissues; + break; + case CVIEW_Profile: + text[4] = TXT_2BYTE; + text[5] = TXT2BYTE_Profile; + break; + case CVIEW_Gaslist: + text[4] = TXT_2BYTE; + text[5] = TXT2BYTE_Gaslist; + break; + case CVIEW_EADTime: + text[4] = TXT_2BYTE; + text[5] = TXT2BYTE_Info; + break; + case CVIEW_SummaryOfLeftCorner: + text[4] = TXT_2BYTE; + text[5] = TXT2BYTE_Summary; + break; + case CVIEW_noneOrDebug: + text[4] = ' '; + text[5] = '-'; + break; + default: + snprintf(&text[4],3,"%02u",settingsGetPointer()->tX_customViewPrimary); + break; + } + text[6] = 0; + write_label_var( 30, 700, ME_Y_LINE2, &FontT48, text); + + + // field corner return + textpointer = 0; + text[textpointer++] = TXT_2BYTE; + text[textpointer++] = TXT2BYTE_CornerTimeout; + textpointer += snprintf(&text[textpointer],11," %02u\016\016 %c\017",settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout,TXT_Seconds); + write_label_var( 30, 700, ME_Y_LINE3, &FontT48, text); + + // field corner primary + text[0] = TXT_2BYTE; + text[1] = TXT2BYTE_CornerStandard; + text[2] = ' '; + text[3] = ' '; + switch(settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary) + { + /* Temperature */ + case LLC_Temperature: + text[4] = TXT_Temperature; + break; + /* Average Depth */ + case LLC_AverageDepth: + text[4] = TXT_AvgDepth; + break; + /* ppO2 */ + case LLC_ppO2: + text[4] = TXT_ppO2; + break; + /* Stop Uhr */ + case LLC_Stopwatch: + text[4] = TXT_Stopwatch; + break; + /* Ceiling */ + case LLC_Ceiling: + text[4] = TXT_Ceiling; + break; + /* Future TTS */ + case LLC_FutureTTS: + text[4] = TXT_FutureTTS; + break; + /* CNS */ + case LLC_CNS: + text[4] = TXT_CNS; + break; + case LLC_GF: + text[4] = TXT_ActualGradient; + break; +#ifdef ENABLE_BOTTLE_SENSOR + case LCC_BottleBar: + text[4] = TXT_AtemGasVorrat; + break; +#endif + /* none */ + case LLC_Empty: + text[4] = '-'; + break; + default: + snprintf(&text[4],2,"%u",settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary); + break; + } + text[5] = 0; + write_label_var( 30, 700, ME_Y_LINE4, &FontT48, text); + + + // extra display + text[0] = TXT_2BYTE; + text[1] = TXT2BYTE_ExtraDisplay; + text[2] = ' '; + text[3] = ' '; + text[4] = TXT_2BYTE; + switch(settingsGetPointer()->extraDisplay) + { + /* BigFont */ + case EXTRADISPLAY_BIGFONT: + text[5] = TXT2BYTE_ExtraBigFont; + break; + /* DecoGame */ + case EXTRADISPLAY_DECOGAME: + text[5] = TXT2BYTE_ExtraDecoGame; + break; + /* none */ + case EXTRADISPLAY_none: + text[5] = TXT2BYTE_ExtraNone; + break; + + default: + snprintf(&text[4],2,"%u",settingsGetPointer()->extraDisplay); + break; + } + text[6] = 0; + write_label_var( 30, 700, ME_Y_LINE5, &FontT48, text); + + /* MotionCtrl */ + text[0] = TXT_2BYTE; + text[1] = TXT2BYTE_MotionCtrl; + text[2] = ' '; + text[3] = ' '; + text[4] = TXT_2BYTE; + switch(settingsGetPointer()->MotionDetection) + { + case MOTION_DETECT_OFF: + text[5] = TXT2BYTE_MoCtrlNone; + break; + case MOTION_DETECT_MOVE: + text[5] = TXT2BYTE_MoCtrlPitch; + break; + case MOTION_DETECT_SECTOR: + text[5] = TXT2BYTE_MoCtrlSector; + break; + case MOTION_DETECT_SCROLL: + text[5] = TXT2BYTE_MoCtrlScroll; + break; + default: + snprintf(&text[4],2,"%u",settingsGetPointer()->MotionDetection); + break; + } + text[6] = 0; + write_label_var( 30, 700, ME_Y_LINE6, &FontT48, text); + + write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); +} + +void openEdit_Custom(uint8_t line) +{ + set_globalState_Menu_Line(line); + resetMenuEdit(CLUT_MenuPageCustomView); + + switch(line) + { + case 1: + default: + openEdit_Customview2(); + break; + case 2: + openEdit_CustomviewDivemode2(cv_changelist); + break; + case 3: + openEdit_CustomviewDivemode2(cv_changelist_BS); + break; + } +} + +/* Private functions ---------------------------------------------------------*/ +void openEdit_Customview2(void) +{ + refresh_Customviews2(); + + write_field_button(StMCustom1_CViewTimeout, 400, 700, ME_Y_LINE1, &FontT48, ""); + write_field_button(StMCustom1_CViewStandard, 400, 700, ME_Y_LINE2, &FontT48, ""); + + write_field_button(StMCustom1_CornerTimeout, 400, 700, ME_Y_LINE3, &FontT48, ""); + write_field_button(StMCustom1_CornerStandard, 400, 700, ME_Y_LINE4, &FontT48, ""); + +// write_field_button(StMCustom1_ExtraDisplay, 400, 700, ME_Y_LINE5, &FontT48, ""); +// write_field_button(StMCustom1_MotionCtrl, 400, 700, ME_Y_LINE6, &FontT48, ""); + + setEvent(StMCustom1_CViewTimeout, (uint32_t)OnAction_CViewTimeout); + setEvent(StMCustom1_CViewStandard, (uint32_t)OnAction_CViewStandard); + + setEvent(StMCustom1_CornerTimeout, (uint32_t)OnAction_CornerTimeout); + setEvent(StMCustom1_CornerStandard, (uint32_t)OnAction_CornerStandard); + +// setEvent(StMCustom1_ExtraDisplay, (uint32_t)OnAction_ExtraDisplay); +// setEvent(StMCustom1_MotionCtrl, (uint32_t)OnAction_MotionCtrl); +} + +char customview_TXT2BYTE_helper2(uint8_t customViewId) +{ + char text = 0; + + switch(customViewId) + { + case CVIEW_sensors: + text = TXT2BYTE_O2monitor; + break; + case CVIEW_sensors_mV: + text = TXT2BYTE_O2voltage; + break; + case CVIEW_Compass: + text = TXT2BYTE_Compass; + break; + case CVIEW_Decolist: + case CVIEW_T3_Decostop: + text = TXT2BYTE_Decolist; + break; + case CVIEW_Tissues: + text = TXT2BYTE_Tissues; + break; + case CVIEW_Profile: + text = TXT2BYTE_Profile; + break; + case CVIEW_Gaslist: + text = TXT2BYTE_Gaslist; + break; + case CVIEW_EADTime: + text = TXT2BYTE_Info; + break; + case CVIEW_SummaryOfLeftCorner: + text = TXT2BYTE_Summary; + break; + case CVIEW_noneOrDebug: + text = TXT2BYTE_DispNoneDbg; + break; + case CVIEW_T3_MaxDepth: + text = TXT2BYTE_MaxDepth; + break; + case CVIEW_T3_StopWatch: + text = TXT2BYTE_Stopwatch; + break; + case CVIEW_T3_TTS: + text = TXT2BYTE_TTS; + break; + case CVIEW_T3_ppO2andGas: + text = TXT2BYTE_ppoNair; + break; + case CVIEW_T3_Navigation: + text = TXT2BYTE_Navigation; + break; + case CVIEW_T3_DepthData: + text = TXT2BYTE_DepthData; + break; + default: + break; + } + return text; +} + + +uint8_t OnAction_CViewTimeout2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) +{ + uint8_t value; + value = settingsGetPointer()->tX_customViewTimeout; + + if(value < 5) + value = 5; + else if(value < 10) + value = 10; + else if(value < 15) + value = 15; + else if(value < 20) + value = 20; + else if(value < 30) + value = 30; + else if(value < 45) + value = 45; + else if(value < 60) + value = 60; + else + value = 0; + + settingsGetPointer()->tX_customViewTimeout = value; + return UPDATE_DIVESETTINGS; +} + + +uint8_t OnAction_CViewStandard2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) +{ + uint8_t newValue; + switch(settingsGetPointer()->tX_customViewPrimary) + { + case CVIEW_sensors: + newValue = CVIEW_sensors_mV; + break; + case CVIEW_sensors_mV: + newValue = CVIEW_Compass; + break; + case CVIEW_Compass: + newValue = CVIEW_Decolist; + break; + case CVIEW_Decolist: + newValue = CVIEW_Tissues; + break; + case CVIEW_Tissues: + newValue = CVIEW_Profile; + break; + case CVIEW_Profile: + newValue = CVIEW_Gaslist; + break; + case CVIEW_Gaslist: + newValue = CVIEW_EADTime; + break; + case CVIEW_EADTime: + newValue = CVIEW_SummaryOfLeftCorner; + break; + case CVIEW_SummaryOfLeftCorner: + newValue = CVIEW_noneOrDebug; + break; + case CVIEW_noneOrDebug: + default: + newValue = CVIEW_sensors; + break; + } + settingsGetPointer()->tX_customViewPrimary = newValue; + return UPDATE_DIVESETTINGS; +} + + +uint8_t OnAction_CornerTimeout2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) +{ + uint8_t value; + value = settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout; + + if(value < 5) + value = 5; + else if(value < 10) + value = 10; + else if(value < 15) + value = 15; + else if(value < 20) + value = 20; + else if(value < 30) + value = 30; + else if(value < 45) + value = 45; + else if(value < 60) + value = 60; + else + value = 0; + + settingsGetPointer()->tX_userselectedLeftLowerCornerTimeout = value; + return UPDATE_DIVESETTINGS; +} + + +uint8_t OnAction_CornerStandard2(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) +{ + uint8_t value; + value = settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary; + + value += 1; + + if(value >= LLC_END) + value = 0; + + settingsGetPointer()->tX_userselectedLeftLowerCornerPrimary = value; + return UPDATE_DIVESETTINGS; +} + + +uint8_t OnAction_Customview_Toggle(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) +{ + + uint8_t line = 0; + SSettings *pSettings = settingsGetPointer(); + + switch(editId) + { + case StMCustom2_CViewSelection1: line = 1; + break; + case StMCustom2_CViewSelection2: line = 2; + break; + case StMCustom2_CViewSelection3: line = 3; + break; + case StMCustom2_CViewSelection4: line = 4; + break; + case StMCustom2_CViewSelection5: line = 5; + break; + + default: + break; + } + if(pcv_curchangelist == cv_changelist) + { + pSettings->cv_configuration ^= 1 << (pcv_curchangelist[customviewsSubpage * 5 + line-1]); + if(t7_GetEnabled_customviews() == 0) + { + pSettings->cv_configuration ^= (1 << CVIEW_noneOrDebug); + } + } + else + { + pSettings->cv_config_BigScreen ^= 1 << (pcv_curchangelist[customviewsSubpage * 5 + line-1]); + if(t3_GetEnabled_customviews() == 0) + { + pSettings->cv_config_BigScreen ^= (1 << CVIEW_noneOrDebug); + } + } + return UPDATE_DIVESETTINGS; +} + + +uint8_t OnAction_Customview_NextPage(uint32_t editId, uint8_t blockNumber, uint8_t digitNumber, uint8_t digitContent, uint8_t action) +{ + uint8_t id_next = 0; + customviewsSubpage++; + if(customviewsSubpage == customviewsSubpageMax) + { + customviewsSubpage = 0; + } + resetMenuEdit(CLUT_MenuPageCustomView); /* rebuild page */ + openEdit_CustomviewDivemode2(pcv_curchangelist); + + tMenuEdit_select(StMCustom2_CViewSelection6); + return UPDATE_DIVESETTINGS; +} + +void openEdit_CustomviewDivemode2(const uint8_t* pcv_changelist) +{ + + SSettings *pSettings = settingsGetPointer(); + char text[MAX_PAGE_TEXTSIZE]; + uint8_t textPointer = 0; + uint32_t id; + + uint8_t i; + + customviewsSubpageMax = (tHome_getNumberOfAvailableCVs(pcv_changelist) / CV_PER_PAGE) + 1; + pcv_curchangelist = pcv_changelist; + + CustomviewDivemode2_refresh(pcv_changelist); + + + text[0] = '\001'; + text[1] = TXT_2BYTE; + text[2] = TXT2BYTE_SelectCustomviews; + text[3] = 0; + write_topline(text); + + for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */ + { + textPointer = 0; + id = pcv_changelist[customviewsSubpage * 5 + i]; + if((id == CVIEW_END) || (id == CVIEW_T3_END)) /* last list item? */ + { + break; + } + else + { + if(pcv_changelist == cv_changelist) + { + text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_configuration,id); + } + else + { + text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_config_BigScreen,id); + } + text[textPointer++] = ' '; + textPointer += snprintf(&text[textPointer], 60, "%c%c\n\r", TXT_2BYTE, customview_TXT2BYTE_helper2(id)); + + switch(i) + { + case 0: write_field_button(StMCustom2_CViewSelection1, 30, 800, ME_Y_LINE1, &FontT48, ""); + break; + case 1: write_field_button(StMCustom2_CViewSelection2, 30, 800, ME_Y_LINE2, &FontT48, ""); + break; + case 2: write_field_button(StMCustom2_CViewSelection3, 30, 800, ME_Y_LINE3, &FontT48, ""); + break; + case 3: write_field_button(StMCustom2_CViewSelection4, 30, 800, ME_Y_LINE4, &FontT48, ""); + break; + case 4: write_field_button(StMCustom2_CViewSelection5, 30, 800, ME_Y_LINE5, &FontT48, ""); + break; + default: + break; + } + } + } + // setEvent(StMCustom2_CViewSelection1, (uint32_t)OnAction_Customview_Toggle); + + + if(customviewsSubpageMax != 1) + { + textPointer = 0; + text[textPointer++] = TXT_2BYTE; + text[textPointer++] = TXT2BYTE_ButtonNext; + text[textPointer] = 0; + write_field_button(StMCustom2_CViewSelection6, 30, 800, ME_Y_LINE6, &FontT48, text); + } + + /* because of the ID handling inside of the functions, all buttons needs to be assigned before the events may be set => have the same loop twice */ + for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */ + { + id = pcv_changelist[customviewsSubpage * 5 + i]; + if((id == CVIEW_END) || (id == CVIEW_T3_END)) /* last list item? */ + { + break; + } + else + { + switch(i) + { + case 0: setEvent(StMCustom2_CViewSelection1, (uint32_t)OnAction_Customview_Toggle); + break; + case 1: setEvent(StMCustom2_CViewSelection2, (uint32_t)OnAction_Customview_Toggle); + break; + case 2: setEvent(StMCustom2_CViewSelection3, (uint32_t)OnAction_Customview_Toggle); + break; + case 3: setEvent(StMCustom2_CViewSelection4, (uint32_t)OnAction_Customview_Toggle); + break; + case 4: setEvent(StMCustom2_CViewSelection5, (uint32_t)OnAction_Customview_Toggle); + break; + + default: + break; + } + + } + } + if(customviewsSubpageMax != 1) + { + setEvent(StMCustom2_CViewSelection6,(uint32_t)OnAction_Customview_NextPage); + } + for(;i<5;i++) /* clear empty lines in case menu shows less than 5 entries */ + { + switch(i) + { + case 0: write_label_var( 30, 800, ME_Y_LINE1, &FontT48, ""); + break; + case 1: write_label_var( 30, 800, ME_Y_LINE2, &FontT48, ""); + break; + case 2: write_label_var( 30, 800, ME_Y_LINE3, &FontT48, ""); + break; + case 3: write_label_var( 30, 800, ME_Y_LINE4, &FontT48, ""); + break; + case 4: write_label_var( 30, 800, ME_Y_LINE5, &FontT48, ""); + break; + default: + break; + }; + } + + + write_buttonTextline(TXT2BYTE_ButtonBack,TXT2BYTE_ButtonEnter,TXT2BYTE_ButtonNext); +} + + +void CustomviewDivemode2_refresh() +{ + SSettings *pSettings = settingsGetPointer(); + char text[MAX_PAGE_TEXTSIZE]; + uint8_t textPointer = 0; + uint32_t id; + + uint8_t i; + + text[0] = '\001'; + text[1] = TXT_2BYTE; + text[2] = TXT2BYTE_SelectCustomviews; + text[3] = 0; + write_topline(text); + + + for(i=0; i<5;i++) /* fill maximum 5 items and leave last one for sub page selection */ + { + textPointer = 0; + id = pcv_curchangelist[customviewsSubpage * 5 + i]; + if((id == CVIEW_END) || (id == CVIEW_T3_END)) /* last list item? */ + { + break; + } + else + { + if(pcv_curchangelist == cv_changelist) + { + text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_configuration,id); + } + else + { + text[textPointer++] = '\006' - CHECK_BIT_THOME(pSettings->cv_config_BigScreen,id); + } + text[textPointer++] = ' '; + textPointer += snprintf(&text[textPointer], 60, "%c%c\n\r", TXT_2BYTE, customview_TXT2BYTE_helper2(id)); + + switch(i) + { + case 0: write_label_var( 30, 800, ME_Y_LINE1, &FontT48, text); + break; + case 1: write_label_var( 30, 800, ME_Y_LINE2, &FontT48, text); + break; + case 2: write_label_var( 30, 800, ME_Y_LINE3, &FontT48, text); + break; + case 3: write_label_var( 30, 800, ME_Y_LINE4, &FontT48, text); + break; + case 4: write_label_var( 30, 800, ME_Y_LINE5, &FontT48, text); + break; + default: + break; + } + } + } + if(customviewsSubpageMax != 1) + { + textPointer = 0; + text[textPointer++] = TXT_2BYTE; + text[textPointer++] = TXT2BYTE_ButtonNext; + text[textPointer] = 0; + write_label_var( 30, 800, ME_Y_LINE6, &FontT48, text); + } +} diff -r 06b21f1e47a5 -r 998529b3e142 Discovery/Src/text_multilanguage.c --- a/Discovery/Src/text_multilanguage.c Sun Aug 30 17:14:31 2020 +0200 +++ b/Discovery/Src/text_multilanguage.c Sun Aug 30 17:19:23 2020 +0200 @@ -1258,26 +1258,11 @@ static uint8_t text_ES_ExtraDisplay[] = "Letras grandes"; // Menu SYS2 -#ifdef ENABLE_BIGFONT_VX -static uint8_t text_EN_ExtraBigFont[] = "classic"; -static uint8_t text_DE_ExtraBigFont[] = "klassisch"; -static uint8_t text_FR_ExtraBigFont[] = "classic"; -static uint8_t text_IT_ExtraBigFont[] = "classic"; -static uint8_t text_ES_ExtraBigFont[] = "classic"; - -static uint8_t text_EN_ExtraBigFontV2[] = "V2"; -static uint8_t text_DE_ExtraBigFontV2[] = "V2"; -static uint8_t text_FR_ExtraBigFontV2[] = "V2"; -static uint8_t text_IT_ExtraBigFontV2[] = "V2"; -static uint8_t text_ES_ExtraBigFontV2[] = "V2"; - -#else static uint8_t text_EN_ExtraBigFont[] = "yes"; static uint8_t text_DE_ExtraBigFont[] = "ja"; static uint8_t text_FR_ExtraBigFont[] = "si"; static uint8_t text_IT_ExtraBigFont[] = "si"; static uint8_t text_ES_ExtraBigFont[] = "si"; -#endif // Menu SYS2 (future feature) static uint8_t text_EN_ExtraDecoGame[] = "Deco game"; @@ -1579,6 +1564,36 @@ static uint8_t text_IT_FlipDisplay[] = ""; static uint8_t text_ES_FlipDisplay[] = ""; +static uint8_t text_EN_SelectCustom[] = "Data views"; +static uint8_t text_DE_SelectCustom[] = "Auswahl Datenanzeige"; +static uint8_t text_FR_SelectCustom[] = ""; +static uint8_t text_IT_SelectCustom[] = ""; +static uint8_t text_ES_SelectCustom[] = ""; + +static uint8_t text_EN_SelectBigFont[] = "Bigfont data views"; +static uint8_t text_DE_SelectBigFont[] = "Grosschrift Daten"; +static uint8_t text_FR_SelectBigFont[] = ""; +static uint8_t text_IT_SelectBigFont[] = ""; +static uint8_t text_ES_SelectBigFont[] = ""; + +static uint8_t text_EN_ppo2Air[] = "PPO2 and active gas"; +static uint8_t text_DE_ppo2Air[] = "PPO2 und aktives Atemgas"; +static uint8_t text_FR_ppo2Air[] = ""; +static uint8_t text_IT_ppo2Air[] = ""; +static uint8_t text_ES_ppo2Air[] = ""; + +static uint8_t text_EN_Navigation[] = "Compass and stop watch"; +static uint8_t text_DE_Navigation[] = "Kompass und Stoppuhr"; +static uint8_t text_FR_Navigation[] = ""; +static uint8_t text_IT_Navigation[] = ""; +static uint8_t text_ES_Navigation[] = ""; + +static uint8_t text_EN_DepthData[] = "Average and max depth"; +static uint8_t text_DE_DepthData[] = "Mittlere und maximale Tiefe"; +static uint8_t text_FR_DepthData[] = ""; +static uint8_t text_IT_DepthData[] = ""; +static uint8_t text_ES_DepthData[] = ""; + /* Lookup Table -------------------------------------------------------------*/ const tText text_array[] = @@ -1769,9 +1784,6 @@ {(uint8_t)TXT2BYTE_DiveResetAvgQ, {text_EN_DiveResetAvgQ, text_DE_DiveResetAvgQ, text_FR_DiveResetAvgQ, text_IT_DiveResetAvgQ, text_ES_DiveResetAvgQ}}, {(uint8_t)TXT2BYTE_ExtraDisplay, {text_EN_ExtraDisplay, text_DE_ExtraDisplay, text_FR_ExtraDisplay, text_IT_ExtraDisplay, text_ES_ExtraDisplay}}, {(uint8_t)TXT2BYTE_ExtraBigFont, {text_EN_ExtraBigFont, text_DE_ExtraBigFont, text_FR_ExtraBigFont, text_IT_ExtraBigFont, text_ES_ExtraBigFont}}, -#ifdef ENABLE_BIGFONT_VX - {(uint8_t)TXT2BYTE_ExtraBigFontV2, {text_EN_ExtraBigFontV2, text_DE_ExtraBigFontV2, text_FR_ExtraBigFontV2, text_IT_ExtraBigFontV2, text_ES_ExtraBigFontV2}}, -#endif {(uint8_t)TXT2BYTE_ExtraDecoGame, {text_EN_ExtraDecoGame, text_DE_ExtraDecoGame, text_FR_ExtraDecoGame, text_IT_ExtraDecoGame, text_ES_ExtraDecoGame}}, {(uint8_t)TXT2BYTE_ExtraNone, {text_EN_ExtraNone, text_DE_ExtraNone, text_FR_ExtraNone, text_IT_ExtraNone, text_ES_ExtraNone}}, {(uint8_t)TXT2BYTE_MotionCtrl, {text_EN_MotionCtrl, text_DE_MotionCtrl, text_FR_MotionCtrl, text_IT_MotionCtrl, text_ES_MotionCtrl}}, @@ -1802,4 +1814,14 @@ {(uint8_t)TXT2BYTE_FLIPDISPLAY, {text_EN_FlipDisplay, text_DE_FlipDisplay, text_FR_FlipDisplay, text_IT_FlipDisplay, text_ES_FlipDisplay}}, + {(uint8_t)TXT2BYTE_SelectCustomviews,{text_EN_SelectCustom, text_DE_SelectCustom, text_FR_SelectCustom, text_IT_SelectCustom, text_ES_SelectCustom}}, + {(uint8_t)TXT2BYTE_SelectBigFont, {text_EN_SelectBigFont, text_DE_SelectBigFont, text_FR_SelectBigFont, text_IT_SelectBigFont, text_ES_SelectBigFont}}, + {(uint8_t)TXT2BYTE_MaxDepth, {text_EN_MaxDepth, text_DE_MaxDepth, text_FR_MaxDepth, text_IT_MaxDepth, text_ES_MaxDepth}}, + {(uint8_t)TXT2BYTE_Stopwatch, {text_EN_Stopwatch, text_DE_Stopwatch, text_FR_Stopwatch, text_IT_Stopwatch, text_ES_Stopwatch}}, + {(uint8_t)TXT2BYTE_TTS, {text_EN_TTS, text_DE_TTS, text_FR_TTS, text_IT_TTS, text_ES_TTS}}, + {(uint8_t)TXT2BYTE_ppoNair, {text_EN_ppo2Air, text_DE_ppo2Air, text_FR_ppo2Air, text_IT_ppo2Air, text_ES_ppo2Air}}, + {(uint8_t)TXT2BYTE_Navigation, {text_EN_Navigation, text_DE_Navigation, text_FR_Navigation, text_IT_Navigation, text_ES_Navigation}}, + {(uint8_t)TXT2BYTE_DepthData, {text_EN_DepthData, text_DE_DepthData, text_FR_DepthData, text_IT_DepthData, text_ES_DepthData}}, + + };