// This file was generated by SquareLine Studio
// SquareLine Studio version: SquareLine Studio 1.5.4
// LVGL version: 9.1.0
// Project name: SquareLine_Project

#include "../ui.h"
#include <src/core/lv_obj_style_gen.h>
#include <stdint.h>
#include <stdio.h>

lv_obj_t * ui_setting = NULL;
lv_obj_t * ui_top_container = NULL;
lv_obj_t * ui_middle_container = NULL;
lv_obj_t * ui_dev_status_container1 = NULL;
lv_obj_t * ui_time_date_container = NULL;
lv_obj_t * ui_date_label = NULL;
lv_obj_t * ui_time_lable = NULL;
lv_obj_t * ui_icon_container = NULL;
lv_obj_t * ui_wifi = NULL;
lv_obj_t * ui_batter = NULL;
lv_obj_t * ui_dev_status_container2 = NULL;
lv_obj_t * ui_label_container = NULL;
lv_obj_t * ui_volume_image = NULL;
lv_obj_t * ui_volume_label = NULL;
lv_obj_t * ui_volume_slider = NULL;
lv_obj_t * ui_bottom_container = NULL;
lv_obj_t * ui_reset_button = NULL;
lv_obj_t * ui_reset_button_label = NULL;
// event funtions
void ui_event_setting(lv_event_t * e)
{
    lv_event_code_t event_code = lv_event_get_code(e);

    if(event_code == LV_EVENT_GESTURE &&  lv_indev_get_gesture_dir(lv_indev_active()) == LV_DIR_TOP) {
        lv_indev_wait_release(lv_indev_active());
        _ui_screen_change(&ui_home, LV_SCR_LOAD_ANIM_MOVE_TOP, 300, 0, &ui_home_screen_init);
    }
    if(event_code == LV_EVENT_SCREEN_LOADED) {
        setting_screen_loaded(e);
    }
    if(event_code == LV_EVENT_SCREEN_UNLOADED) {
        setting_screen_unloaded(e);
    }
}

void ui_event_volume_slider(lv_event_t * e)
{
    lv_event_code_t event_code = lv_event_get_code(e);

    if(event_code == LV_EVENT_VALUE_CHANGED) {
        volume_change_callback(e);
    }
}

void ui_event_reset_button(lv_event_t * e)
{
    lv_event_code_t event_code = lv_event_get_code(e);

    if(event_code == LV_EVENT_PRESSED || event_code == LV_EVENT_PRESSING) {
        reset_button_callback(e);
    }
}

// build funtions

void ui_setting_screen_init(void)
{
    ui_setting = lv_obj_create(NULL);
    lv_obj_remove_flag(ui_setting, LV_OBJ_FLAG_SCROLLABLE);      /// Flags
    lv_obj_set_flex_flow(ui_setting, LV_FLEX_FLOW_COLUMN);
    lv_obj_set_flex_align(ui_setting, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
    ui_object_set_themeable_style_property(ui_setting, LV_PART_MAIN | LV_STATE_DEFAULT, LV_STYLE_BG_COLOR,
                                           _ui_theme_color_background);
    ui_object_set_themeable_style_property(ui_setting, LV_PART_MAIN | LV_STATE_DEFAULT, LV_STYLE_BG_OPA,
                                           _ui_theme_alpha_background);
    // lv_obj_set_style_radius(ui_setting, LV_RADIUS_CIRCLE, LV_PART_MAIN | LV_STATE_DEFAULT);

    ui_top_container = lv_obj_create(ui_setting);
    lv_obj_remove_style_all(ui_top_container);
    lv_obj_set_width(ui_top_container, lv_pct(100));
    lv_obj_set_height(ui_top_container, lv_pct(16));
    lv_obj_set_align(ui_top_container, LV_ALIGN_CENTER);
    lv_obj_remove_flag(ui_top_container, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);      /// Flags

    ui_middle_container = lv_obj_create(ui_setting);
    lv_obj_remove_style_all(ui_middle_container);
    lv_obj_set_width(ui_middle_container, lv_pct(100));
    lv_obj_set_height(ui_middle_container, lv_pct(60));
    lv_obj_set_align(ui_middle_container, LV_ALIGN_CENTER);
    lv_obj_set_flex_flow(ui_middle_container, LV_FLEX_FLOW_COLUMN);
    lv_obj_set_flex_align(ui_middle_container, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
    lv_obj_remove_flag(ui_middle_container, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);      /// Flags

    ui_dev_status_container1 = lv_obj_create(ui_middle_container);
    lv_obj_remove_style_all(ui_dev_status_container1);
    lv_obj_set_width(ui_dev_status_container1, lv_pct(80));
    lv_obj_set_height(ui_dev_status_container1, lv_pct(70));
    lv_obj_set_align(ui_dev_status_container1, LV_ALIGN_CENTER);
    lv_obj_set_flex_flow(ui_dev_status_container1, LV_FLEX_FLOW_ROW);
    lv_obj_set_flex_align(ui_dev_status_container1, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
    lv_obj_remove_flag(ui_dev_status_container1, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);      /// Flags

    ui_time_date_container = lv_obj_create(ui_dev_status_container1);
    lv_obj_remove_style_all(ui_time_date_container);
    lv_obj_set_width(ui_time_date_container, lv_pct(70));
    lv_obj_set_height(ui_time_date_container, lv_pct(100));
    lv_obj_set_align(ui_time_date_container, LV_ALIGN_CENTER);
    lv_obj_set_flex_flow(ui_time_date_container, LV_FLEX_FLOW_COLUMN);
    lv_obj_set_flex_align(ui_time_date_container, LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER);
    lv_obj_remove_flag(ui_time_date_container, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);      /// Flags

    ui_date_label = lv_label_create(ui_time_date_container);
    lv_obj_set_width(ui_date_label, LV_SIZE_CONTENT);   /// 1
    lv_obj_set_height(ui_date_label, LV_SIZE_CONTENT);    /// 1
    lv_obj_set_align(ui_date_label, LV_ALIGN_CENTER);
    lv_label_set_text(ui_date_label, "1999/01/01");
    lv_obj_set_style_text_color(ui_date_label, lv_color_hex(0xFFFFFF), LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_text_opa(ui_date_label, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_text_font(ui_date_label, &lv_font_montserrat_24, LV_PART_MAIN | LV_STATE_DEFAULT);

    ui_time_lable = lv_label_create(ui_time_date_container);
    lv_obj_set_width(ui_time_lable, LV_SIZE_CONTENT);   /// 1
    lv_obj_set_height(ui_time_lable, LV_SIZE_CONTENT);    /// 1
    lv_obj_set_align(ui_time_lable, LV_ALIGN_CENTER);
    lv_label_set_text(ui_time_lable, "00:00");
    lv_obj_set_style_text_color(ui_time_lable, lv_color_hex(0xFFFFFF), LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_text_opa(ui_time_lable, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_text_font(ui_time_lable, &ui_font_mont_82, LV_PART_MAIN | LV_STATE_DEFAULT);

    ui_icon_container = lv_obj_create(ui_dev_status_container1);
    lv_obj_remove_style_all(ui_icon_container);
    lv_obj_set_width(ui_icon_container, lv_pct(30));
    lv_obj_set_height(ui_icon_container, lv_pct(100));
    lv_obj_set_align(ui_icon_container, LV_ALIGN_CENTER);
    lv_obj_set_flex_flow(ui_icon_container, LV_FLEX_FLOW_COLUMN);
    lv_obj_set_flex_align(ui_icon_container, LV_FLEX_ALIGN_SPACE_EVENLY, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER);
    lv_obj_remove_flag(ui_icon_container, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);      /// Flags

    ui_wifi = lv_image_create(ui_icon_container);
    lv_image_set_src(ui_wifi, &ui_img_image_wifi_wifi_disconnect_30_png);
    lv_obj_set_width(ui_wifi, LV_SIZE_CONTENT);   /// 1
    lv_obj_set_height(ui_wifi, LV_SIZE_CONTENT);    /// 1
    lv_obj_set_align(ui_wifi, LV_ALIGN_CENTER);
    lv_obj_add_flag(ui_wifi, LV_OBJ_FLAG_CLICKABLE);     /// Flags
    lv_obj_remove_flag(ui_wifi, LV_OBJ_FLAG_SCROLLABLE);      /// Flags
    lv_obj_set_style_radius(ui_wifi, 100, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_bg_color(ui_wifi, lv_color_hex(0x191919), LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_bg_opa(ui_wifi, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_border_color(ui_wifi, lv_color_hex(0x191919), LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_border_opa(ui_wifi, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_border_width(ui_wifi, 15, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_border_side(ui_wifi, LV_BORDER_SIDE_FULL, LV_PART_MAIN | LV_STATE_DEFAULT);

    ui_batter = lv_image_create(ui_icon_container);
    lv_image_set_src(ui_batter, &ui_img_image_battery_battercharging_png);
    lv_obj_set_width(ui_batter, LV_SIZE_CONTENT);   /// 1
    lv_obj_set_height(ui_batter, LV_SIZE_CONTENT);    /// 1
    lv_obj_set_align(ui_batter, LV_ALIGN_CENTER);
    lv_obj_add_flag(ui_batter, LV_OBJ_FLAG_CLICKABLE);     /// Flags
    lv_obj_remove_flag(ui_batter, LV_OBJ_FLAG_SCROLLABLE);      /// Flags
    lv_obj_set_style_radius(ui_batter, 100, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_bg_color(ui_batter, lv_color_hex(0x191919), LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_bg_opa(ui_batter, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_border_color(ui_batter, lv_color_hex(0x191919), LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_border_opa(ui_batter, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_border_width(ui_batter, 15, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_border_side(ui_batter, LV_BORDER_SIDE_FULL, LV_PART_MAIN | LV_STATE_DEFAULT);

    ui_dev_status_container2 = lv_obj_create(ui_middle_container);
    lv_obj_remove_style_all(ui_dev_status_container2);
    lv_obj_set_width(ui_dev_status_container2, lv_pct(80));
    lv_obj_set_height(ui_dev_status_container2, lv_pct(30));
    lv_obj_set_align(ui_dev_status_container2, LV_ALIGN_CENTER);
    lv_obj_set_flex_flow(ui_dev_status_container2, LV_FLEX_FLOW_COLUMN);
    lv_obj_set_flex_align(ui_dev_status_container2, LV_FLEX_ALIGN_SPACE_AROUND, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER);
    lv_obj_remove_flag(ui_dev_status_container2, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);      /// Flags

    ui_label_container = lv_obj_create(ui_dev_status_container2);
    lv_obj_remove_style_all(ui_label_container);
    lv_obj_set_width(ui_label_container, lv_pct(70));
    lv_obj_set_height(ui_label_container, LV_SIZE_CONTENT);    /// 1
    lv_obj_set_align(ui_label_container, LV_ALIGN_CENTER);
    lv_obj_set_flex_flow(ui_label_container, LV_FLEX_FLOW_ROW);
    lv_obj_set_flex_align(ui_label_container, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_START);
    lv_obj_remove_flag(ui_label_container, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);      /// Flags

    ui_volume_image = lv_image_create(ui_label_container);
    lv_image_set_src(ui_volume_image, &ui_img_image_volume_volume_png);
    lv_obj_set_width(ui_volume_image, LV_SIZE_CONTENT);   /// 1
    lv_obj_set_height(ui_volume_image, LV_SIZE_CONTENT);    /// 1
    lv_obj_set_align(ui_volume_image, LV_ALIGN_CENTER);
    lv_obj_add_flag(ui_volume_image, LV_OBJ_FLAG_CLICKABLE);     /// Flags
    lv_obj_remove_flag(ui_volume_image, LV_OBJ_FLAG_SCROLLABLE);      /// Flags

    ui_volume_label = lv_label_create(ui_label_container);
    lv_obj_set_width(ui_volume_label, LV_SIZE_CONTENT);   /// 1
    lv_obj_set_height(ui_volume_label, LV_SIZE_CONTENT);    /// 1
    lv_obj_set_align(ui_volume_label, LV_ALIGN_CENTER);
    lv_label_set_text(ui_volume_label, "VOLUME");
    lv_obj_set_style_text_color(ui_volume_label, lv_color_hex(0x2095F6), LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_text_opa(ui_volume_label, 255, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_text_font(ui_volume_label, &lv_font_montserrat_22, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_pad_left(ui_volume_label, 10, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_pad_right(ui_volume_label, 0, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_pad_top(ui_volume_label, 0, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_pad_bottom(ui_volume_label, 0, LV_PART_MAIN | LV_STATE_DEFAULT);

    ui_volume_slider = lv_slider_create(ui_dev_status_container2);
    lv_slider_set_value(ui_volume_slider, 50, LV_ANIM_OFF);
    if(lv_slider_get_mode(ui_volume_slider) == LV_SLIDER_MODE_RANGE) lv_slider_set_left_value(ui_volume_slider, 50, LV_ANIM_OFF);
    lv_obj_set_width(ui_volume_slider, lv_pct(65));
    lv_obj_set_height(ui_volume_slider, lv_pct(30));
    lv_obj_set_align(ui_volume_slider, LV_ALIGN_CENTER);

    lv_obj_set_style_bg_color(ui_volume_slider, lv_color_hex(0xFFFFFF), LV_PART_KNOB | LV_STATE_DEFAULT);
    lv_obj_set_style_bg_opa(ui_volume_slider, 255, LV_PART_KNOB | LV_STATE_DEFAULT);

    //Compensating for LVGL9.1 draw crash with bar/slider max value when top-padding is nonzero and right-padding is 0
    if(lv_obj_get_style_pad_top(ui_volume_slider, LV_PART_MAIN) > 0) lv_obj_set_style_pad_right(ui_volume_slider,
                                                                                              lv_obj_get_style_pad_right(ui_volume_slider, LV_PART_MAIN) + 1, LV_PART_MAIN);
    ui_bottom_container = lv_obj_create(ui_setting);
    lv_obj_remove_style_all(ui_bottom_container);
    lv_obj_set_width(ui_bottom_container, lv_pct(100));
    lv_obj_set_height(ui_bottom_container, lv_pct(20));
    lv_obj_set_x(ui_bottom_container, -105);
    lv_obj_set_y(ui_bottom_container, 88);
    lv_obj_set_align(ui_bottom_container, LV_ALIGN_CENTER);
    lv_obj_set_flex_flow(ui_bottom_container, LV_FLEX_FLOW_ROW);
    lv_obj_set_flex_align(ui_bottom_container, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
    lv_obj_remove_flag(ui_bottom_container, LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_SCROLLABLE);      /// Flags

    ui_reset_button = lv_button_create(ui_bottom_container);
    lv_obj_set_height(ui_reset_button, lv_pct(45));
    lv_obj_set_width(ui_reset_button, LV_SIZE_CONTENT);   /// 1
    lv_obj_set_align(ui_reset_button, LV_ALIGN_CENTER);
    lv_obj_add_flag(ui_reset_button, LV_OBJ_FLAG_SCROLL_ON_FOCUS);     /// Flags
    lv_obj_remove_flag(ui_reset_button, LV_OBJ_FLAG_SCROLLABLE);      /// Flags
    lv_obj_set_style_radius(ui_reset_button, 100, LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_bg_color(ui_reset_button, lv_color_hex(0xDA424A), LV_PART_MAIN | LV_STATE_DEFAULT);
    lv_obj_set_style_bg_opa(ui_reset_button, 255, LV_PART_MAIN | LV_STATE_DEFAULT);

    ui_reset_button_label = lv_label_create(ui_reset_button);
    lv_obj_set_width(ui_reset_button_label, LV_SIZE_CONTENT);   /// 1
    lv_obj_set_height(ui_reset_button_label, LV_SIZE_CONTENT);    /// 1
    lv_obj_set_align(ui_reset_button_label, LV_ALIGN_CENTER);
    lv_label_set_text(ui_reset_button_label, "Hold 3s to Reset");

    lv_obj_add_event_cb(ui_volume_slider, ui_event_volume_slider, LV_EVENT_VALUE_CHANGED, NULL);
    lv_obj_add_event_cb(ui_reset_button, ui_event_reset_button, LV_EVENT_PRESSED, NULL);
    lv_obj_add_event_cb(ui_reset_button, ui_event_reset_button, LV_EVENT_PRESSING, NULL);
    lv_obj_add_event_cb(ui_setting, ui_event_setting, LV_EVENT_ALL, NULL);

}

void ui_setting_screen_destroy(void)
{
    if(ui_setting) lv_obj_del(ui_setting);

    // NULL screen variables
    ui_setting = NULL;
    ui_top_container = NULL;
    ui_middle_container = NULL;
    ui_dev_status_container1 = NULL;
    ui_time_date_container = NULL;
    ui_date_label = NULL;
    ui_time_lable = NULL;
    ui_icon_container = NULL;
    ui_wifi = NULL;
    ui_batter = NULL;
    ui_dev_status_container2 = NULL;
    ui_label_container = NULL;
    ui_volume_image = NULL;
    ui_volume_label = NULL;
    ui_volume_slider = NULL;
    ui_bottom_container = NULL;
    ui_reset_button = NULL;
    ui_reset_button_label = NULL;

}

void ui_setting_date_update(uint32_t year, uint32_t month, uint32_t day)
{
    if (NULL == ui_date_label) {
        return;
    }

    // format date as "yyyy/mm/dd"
    char date[11];
    snprintf(date, sizeof(date), "%04d/%02d/%02d", year, month, day);
    lv_label_set_text(ui_date_label, date);
}

void ui_setting_time_update(uint32_t hour, uint32_t minute)
{
    if (NULL == ui_time_lable) {
        return;
    }

    // format time as "hh:mm"
    char time[6];
    snprintf(time, sizeof(time), "%02d:%02d", hour, minute);

    lv_label_set_text(ui_time_lable, time);
}

void ui_setting_wifi_update(uint8_t connected)
{
    if (NULL == ui_wifi) {
        return;
    }

    if (connected) {
        lv_image_set_src(ui_wifi, &ui_img_image_wifi_wifi_30_png);
    }
    else {
        lv_image_set_src(ui_wifi, &ui_img_image_wifi_wifi_disconnect_30_png);
    }
}

void ui_setting_batter_update(uint8_t charging, uint32_t percent)
{
    if (NULL == ui_batter) {
        return;
    }

    if (charging) {
        lv_image_set_src(ui_batter, &ui_img_image_battery_battercharging_png);
    } else {
        if (percent >= 80) {
            lv_image_set_src(ui_batter, &ui_img_image_battery_battery100_png);
        } else if (percent >= 60) {
            lv_image_set_src(ui_batter, &ui_img_image_battery_battery60_png);
        } else if (percent >= 50) {
            lv_image_set_src(ui_batter, &ui_img_image_battery_battery50_png);
        } else {
            lv_image_set_src(ui_batter, &ui_img_image_battery_battery20_png);
        }
    }
}

void ui_setting_volume_slider_update(uint32_t value)
{
    if (NULL == ui_volume_slider) {
        return;
    }

    lv_slider_set_value(ui_volume_slider, value, LV_ANIM_OFF);
}
