mirror of
https://github.com/suchmememanyskill/CYD-Klipper.git
synced 2026-03-21 05:33:24 +00:00
Vertical UI, round 2
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
#ifdef CYD_SCREEN_DRIVER_ESP32_2432S028R
|
||||
#include "../screen_driver.h"
|
||||
|
||||
#ifdef CYD_SCREEN_VERTICAL
|
||||
#error "Vertical screen not supported with the ESP32_2432S028R driver"
|
||||
#endif
|
||||
|
||||
#include <SPI.h>
|
||||
#include <TFT_eSPI.h>
|
||||
#include "../../conf/global_config.h"
|
||||
|
||||
@@ -1,4 +1,9 @@
|
||||
#ifdef CYD_SCREEN_DRIVER_ESP32_3248S035C
|
||||
#include "../screen_driver.h"
|
||||
|
||||
#ifdef CYD_SCREEN_VERTICAL
|
||||
#error "Vertical screen not supported with the ESP32_3248S035C driver"
|
||||
#endif
|
||||
|
||||
#include "lvgl.h"
|
||||
#include <TAMC_GT911.h>
|
||||
|
||||
@@ -33,6 +33,14 @@ void lv_screen_intercept(_lv_disp_drv_t *disp_drv, const lv_area_t *area, lv_col
|
||||
original_screen_driver(disp_drv, area, color_p);
|
||||
}
|
||||
|
||||
#ifdef CYD_SCREEN_VERTICAL
|
||||
#define ROTATION_INVERTED LV_DISP_ROT_180
|
||||
#define ROTATION_NORMAL LV_DISP_ROT_NONE
|
||||
#else
|
||||
#define ROTATION_INVERTED LV_DISP_ROT_270
|
||||
#define ROTATION_NORMAL LV_DISP_ROT_90
|
||||
#endif
|
||||
|
||||
void screen_setup()
|
||||
{
|
||||
smartdisplay_init();
|
||||
@@ -44,7 +52,7 @@ void screen_setup()
|
||||
}
|
||||
#endif // CYD_SCREEN_DISABLE_INVERT_COLORS
|
||||
|
||||
lv_disp_set_rotation(lv_disp_get_default(), (global_config.rotateScreen) ? LV_DISP_ROT_270 : LV_DISP_ROT_90);
|
||||
lv_disp_set_rotation(lv_disp_get_default(), (global_config.rotateScreen) ? ROTATION_INVERTED : ROTATION_NORMAL);
|
||||
}
|
||||
|
||||
#endif // CYD_SCREEN_DRIVER_ESP32_SMARTDISPLAY
|
||||
@@ -79,7 +79,13 @@ static void btn_click_macros(lv_event_t * e){
|
||||
void create_button(const char* icon, const char* name, lv_event_cb_t button_click, lv_event_cb_t label_update, lv_obj_t * root){
|
||||
lv_obj_t* btn = lv_btn_create(root);
|
||||
lv_obj_set_flex_grow(btn, 1);
|
||||
|
||||
#ifdef CYD_SCREEN_VERTICAL
|
||||
lv_obj_set_height(btn, CYD_SCREEN_SIDEBAR_SIZE_PX);
|
||||
#else
|
||||
lv_obj_set_width(btn, CYD_SCREEN_SIDEBAR_SIZE_PX);
|
||||
#endif
|
||||
|
||||
lv_obj_add_style(btn, &nav_button_style, 0);
|
||||
if (button_click != NULL)
|
||||
lv_obj_add_event_cb(btn, button_click, LV_EVENT_CLICKED, NULL);
|
||||
@@ -101,10 +107,18 @@ void nav_buttons_setup(unsigned char active_panel){
|
||||
lv_obj_clear_flag(lv_scr_act(), LV_OBJ_FLAG_SCROLLABLE);
|
||||
|
||||
lv_obj_t * root_panel = lv_create_empty_panel(lv_scr_act());
|
||||
|
||||
#ifdef CYD_SCREEN_VERTICAL
|
||||
lv_obj_set_size(root_panel, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_SIDEBAR_SIZE_PX);
|
||||
lv_obj_align(root_panel, LV_ALIGN_BOTTOM_LEFT, 0, 0);
|
||||
lv_layout_flex_row(root_panel, LV_FLEX_ALIGN_START, 0, 0);
|
||||
#else
|
||||
lv_obj_set_size(root_panel, CYD_SCREEN_SIDEBAR_SIZE_PX, CYD_SCREEN_HEIGHT_PX);
|
||||
lv_obj_align(root_panel, LV_ALIGN_TOP_LEFT, 0, 0);
|
||||
lv_layout_flex_column(root_panel, LV_FLEX_ALIGN_START, 0, 0);
|
||||
|
||||
#endif
|
||||
|
||||
// Files/Print
|
||||
create_button(LV_SYMBOL_COPY, "Idle", btn_click_files, update_printer_data_time, root_panel);
|
||||
|
||||
@@ -118,7 +132,7 @@ void nav_buttons_setup(unsigned char active_panel){
|
||||
create_button(LV_SYMBOL_GPS, "Macro", btn_click_macros, NULL, root_panel);
|
||||
|
||||
lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
|
||||
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
|
||||
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX);
|
||||
lv_obj_align(panel, LV_ALIGN_TOP_RIGHT, 0, 0);
|
||||
|
||||
switch (active_panel){
|
||||
|
||||
@@ -105,7 +105,7 @@ void macros_panel_init(lv_obj_t* panel) {
|
||||
|
||||
lv_obj_t * root_panel = lv_create_empty_panel(panel);
|
||||
lv_obj_set_scrollbar_mode(root_panel, LV_SCROLLBAR_MODE_OFF);
|
||||
lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
|
||||
lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
|
||||
lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_GAP_PX * 2);
|
||||
lv_layout_flex_column(root_panel);
|
||||
|
||||
|
||||
@@ -92,7 +92,7 @@ inline void root_panel_steppers_locked(lv_obj_t * root_panel){
|
||||
const auto width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2;
|
||||
|
||||
lv_obj_t * panel = lv_create_empty_panel(root_panel);
|
||||
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
|
||||
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX);
|
||||
lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0);
|
||||
lv_layout_flex_column(panel, LV_FLEX_ALIGN_SPACE_BETWEEN, 0, 0);
|
||||
|
||||
@@ -155,7 +155,7 @@ inline void root_panel_steppers_locked(lv_obj_t * root_panel){
|
||||
|
||||
inline void root_panel_steppers_unlocked(lv_obj_t * root_panel){
|
||||
lv_obj_t * panel = lv_create_empty_panel(root_panel);
|
||||
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
|
||||
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX);
|
||||
lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0);
|
||||
lv_layout_flex_column(panel, LV_FLEX_ALIGN_CENTER);
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ void print_panel_init(lv_obj_t* panel){
|
||||
lv_obj_set_style_radius(list, 0, 0);
|
||||
lv_obj_set_style_border_width(list, 0, 0);
|
||||
lv_obj_set_style_bg_opa(list, LV_OPA_TRANSP, 0);
|
||||
lv_obj_set_size(list, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
|
||||
lv_obj_set_size(list, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX);
|
||||
lv_obj_align(list, LV_ALIGN_CENTER, 0, 0);
|
||||
|
||||
FILESYSTEM_FILE* files = get_files(25);
|
||||
|
||||
@@ -228,7 +228,7 @@ void stats_panel_init(lv_obj_t* panel) {
|
||||
auto panel_width = CYD_SCREEN_PANEL_WIDTH_PX / 2 - CYD_SCREEN_GAP_PX * 3;
|
||||
|
||||
lv_obj_t * left_panel = lv_create_empty_panel(panel);
|
||||
lv_obj_set_size(left_panel, panel_width, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
|
||||
lv_obj_set_size(left_panel, panel_width, CYD_SCREEN_PANEL_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
|
||||
lv_layout_flex_column(left_panel);
|
||||
lv_obj_set_flex_align(left_panel, LV_FLEX_ALIGN_SPACE_BETWEEN, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
|
||||
lv_obj_align(left_panel, LV_ALIGN_TOP_LEFT, CYD_SCREEN_GAP_PX, CYD_SCREEN_GAP_PX);
|
||||
@@ -244,7 +244,7 @@ void stats_panel_init(lv_obj_t* panel) {
|
||||
create_stat_text_block(left_panel, "Feedrate:", label_feedrate);
|
||||
|
||||
lv_obj_t * right_panel = lv_create_empty_panel(panel);
|
||||
lv_obj_set_size(right_panel, panel_width, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
|
||||
lv_obj_set_size(right_panel, panel_width, CYD_SCREEN_PANEL_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
|
||||
lv_layout_flex_column(right_panel, LV_FLEX_ALIGN_CENTER);
|
||||
lv_obj_align(right_panel, LV_ALIGN_TOP_RIGHT, -1 * CYD_SCREEN_GAP_PX, CYD_SCREEN_GAP_PX);
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@ static void keyboard_callback(lv_event_t * e){
|
||||
static void show_keyboard(lv_event_t * e){
|
||||
lv_obj_t * parent = lv_create_empty_panel(root_panel);
|
||||
lv_obj_set_style_bg_opa(parent, LV_OPA_50, 0);
|
||||
lv_obj_set_size(parent, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
|
||||
lv_obj_set_size(parent, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX);
|
||||
lv_layout_flex_column(parent, LV_FLEX_ALIGN_SPACE_BETWEEN);
|
||||
|
||||
lv_obj_t * empty_panel = lv_create_empty_panel(parent);
|
||||
@@ -261,7 +261,7 @@ void temp_panel_init(lv_obj_t * panel){
|
||||
edit_mode = false;
|
||||
|
||||
lv_obj_t * root_temp_panel = lv_create_empty_panel(panel);
|
||||
lv_obj_set_size(root_temp_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
|
||||
lv_obj_set_size(root_temp_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_PANEL_HEIGHT_PX);
|
||||
lv_obj_align(root_temp_panel, LV_ALIGN_TOP_RIGHT, 0, 0);
|
||||
lv_obj_set_style_pad_all(root_temp_panel, CYD_SCREEN_GAP_PX, 0);
|
||||
lv_layout_flex_column(root_temp_panel);
|
||||
@@ -293,7 +293,7 @@ void temp_panel_init(lv_obj_t * panel){
|
||||
lv_msg_subscribe_obj(DATA_PRINTER_DATA, chart, NULL);
|
||||
|
||||
lv_obj_t * single_screen_panel = lv_create_empty_panel(root_temp_panel);
|
||||
lv_obj_set_size(single_screen_panel, element_width, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2 - CYD_SCREEN_GAP_PX / 2);
|
||||
lv_obj_set_size(single_screen_panel, element_width, CYD_SCREEN_PANEL_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2 - CYD_SCREEN_GAP_PX / 2);
|
||||
lv_layout_flex_column(single_screen_panel);
|
||||
|
||||
lv_obj_t * temp_rows[2] = {0};
|
||||
|
||||
@@ -1,15 +1,30 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef CYD_SCREEN_WIDTH_PX
|
||||
#define CYD_SCREEN_WIDTH_PX LCD_HEIGHT
|
||||
#endif
|
||||
#ifdef CYD_SCREEN_VERTICAL
|
||||
#ifndef CYD_SCREEN_WIDTH_PX
|
||||
#define CYD_SCREEN_WIDTH_PX LCD_WIDTH
|
||||
#endif
|
||||
|
||||
#ifndef CYD_SCREEN_HEIGHT_PX
|
||||
#define CYD_SCREEN_HEIGHT_PX LCD_WIDTH
|
||||
#endif
|
||||
#ifndef CYD_SCREEN_HEIGHT_PX
|
||||
#define CYD_SCREEN_HEIGHT_PX LCD_HEIGHT
|
||||
#endif
|
||||
|
||||
#define CYD_SCREEN_PANEL_WIDTH_PX \
|
||||
#define CYD_SCREEN_PANEL_HEIGHT_PX \
|
||||
(CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_SIDEBAR_SIZE_PX)
|
||||
#define CYD_SCREEN_PANEL_WIDTH_PX CYD_SCREEN_WIDTH_PX
|
||||
#else
|
||||
#ifndef CYD_SCREEN_WIDTH_PX
|
||||
#define CYD_SCREEN_WIDTH_PX LCD_HEIGHT
|
||||
#endif
|
||||
|
||||
#ifndef CYD_SCREEN_HEIGHT_PX
|
||||
#define CYD_SCREEN_HEIGHT_PX LCD_WIDTH
|
||||
#endif
|
||||
|
||||
#define CYD_SCREEN_PANEL_HEIGHT_PX CYD_SCREEN_HEIGHT_PX
|
||||
#define CYD_SCREEN_PANEL_WIDTH_PX \
|
||||
(CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX)
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
lv_event_cb_t event;
|
||||
|
||||
Reference in New Issue
Block a user