parent
2eefdf6325
commit
f5d8405bdf
@ -0,0 +1,144 @@ |
|||||||
|
/**
|
||||||
|
* TODO file description |
||||||
|
*/ |
||||||
|
//
|
||||||
|
// Created by MightyPork on 2023/04/09.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <stdio.h> |
||||||
|
#include <string.h> |
||||||
|
#include "app_gui.h" |
||||||
|
#include "gui_event.h" |
||||||
|
#include "ds_rtc.h" |
||||||
|
#include "app_io.h" |
||||||
|
#include "app_config.h" |
||||||
|
|
||||||
|
static int page = 1; |
||||||
|
|
||||||
|
#define PAGECOUNT 3 |
||||||
|
|
||||||
|
static struct AppConfig scratch; |
||||||
|
|
||||||
|
/** Clear the top 3 lines in the LCD - this fixes some problems with utf8 allocations
|
||||||
|
* (char still held by a line later overwritten) */ |
||||||
|
static void clear_menu_lines(); |
||||||
|
|
||||||
|
void screen_settings(GuiEvent event) |
||||||
|
{ |
||||||
|
char buf[100]; |
||||||
|
switch (event) { |
||||||
|
case GUI_EVENT_SCREEN_INIT: |
||||||
|
page = 1; |
||||||
|
memcpy(&scratch, &app_config, APPCONFIG_SIZE); |
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_PAINT: |
||||||
|
switch (page) { |
||||||
|
case 1: |
||||||
|
snprintf(buf, 100, "1. Program=%s", scratch.scheduler_enable ? "ZAP" : "VYP"); |
||||||
|
LcdBuffer_Write(&lcd, 0, 0, buf); |
||||||
|
LcdBuffer_Write(&lcd, 1, 0, "2. Upravit program"); |
||||||
|
LcdBuffer_Write(&lcd, 2, 0, "3. Nastavit čas"); |
||||||
|
break; |
||||||
|
|
||||||
|
case 2: |
||||||
|
LcdBuffer_Write(&lcd, 0, 0, "1. Délka zálivky"); |
||||||
|
LcdBuffer_Write(&lcd, 1, 0, "2. Kompenzace tlaku"); |
||||||
|
break; |
||||||
|
|
||||||
|
case 3: |
||||||
|
snprintf(buf, 100, "1. Blok.vlhkostí=%s", scratch.moisture_enable ? "ZAP" : "VYP"); |
||||||
|
LcdBuffer_Write(&lcd, 0, 0, buf); |
||||||
|
LcdBuffer_Write(&lcd, 1, 0, "2. Kalibrace vlhkom."); |
||||||
|
LcdBuffer_Write(&lcd, 2, 0, "3. Nastavit práh"); |
||||||
|
break; |
||||||
|
} |
||||||
|
|
||||||
|
snprintf(buf, 100, "⊛←%d/%d→¤ 🅰Ulož 🅳Zruš", page, PAGECOUNT); |
||||||
|
LcdBuffer_Write(&lcd, 3, 0, buf); |
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_KEY_B: |
||||||
|
case GUI_EVENT_KEY_STAR: |
||||||
|
if (page > 1) { |
||||||
|
page--; |
||||||
|
clear_menu_lines(); |
||||||
|
request_paint(); |
||||||
|
} |
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_KEY_C: |
||||||
|
case GUI_EVENT_KEY_HASH: |
||||||
|
if (page < PAGECOUNT) { |
||||||
|
page++; |
||||||
|
clear_menu_lines(); |
||||||
|
request_paint(); |
||||||
|
} |
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_KEY_A: // SAVE
|
||||||
|
memcpy(&app_config, &scratch, APPCONFIG_SIZE); |
||||||
|
appconfig_save(); |
||||||
|
switch_screen(screen_home, true); |
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_KEY_D: // CANCEL
|
||||||
|
switch_screen(screen_home, true); |
||||||
|
break; |
||||||
|
|
||||||
|
default: |
||||||
|
switch (page) { |
||||||
|
case 1: |
||||||
|
switch (event) { |
||||||
|
case GUI_EVENT_KEY_1: // Program Zap/VYP
|
||||||
|
scratch.scheduler_enable ^= 1; |
||||||
|
request_paint(); |
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_KEY_2: // Upravit program
|
||||||
|
// TODO
|
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_KEY_3: // Nastavit cas
|
||||||
|
// TODO
|
||||||
|
break; |
||||||
|
} |
||||||
|
break; |
||||||
|
|
||||||
|
case 2: |
||||||
|
switch (event) { |
||||||
|
case GUI_EVENT_KEY_1: // Délka zálivky
|
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_KEY_2: // Kompenzace tlaku
|
||||||
|
// TODO
|
||||||
|
break; |
||||||
|
} |
||||||
|
break; |
||||||
|
|
||||||
|
case 3: |
||||||
|
switch (event) { |
||||||
|
case GUI_EVENT_KEY_1: // Blokace vlhkosti Zap/VYP
|
||||||
|
scratch.moisture_enable ^= 1; |
||||||
|
request_paint(); |
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_KEY_2: // Kalibrace vlhkomeru
|
||||||
|
// TODO
|
||||||
|
break; |
||||||
|
|
||||||
|
case GUI_EVENT_KEY_3: // Nastavit prah
|
||||||
|
// TODO
|
||||||
|
break; |
||||||
|
} |
||||||
|
break; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
static void clear_menu_lines() |
||||||
|
{ |
||||||
|
LcdBuffer_Write(&lcd, 0, 0, " "); |
||||||
|
LcdBuffer_Write(&lcd, 1, 0, " "); |
||||||
|
LcdBuffer_Write(&lcd, 2, 0, " "); |
||||||
|
} |
Loading…
Reference in new issue