* Dolphin idle screen: Cleanup of debug views; Hold [down] to open debug view; Sequential input for unlocking; * Lock screen popup, WIP * Fix reverse modulus * Lock popup added * Dolphin: timer for handling UI animation sequences * Allow tick events to be discarded on queue overflow and prevent timer service from crash Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			77 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include <stdint.h>
 | 
						|
#include <stdbool.h>
 | 
						|
#include <gui/canvas.h>
 | 
						|
#include <input/input.h>
 | 
						|
#include <furi.h>
 | 
						|
 | 
						|
#ifndef MAX
 | 
						|
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef MIN
 | 
						|
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef CLAMP
 | 
						|
#define CLAMP(x, upper, lower) (MIN(upper, MAX(x, lower)))
 | 
						|
#endif
 | 
						|
 | 
						|
// Idle screen
 | 
						|
typedef enum {
 | 
						|
    DolphinViewIdleMain,
 | 
						|
    DolphinViewFirstStart,
 | 
						|
    DolphinViewStats,
 | 
						|
    DolphinViewHwMismatch,
 | 
						|
    DolphinViewLockMenu,
 | 
						|
} DolphinViewIdle;
 | 
						|
 | 
						|
// Debug info
 | 
						|
typedef enum {
 | 
						|
    DolphinViewStatsFw,
 | 
						|
    DolphinViewStatsBoot,
 | 
						|
    DolphinViewStatsMeta,
 | 
						|
    DolphinViewStatsTotalCount,
 | 
						|
} DolphinViewStatsScreens;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    uint32_t page;
 | 
						|
} DolphinViewFirstStartModel;
 | 
						|
 | 
						|
void dolphin_view_first_start_draw(Canvas* canvas, void* model);
 | 
						|
bool dolphin_view_first_start_input(InputEvent* event, void* context);
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    uint32_t icounter;
 | 
						|
    uint32_t butthurt;
 | 
						|
    DolphinViewStatsScreens screen;
 | 
						|
} DolphinViewStatsModel;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    uint8_t idx;
 | 
						|
    int8_t door_left_x;
 | 
						|
    int8_t door_right_x;
 | 
						|
    uint8_t exit_timeout;
 | 
						|
    bool locked;
 | 
						|
} DolphinViewLockMenuModel;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    Icon* animation;
 | 
						|
    uint8_t scene_num;
 | 
						|
    uint8_t hint_timeout;
 | 
						|
} DolphinViewMainModel;
 | 
						|
 | 
						|
void dolphin_view_idle_main_draw(Canvas* canvas, void* model);
 | 
						|
bool dolphin_view_idle_main_input(InputEvent* event, void* context);
 | 
						|
 | 
						|
void dolphin_view_idle_up_draw(Canvas* canvas, void* model);
 | 
						|
 | 
						|
void dolphin_view_lockmenu_draw(Canvas* canvas, void* model);
 | 
						|
 | 
						|
void dolphin_view_idle_down_draw(Canvas* canvas, void* model);
 | 
						|
 | 
						|
void dolphin_view_hw_mismatch_draw(Canvas* canvas, void* model);
 | 
						|
 | 
						|
uint32_t dolphin_view_idle_back(void* context);
 |