add setupscreen - non working

This commit is contained in:
2022-03-31 13:53:54 +02:00
parent 9fb6338ca8
commit e9582a6dbf
17 changed files with 256 additions and 160 deletions

View File

@@ -0,0 +1,107 @@
#include "screen_main.h"
c_onScreenButton ma20("20m", mA20, LocBottom, BUTTON1);
c_onScreenButton ma200("200m", mA200, LocBottom, BUTTON2);
c_onScreenButton ma1000("1A", mA1000, LocBottom, BUTTON3);
c_onScreenButton mauto("Auto", mAuto, LocBottom, BUTTON4);
c_onScreenButton bsetup("Conf", 5, LocBottom, BUTTON5);
c_onScreenButton errorState("ER", 6, LocRight, &getErrorState);
c_onScreenButton okState("OK", 7, LocRight, &getOkState);
c_onScreenButton openState("Open", 8, LocRight, &getOpenState);
c_onScreenButton wifiState("Wifi", 9, LocRight, &getWifiState);
std::vector<c_onScreenButton*> MainScreen;
const e_displayState thisScreen = e_displayState::mainscreen;
void initDisplayMain(void)
{
log_i("Setup main screen : ");
uint16_t screenwidth = getDisplay()->getDisplayWidth();
uint16_t buttonwidth = ((screenwidth / mLast) - CONTROLLOFFSET * 2 + 1);
uint16_t currentWidth = 0;
uint16_t ypos = getDisplay()->getDisplayHeight() - 1 - CONTROLSLINE_H + 2;
log_i("buttons: screenW=%d, buttonW=%d, ypos=%d", screenwidth, buttonwidth, ypos);
// setup bottom buttons
ma20.begin(currentWidth, ypos, buttonwidth, CONTROLSLINE_H + 6, CONTROLRADIUS);
ma200.begin(currentWidth += (buttonwidth - 1), ypos, buttonwidth, CONTROLSLINE_H + CONTROLRADIUS, CONTROLRADIUS);
ma1000.begin(currentWidth += (buttonwidth - 1), ypos, buttonwidth, CONTROLSLINE_H + CONTROLRADIUS, CONTROLRADIUS);
mauto.begin(currentWidth += (buttonwidth - 1), ypos, buttonwidth, CONTROLSLINE_H + CONTROLRADIUS, CONTROLRADIUS);
bsetup.begin(currentWidth += (buttonwidth - 1), ypos, buttonwidth, CONTROLSLINE_H + CONTROLRADIUS, CONTROLRADIUS);
// setup right side indicators
uint16_t currentYpos = 0;
uint16_t IndicatorXpos = screenwidth - INDICATORWIDTH;
log_i("indicators: indicW=%d, indicH=%d ypos,%d", INDICATORWIDTH, INDICATORHEIGHT, IndicatorXpos);
errorState.begin(IndicatorXpos, currentYpos, INDICATORWIDTH, INDICATORHEIGHT, INDICATORRADIUS);
okState.begin(IndicatorXpos, currentYpos += (INDICATORHEIGHT - 1), INDICATORWIDTH, INDICATORHEIGHT, INDICATORRADIUS);
openState.begin(IndicatorXpos, currentYpos += (INDICATORHEIGHT - 1), INDICATORWIDTH, INDICATORHEIGHT, INDICATORRADIUS);
wifiState.begin(IndicatorXpos, currentYpos += (INDICATORHEIGHT - 1), INDICATORWIDTH, INDICATORHEIGHT, INDICATORRADIUS);
// fill vector
log_i("Store main screen items");
MainScreen.push_back(&ma20);
MainScreen.push_back(&ma200);
MainScreen.push_back(&ma1000);
MainScreen.push_back(&mauto);
MainScreen.push_back(&bsetup);
MainScreen.push_back(&errorState);
MainScreen.push_back(&okState);
MainScreen.push_back(&openState);
MainScreen.push_back(&wifiState);
for (auto &&button : MainScreen)
{
button->setVisible(true);
}
log_i("mainscreen OK");
}
void ScreenMainDrawButtons(void)
{
// draw controlstrip indicators
for (auto &&thismode : MainScreen)
{
thismode->setDisplayState((thismode->getIndex() == (uint8_t)getMeasureMode()));
thismode->drawButton();
}
}
void ScreenMainDrawValues(void)
{
if (getDisplay() == NULL)
{
return;
}
drawDashedHLine(0, 12, 220);
drawDashedVLine(40, 12, 33);
getDisplay()->setFont(FONT8);
getDisplay()->drawStr(5, 8, "Fs:100Hz LP");
getDisplay()->setFont(FONT24);
getDisplay()->setCursor(60, 45);
getDisplay()->printf("%4.2f", getValue());
uint16_t stringwidth = getDisplay()->getStrWidth(drawValue("", getValue(), "").c_str());
getDisplay()->setFont(u8g2_font_8x13_t_symbols);
getDisplay()->drawUTF8(60 + stringwidth + 3, 43, "mΩ");
}
e_displayState ScreenMainHandle(void)
{
for (auto &&i : MainScreen)
{
i->handle();
}
if(bsetup.getState())
{
return e_displayState::setupscreen;
}
return thisScreen;
}