| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #include "Scenes.h"
- static View* view;
- static void TempHum_draw_callback(Canvas* canvas, void* _model) {
- UNUSED(_model);
- //Рисование бара
- canvas_draw_box(canvas, 0, 0, 128, 14);
- canvas_set_color(canvas, ColorWhite);
- canvas_set_font(canvas, FontPrimary);
- canvas_draw_str_aligned(canvas, 64, 7, AlignCenter, AlignCenter, "Unitemp");
- canvas_set_color(canvas, ColorBlack);
- if(app->sensors_count > 0) {
- for(uint8_t i = 0; i < app->sensors_count; i++) {
- canvas_set_font(canvas, FontPrimary);
- canvas_draw_str(canvas, 0, 24 + 10 * i, app->sensors[i]->name);
- canvas_set_font(canvas, FontSecondary);
- if(app->sensors[i]->status != UT_OK && app->sensors[i]->status != UT_EARLYPOOL &&
- app->sensors[i]->status != UT_POLLING) {
- canvas_draw_str(canvas, 96, 24 + 10 * i, "timeout");
- } else {
- char buff[20];
- snprintf(
- buff,
- sizeof(buff),
- "%2.1f*%c/%d%%",
- (double)app->sensors[i]->temp,
- app->settings.unit == CELSIUS ? 'C' : 'F',
- (int8_t)app->sensors[i]->hum);
- canvas_draw_str(canvas, 64, 24 + 10 * i, buff);
- }
- }
- } else {
- canvas_set_font(canvas, FontSecondary);
- if(app->sensors_count == 0) canvas_draw_str(canvas, 0, 24, "Sensors not found");
- }
- }
- bool input_callback(InputEvent* event, void* context) {
- Unitemp* app = context;
- //Вход по короткому нажатию
- if(event->key == InputKeyBack && event->type == InputTypeShort) {
- app->processing = false;
- }
- return true;
- }
- void TempHum_secene_alloc(void) {
- view = view_alloc();
- view_set_context(view, app);
- view_set_draw_callback(view, TempHum_draw_callback);
- view_set_input_callback(view, input_callback);
- view_dispatcher_add_view(app->view_dispatcher, TEMPHUM_VIEW, view);
- }
- void TempHum_secene_free(void) {
- view_free(view);
- }
|