Skip to content

Commit

Permalink
add language settings
Browse files Browse the repository at this point in the history
  • Loading branch information
You69Man committed Dec 9, 2023
1 parent 0f302a8 commit cc010d2
Show file tree
Hide file tree
Showing 11 changed files with 37 additions and 15 deletions.
10 changes: 7 additions & 3 deletions src/config/settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,7 @@ typedef struct {
//uint16_t wakeUp;
//uint16_t sleepAt;
uint8_t contrast;
uint8_t language;
uint8_t disp_data;
uint8_t disp_clk;
uint8_t disp_cs;
Expand Down Expand Up @@ -458,8 +459,9 @@ class settings {
memset(&mCfg.inst, 0, sizeof(cfgInst_t));

mCfg.plugin.display.pwrSaveAtIvOffline = false;
mCfg.plugin.display.contrast = 60;
mCfg.plugin.display.screenSaver = 1; // default: 1 .. pixelshift for OLED for downward compatibility
mCfg.plugin.display.contrast = 60;
mCfg.plugin.display.language = 0; // 0 .. EN, 1 .. GE, 2 .. FR
mCfg.plugin.display.rot = 0;
mCfg.plugin.display.disp_data = DEF_PIN_OFF; // SDA
mCfg.plugin.display.disp_clk = DEF_PIN_OFF; // SCL
Expand Down Expand Up @@ -675,10 +677,11 @@ class settings {
disp[F("type")] = mCfg.plugin.display.type;
disp[F("pwrSafe")] = (bool)mCfg.plugin.display.pwrSaveAtIvOffline;
disp[F("screenSaver")] = mCfg.plugin.display.screenSaver;
disp[F("contrast")] = mCfg.plugin.display.contrast;
disp[F("dispLanguage")] = mCfg.plugin.display.language;
disp[F("rotation")] = mCfg.plugin.display.rot;
//disp[F("wake")] = mCfg.plugin.display.wakeUp;
//disp[F("sleep")] = mCfg.plugin.display.sleepAt;
disp[F("contrast")] = mCfg.plugin.display.contrast;
disp[F("data")] = mCfg.plugin.display.disp_data;
disp[F("clock")] = mCfg.plugin.display.disp_clk;
disp[F("cs")] = mCfg.plugin.display.disp_cs;
Expand All @@ -691,10 +694,11 @@ class settings {
getVal<uint8_t>(disp, F("type"), &mCfg.plugin.display.type);
getVal<bool>(disp, F("pwrSafe"), &mCfg.plugin.display.pwrSaveAtIvOffline);
getVal<uint8_t>(disp, F("screenSaver"), &mCfg.plugin.display.screenSaver);
getVal<uint8_t>(disp, F("contrast"), &mCfg.plugin.display.contrast);
getVal<uint8_t>(disp, F("dispLanguage"), &mCfg.plugin.display.language);
getVal<uint8_t>(disp, F("rotation"), &mCfg.plugin.display.rot);
//mCfg.plugin.display.wakeUp = disp[F("wake")];
//mCfg.plugin.display.sleepAt = disp[F("sleep")];
getVal<uint8_t>(disp, F("contrast"), &mCfg.plugin.display.contrast);
getVal<uint8_t>(disp, F("data"), &mCfg.plugin.display.disp_data);
getVal<uint8_t>(disp, F("clock"), &mCfg.plugin.display.disp_clk);
getVal<uint8_t>(disp, F("cs"), &mCfg.plugin.display.disp_cs);
Expand Down
2 changes: 1 addition & 1 deletion src/plugins/Display/Display.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class Display {
default: mMono = NULL; break;
}
if(mMono) {
mMono->config(mCfg->pwrSaveAtIvOffline, mCfg->screenSaver, mCfg->contrast);
mMono->config(mCfg->pwrSaveAtIvOffline, mCfg->screenSaver, mCfg->contrast, mCfg->language);
mMono->init(mCfg->type, mCfg->rot, mCfg->disp_cs, mCfg->disp_dc, 0xff, mCfg->disp_clk, mCfg->disp_data, &mDisplayData);
}

Expand Down
3 changes: 2 additions & 1 deletion src/plugins/Display/Display_Mono.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ class DisplayMono {
DisplayMono() {};

virtual void init(uint8_t type, uint8_t rot, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) = 0;
virtual void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) = 0;
virtual void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) = 0;
virtual void disp(void) = 0;

// Common loop function, manages display on/off functions for powersave and screensaver with motionsensor
Expand Down Expand Up @@ -72,6 +72,7 @@ class DisplayMono {
bool mEnPowerSave;
uint8_t mScreenSaver = 1; // 0 .. off; 1 .. pixelShift; 2 .. motionsensor
uint8_t mLuminance;
uint8_t mLanguage;

uint8_t mLoopCnt;
uint8_t mLineXOffsets[5] = {};
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/Display/Display_Mono_128X32.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ class DisplayMono128X32 : public DisplayMono {
mExtra = 0;
}

void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) {
void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) {
mEnPowerSave = enPowerSave;
mScreenSaver = screenSaver;
mLuminance = lum;
mLanguage = lang;
}

void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) {
Expand Down
5 changes: 3 additions & 2 deletions src/plugins/Display/Display_Mono_128X64.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ class DisplayMono128X64 : public DisplayMono {
mExtra = 0;
}

void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) {
void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) {
mEnPowerSave = enPowerSave;
mScreenSaver = screenSaver;
mLuminance = lum;
mLanguage = lang;
}

void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) {
Expand Down Expand Up @@ -75,7 +76,7 @@ class DisplayMono128X64 : public DisplayMono {

// print Date and time
if (0 != mDisplayData->utcTs)
printText(ah::getDateTimeStrShort_i18n(gTimezone.toLocal(mDisplayData->utcTs), ah::LANG_GE).c_str(), l_Time, 0xff);
printText(ah::getDateTimeStrShort_i18n(gTimezone.toLocal(mDisplayData->utcTs), (ah::lang) mLanguage).c_str(), l_Time, 0xff);

// dynamic status bar, alternatively:
// print ip address
Expand Down
3 changes: 2 additions & 1 deletion src/plugins/Display/Display_Mono_64X48.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,11 @@ class DisplayMono64X48 : public DisplayMono {
mExtra = 0;
}

void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) {
void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) {
mEnPowerSave = enPowerSave;
mScreenSaver = screenSaver;
mLuminance = lum;
mLanguage = lang;
}

void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) {
Expand Down
5 changes: 3 additions & 2 deletions src/plugins/Display/Display_Mono_84X48.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,11 @@ class DisplayMono84X48 : public DisplayMono {
mExtra = 0;
}

void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum) {
void config(bool enPowerSave, uint8_t screenSaver, uint8_t lum, uint8_t lang) {
mEnPowerSave = enPowerSave;
mScreenSaver = screenSaver;
mLuminance = lum;
mLanguage = lang;
}

void init(uint8_t type, uint8_t rotation, uint8_t cs, uint8_t dc, uint8_t reset, uint8_t clock, uint8_t data, DisplayData *displayData) {
Expand Down Expand Up @@ -59,7 +60,7 @@ class DisplayMono84X48 : public DisplayMono {

// print Date and time
if (0 != mDisplayData->utcTs)
printText(ah::getDateTimeStrShort_i18n(gTimezone.toLocal(mDisplayData->utcTs), ah::LANG_GE).c_str(), l_Time, 0xff);
printText(ah::getDateTimeStrShort_i18n(gTimezone.toLocal(mDisplayData->utcTs), (ah::lang) mLanguage).c_str(), l_Time, 0xff);

// alternatively:
// print ip address
Expand Down
6 changes: 3 additions & 3 deletions src/utils/helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ static Timezone gTimezone(CEST, CET);

namespace ah {
enum lang {
LANG_GE,
LANG_EN,
LANG_FR
LANG_EN=0,
LANG_GE=1,
LANG_FR=2
};
void ip2Arr(uint8_t ip[], const char *ipStr);
void ip2Char(uint8_t ip[], char *str);
Expand Down
3 changes: 2 additions & 1 deletion src/web/RestApi.h
Original file line number Diff line number Diff line change
Expand Up @@ -579,8 +579,9 @@ class RestApi {
obj[F("disp_typ")] = (uint8_t)mConfig->plugin.display.type;
obj[F("disp_pwr")] = (bool)mConfig->plugin.display.pwrSaveAtIvOffline;
obj[F("disp_screensaver")] = (uint8_t)mConfig->plugin.display.screenSaver;
obj[F("disp_rot")] = (uint8_t)mConfig->plugin.display.rot;
obj[F("disp_cont")] = (uint8_t)mConfig->plugin.display.contrast;
obj[F("disp_language")]= (uint8_t)mConfig->plugin.display.language;
obj[F("disp_rot")] = (uint8_t)mConfig->plugin.display.rot;
obj[F("disp_clk")] = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : mConfig->plugin.display.disp_clk;
obj[F("disp_data")] = (mConfig->plugin.display.type == 0) ? DEF_PIN_OFF : mConfig->plugin.display.disp_data;
obj[F("disp_cs")] = (mConfig->plugin.display.type < 3) ? DEF_PIN_OFF : mConfig->plugin.display.disp_cs;
Expand Down
11 changes: 11 additions & 0 deletions src/web/html/setup.html
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,7 @@
<div class="col-12 col-sm-3 my-2">Luminance</div>
<div class="col-12 col-sm-9"><input type="number" name="disp_cont" min="0" max="255"></select></div>
</div>
<div id="dispLanguage"></div>
<p class="des">Pinout</p>
<div id="dispPins"></div>
<div id="pirPin"></div>
Expand Down Expand Up @@ -1004,6 +1005,16 @@
])
);

var opts2 = [[0, "english"], [1, "german"], [2, "french"]];
var language_sel = sel("disp_language", opts2, obj["disp_language"]);
language_sel.id = 'disp_language';
document.getElementById("dispLanguage").append(
ml("div", {class: "row mb-3"}, [
ml("div", {class: "col-12 col-sm-3 my-2"}, "Language"),
ml("div", {class: "col-12 col-sm-9"}, language_sel)
])
);

var esp8266pirpins = [[255, "off / default"],
[17, "A0"]];
document.getElementById("pirPin").append(
Expand Down
1 change: 1 addition & 0 deletions src/web/web.h
Original file line number Diff line number Diff line change
Expand Up @@ -566,6 +566,7 @@ class Web {
// display
mConfig->plugin.display.pwrSaveAtIvOffline = (request->arg("disp_pwr") == "on");
mConfig->plugin.display.screenSaver = request->arg("disp_screensaver").toInt();
mConfig->plugin.display.language = request->arg("disp_language").toInt();
mConfig->plugin.display.rot = request->arg("disp_rot").toInt();
mConfig->plugin.display.type = request->arg("disp_typ").toInt();
mConfig->plugin.display.contrast = (mConfig->plugin.display.type == 0) ? 60 : request->arg("disp_cont").toInt();
Expand Down

0 comments on commit cc010d2

Please sign in to comment.