awtk/demos/assets-1m.c
2024-11-15 11:33:32 +08:00

297 lines
14 KiB
C

#include "awtk.h"
#include "base/assets_manager.h"
#ifndef APP_THEME
#define APP_THEME "default"
#endif /*APP_THEME*/
/*** default ***/
#ifndef WITH_FS_RES
#include "../res/assets/default/inc/strings/en_US.data"
#include "../res/assets/default/inc/styles/dialog_toast.data"
#include "../res/assets/default/inc/styles/uiex.data"
#include "../res/assets/default/inc/styles/uiex_dialog.data"
#include "../res/assets/default/inc/styles/uiex_keyboard.data"
#include "../res/assets/default/inc/ui/uiex/dlg_center_scale.data"
#include "../res/assets/default/inc/ui/uiex/dlg_fade.data"
#include "../res/assets/default/inc/ui/uiex/dlg_popdown.data"
#include "../res/assets/default/inc/ui/uiex/dlg_popup.data"
#include "../res/assets/default/inc/ui/uiex/htranslate.data"
#include "../res/assets/default/inc/ui/uiex/kb_ascii.data"
#include "../res/assets/default/inc/ui/uiex/kb_default.data"
#include "../res/assets/default/inc/ui/uiex/kb_foo.data"
#include "../res/assets/default/inc/ui/uiex/kb_uint.data"
#include "../res/assets/default/inc/ui/uiex/menu_bar.data"
#include "../res/assets/default/inc/ui/uiex/menu_landscape.data"
#include "../res/assets/default/inc/ui/uiex/overlay.data"
#include "../res/assets/default/inc/ui/uiex/page_animate.data"
#include "../res/assets/default/inc/ui/uiex/page_button.data"
#include "../res/assets/default/inc/ui/uiex/page_chart.data"
#include "../res/assets/default/inc/ui/uiex/page_checkbox.data"
#include "../res/assets/default/inc/ui/uiex/page_color.data"
#include "../res/assets/default/inc/ui/uiex/page_date_time.data"
#include "../res/assets/default/inc/ui/uiex/page_edit.data"
#include "../res/assets/default/inc/ui/uiex/page_label.data"
#include "../res/assets/default/inc/ui/uiex/page_layout.data"
#include "../res/assets/default/inc/ui/uiex/page_mledit.data"
#include "../res/assets/default/inc/ui/uiex/page_progress.data"
#include "../res/assets/default/inc/ui/uiex/page_selector.data"
#include "../res/assets/default/inc/ui/uiex/page_slider.data"
#include "../res/assets/default/inc/ui/uiex/page_tab_ctrl.data"
#include "../res/assets/default/inc/ui/uiex/page_window.data"
#include "../res/assets/default/inc/ui/uiex/popup.data"
#include "../res/assets/default/inc/ui/uiex/preload.data"
#include "../res/assets/default/inc/ui/uiex/sysbar_landscape.data"
#include "../res/assets/default/inc/ui/uiex/sysbar_portrait.data"
#include "../res/assets/default/inc/ui/uiex/vtranslate.data"
#ifdef WITH_STB_IMAGE
#include "../res/assets/default/inc/images/uiex_arrow_down_n.res"
#include "../res/assets/default/inc/images/uiex_arrow_down_p.res"
#include "../res/assets/default/inc/images/uiex_arrow_up_n.res"
#include "../res/assets/default/inc/images/uiex_arrow_up_p.res"
#include "../res/assets/default/inc/images/uiex_Boot_loading.res"
#include "../res/assets/default/inc/images/uiex_button_Empty.res"
#include "../res/assets/default/inc/images/uiex_button_Export.res"
#include "../res/assets/default/inc/images/uiex_button_Import.res"
#include "../res/assets/default/inc/images/uiex_button_search.res"
#include "../res/assets/default/inc/images/uiex_button_time.res"
#include "../res/assets/default/inc/images/uiex_check.res"
#include "../res/assets/default/inc/images/uiex_check_checked_d.res"
#include "../res/assets/default/inc/images/uiex_check_checked_n.res"
#include "../res/assets/default/inc/images/uiex_check_checked_p.res"
#include "../res/assets/default/inc/images/uiex_check_d.res"
#include "../res/assets/default/inc/images/uiex_check_n.res"
#include "../res/assets/default/inc/images/uiex_check_p.res"
#include "../res/assets/default/inc/images/uiex_close_n.res"
#include "../res/assets/default/inc/images/uiex_close_p.res"
#include "../res/assets/default/inc/images/uiex_combobox_btn_d.res"
#include "../res/assets/default/inc/images/uiex_combobox_btn_n.res"
#include "../res/assets/default/inc/images/uiex_combobox_btn_p.res"
#include "../res/assets/default/inc/images/uiex_Coverwindow.res"
#include "../res/assets/default/inc/images/uiex_editor_bgcolor.res"
#include "../res/assets/default/inc/images/uiex_editor_Importpictures.res"
#include "../res/assets/default/inc/images/uiex_editor_TextAlignBoth.res"
#include "../res/assets/default/inc/images/uiex_editor_TextAlignleft.res"
#include "../res/assets/default/inc/images/uiex_editor_TextAlignright.res"
#include "../res/assets/default/inc/images/uiex_editor_TextBold.res"
#include "../res/assets/default/inc/images/uiex_editor_TextCenteralignment.res"
#include "../res/assets/default/inc/images/uiex_editor_Textcolor.res"
#include "../res/assets/default/inc/images/uiex_editor_TextItalic.res"
#include "../res/assets/default/inc/images/uiex_editor_TextLinespacing.res"
#include "../res/assets/default/inc/images/uiex_editor_TextUnderscore.res"
#include "../res/assets/default/inc/images/uiex_keyboard_backspace_n.res"
#include "../res/assets/default/inc/images/uiex_keyboard_backspace_p.res"
#include "../res/assets/default/inc/images/uiex_loading_repeat_bg.res"
#include "../res/assets/default/inc/images/uiex_logo.res"
#include "../res/assets/default/inc/images/uiex_Portraitmenu_n.res"
#include "../res/assets/default/inc/images/uiex_Portraitmenu_p.res"
#include "../res/assets/default/inc/images/uiex_radio_checked_d.res"
#include "../res/assets/default/inc/images/uiex_radio_checked_n.res"
#include "../res/assets/default/inc/images/uiex_radio_checked_p.res"
#include "../res/assets/default/inc/images/uiex_radio_d.res"
#include "../res/assets/default/inc/images/uiex_radio_n.res"
#include "../res/assets/default/inc/images/uiex_radio_p.res"
#include "../res/assets/default/inc/images/uiex_shift.res"
#include "../res/assets/default/inc/images/uiex_shifton.res"
#include "../res/assets/default/inc/images/uiex_Sliding_dot.res"
#include "../res/assets/default/inc/images/uiex_Sliding_Square.res"
#include "../res/assets/default/inc/images/uiex_switch.res"
#include "../res/assets/default/inc/images/uiex_texteditorhide.res"
#include "../res/assets/default/inc/images/uiex_texteditor_show.res"
#include "../res/assets/default/inc/images/uiex_Windowclosed_n.res"
#include "../res/assets/default/inc/images/uiex_Windowclosed_p.res"
#else
#endif /*WITH_STB_IMAGE*/
#ifdef WITH_VGCANVAS
#endif /*WITH_VGCANVAS*/
#ifdef WITH_TRUETYPE_FONT
#include "../res/assets/default/inc/fonts/default.res"
#else /*WITH_TRUETYPE_FONT*/
#endif /*WITH_TRUETYPE_FONT*/
#endif /*WITH_FS_RES*/
ret_t assets_init_default(void) {
assets_manager_t* am = assets_manager();
assets_manager_set_theme(am, "default");
#ifdef WITH_FS_RES
assets_manager_preload(am, ASSET_TYPE_FONT, "default");
assets_manager_preload(am, ASSET_TYPE_STYLE, "default");
#else
assets_manager_add(am, strings_en_US_default);
assets_manager_add(am, style_dialog_toast_default);
assets_manager_add(am, style_uiex_default);
assets_manager_add(am, style_uiex_dialog_default);
assets_manager_add(am, style_uiex_keyboard_default);
assets_manager_add(am, ui_dlg_center_scale_default_uiex);
assets_manager_add(am, ui_dlg_fade_default_uiex);
assets_manager_add(am, ui_dlg_popdown_default_uiex);
assets_manager_add(am, ui_dlg_popup_default_uiex);
assets_manager_add(am, ui_htranslate_default_uiex);
assets_manager_add(am, ui_kb_ascii_default_uiex);
assets_manager_add(am, ui_kb_default_default_uiex);
assets_manager_add(am, ui_kb_foo_default_uiex);
assets_manager_add(am, ui_kb_uint_default_uiex);
assets_manager_add(am, ui_menu_bar_default_uiex);
assets_manager_add(am, ui_menu_landscape_default_uiex);
assets_manager_add(am, ui_overlay_default_uiex);
assets_manager_add(am, ui_page_animate_default_uiex);
assets_manager_add(am, ui_page_button_default_uiex);
assets_manager_add(am, ui_page_chart_default_uiex);
assets_manager_add(am, ui_page_checkbox_default_uiex);
assets_manager_add(am, ui_page_color_default_uiex);
assets_manager_add(am, ui_page_date_time_default_uiex);
assets_manager_add(am, ui_page_edit_default_uiex);
assets_manager_add(am, ui_page_label_default_uiex);
assets_manager_add(am, ui_page_layout_default_uiex);
assets_manager_add(am, ui_page_mledit_default_uiex);
assets_manager_add(am, ui_page_progress_default_uiex);
assets_manager_add(am, ui_page_selector_default_uiex);
assets_manager_add(am, ui_page_slider_default_uiex);
assets_manager_add(am, ui_page_tab_ctrl_default_uiex);
assets_manager_add(am, ui_page_window_default_uiex);
assets_manager_add(am, ui_popup_default_uiex);
assets_manager_add(am, ui_preload_default_uiex);
assets_manager_add(am, ui_sysbar_landscape_default_uiex);
assets_manager_add(am, ui_sysbar_portrait_default_uiex);
assets_manager_add(am, ui_vtranslate_default_uiex);
assets_manager_add(am, image_uiex_arrow_down_n_default);
assets_manager_add(am, image_uiex_arrow_down_p_default);
assets_manager_add(am, image_uiex_arrow_up_n_default);
assets_manager_add(am, image_uiex_arrow_up_p_default);
assets_manager_add(am, image_uiex_Boot_loading_default);
assets_manager_add(am, image_uiex_button_Empty_default);
assets_manager_add(am, image_uiex_button_Export_default);
assets_manager_add(am, image_uiex_button_Import_default);
assets_manager_add(am, image_uiex_button_search_default);
assets_manager_add(am, image_uiex_button_time_default);
assets_manager_add(am, image_uiex_check_default);
assets_manager_add(am, image_uiex_check_checked_d_default);
assets_manager_add(am, image_uiex_check_checked_n_default);
assets_manager_add(am, image_uiex_check_checked_p_default);
assets_manager_add(am, image_uiex_check_d_default);
assets_manager_add(am, image_uiex_check_n_default);
assets_manager_add(am, image_uiex_check_p_default);
assets_manager_add(am, image_uiex_close_n_default);
assets_manager_add(am, image_uiex_close_p_default);
assets_manager_add(am, image_uiex_combobox_btn_d_default);
assets_manager_add(am, image_uiex_combobox_btn_n_default);
assets_manager_add(am, image_uiex_combobox_btn_p_default);
assets_manager_add(am, image_uiex_Coverwindow_default);
assets_manager_add(am, image_uiex_editor_bgcolor_default);
assets_manager_add(am, image_uiex_editor_Importpictures_default);
assets_manager_add(am, image_uiex_editor_TextAlignBoth_default);
assets_manager_add(am, image_uiex_editor_TextAlignleft_default);
assets_manager_add(am, image_uiex_editor_TextAlignright_default);
assets_manager_add(am, image_uiex_editor_TextBold_default);
assets_manager_add(am, image_uiex_editor_TextCenteralignment_default);
assets_manager_add(am, image_uiex_editor_Textcolor_default);
assets_manager_add(am, image_uiex_editor_TextItalic_default);
assets_manager_add(am, image_uiex_editor_TextLinespacing_default);
assets_manager_add(am, image_uiex_editor_TextUnderscore_default);
assets_manager_add(am, image_uiex_keyboard_backspace_n_default);
assets_manager_add(am, image_uiex_keyboard_backspace_p_default);
assets_manager_add(am, image_uiex_loading_repeat_bg_default);
assets_manager_add(am, image_uiex_logo_default);
assets_manager_add(am, image_uiex_Portraitmenu_n_default);
assets_manager_add(am, image_uiex_Portraitmenu_p_default);
assets_manager_add(am, image_uiex_radio_checked_d_default);
assets_manager_add(am, image_uiex_radio_checked_n_default);
assets_manager_add(am, image_uiex_radio_checked_p_default);
assets_manager_add(am, image_uiex_radio_d_default);
assets_manager_add(am, image_uiex_radio_n_default);
assets_manager_add(am, image_uiex_radio_p_default);
assets_manager_add(am, image_uiex_shift_default);
assets_manager_add(am, image_uiex_shifton_default);
assets_manager_add(am, image_uiex_Sliding_dot_default);
assets_manager_add(am, image_uiex_Sliding_Square_default);
assets_manager_add(am, image_uiex_switch_default);
assets_manager_add(am, image_uiex_texteditorhide_default);
assets_manager_add(am, image_uiex_texteditor_show_default);
assets_manager_add(am, image_uiex_Windowclosed_n_default);
assets_manager_add(am, image_uiex_Windowclosed_p_default);
#ifdef WITH_VGCANVAS
#endif /*WITH_VGCANVAS*/
#ifdef WITH_TRUETYPE_FONT
assets_manager_add(am, font_default_default);
#else /*WITH_TRUETYPE_FONT*/
#endif /*WITH_TRUETYPE_FONT*/
#endif
tk_init_assets();
return RET_OK;
}
/*** default end ***/
bool_t assets_has_theme(const char* name) {
return_value_if_fail(name != NULL, FALSE);
if (tk_str_eq(name, "default")) {
return TRUE;
} else {
return FALSE;
}
}
static ret_t assets_init_internal(const char* theme) {
assets_manager_t* am = assets_manager();
return_value_if_fail(theme != NULL && am != NULL, RET_BAD_PARAMS);
assets_manager_set_theme(am, theme);
if (tk_str_eq(theme, "default")) {
return assets_init_default();
} else {
log_debug("%s not support.\n", theme);
return RET_NOT_IMPL;
}
}
ret_t assets_init(void) {
return assets_init_internal(APP_THEME);
}
#ifndef WITH_FS_RES
static ret_t widget_set_theme_without_file_system(widget_t* widget, const char* name) {
const asset_info_t* info = NULL;
event_t e = event_init(EVT_THEME_CHANGED, NULL);
widget_t* wm = widget_get_window_manager(widget);
font_manager_t* fm = widget_get_font_manager(widget);
image_manager_t* imm = widget_get_image_manager(widget);
assets_manager_t* am = widget_get_assets_manager(widget);
locale_info_t* locale_info = widget_get_locale_info(widget);
return_value_if_fail(am != NULL && name != NULL, RET_BAD_PARAMS);
return_value_if_fail(assets_has_theme(name), RET_BAD_PARAMS);
font_manager_unload_all(fm);
image_manager_unload_all(imm);
assets_manager_clear_all(am);
widget_reset_canvas(widget);
assets_init_internal(name);
locale_info_reload(locale_info);
info = assets_manager_ref(am, ASSET_TYPE_STYLE, "default");
if (info != NULL) {
assets_manager_unref(assets_manager(), info);
theme_set_theme_data(theme(), info->data);
}
widget_dispatch(wm, &e);
widget_invalidate_force(wm, NULL);
log_debug("theme changed: %s\n", name);
return RET_OK;
}
#endif /*WITH_FS_RES*/
ret_t assets_set_global_theme(const char* name) {
#ifdef WITH_FS_RES
return widget_set_theme(window_manager(), name);
#else /*WITH_FS_RES*/
return widget_set_theme_without_file_system(window_manager(), name);
#endif /*WITH_FS_RES*/
}