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