static Ret ftk_init_font(void) { FtkFont* font = NULL; #if defined(USE_FREETYPE) && defined(ANDROID) && defined(ANDROID_NDK) font = ftk_font_freetype_create(FTK_FONT, 0, 0, FTK_FONT_SIZE); #else char filename[FTK_MAX_PATH + 1] = {0}; ftk_strs_cat(filename, FTK_MAX_PATH, ftk_config_get_data_dir(ftk_default_config()), "/data/", FTK_FONT, NULL); ftk_normalize_path(filename); #ifdef USE_FREETYPE font = ftk_font_freetype_create(filename, 0, 0, FTK_FONT_SIZE); #else font = ftk_font_default_create(filename, 0, 0, 0); #endif #endif if(font != NULL) { ftk_set_font(font); } else { ftk_deinit(); ftk_loge("load font failed.\n"); exit(0); } return RET_OK; }
Ret ftk_fs_delete(const char* dir_or_file) { Ret ret = RET_FAIL; FtkFileInfo info = {0}; char name[FTK_MAX_PATH + 1] = {0}; return_val_if_fail(dir_or_file != NULL, RET_FAIL); ftk_strncpy(name, dir_or_file, FTK_MAX_PATH); ftk_normalize_path(name); if((ret = ftk_file_get_info(name, &info)) == RET_OK) { ret = ftk_fs_delete_children(name); if(info.is_dir) { ret = ftk_fs_delete_dir(name); } else { ret = ftk_fs_delete_file(name); } } return ret; }
FtkAnimationTrigger* ftk_animation_trigger_default_create(const char* theme, const char* name) { FtkAnimationTrigger* thiz = FTK_NEW_PRIV(FtkAnimationTrigger); if(thiz != NULL) { char filename[FTK_MAX_PATH + 1] = {0}; ftk_strs_cat(filename, FTK_MAX_PATH, ftk_config_get_data_dir(ftk_default_config()), "/theme/", theme, "/", name, NULL); ftk_normalize_path(filename); thiz->on_event = ftk_animation_trigger_default_on_event; thiz->destroy = ftk_animation_trigger_default_destroy; if(ftk_animation_trigger_parse_file(thiz, filename) == RET_OK) { //ftk_animation_trigger_default_dump(thiz); ftk_logd("%s: them=%s\n", __func__, theme); } else { FTK_FREE(thiz); } } return thiz; }
static const char* desktop_translate_path(const char* path, char out_path[FTK_MAX_PATH+1]) { ftk_snprintf(out_path, FTK_MAX_PATH, "%s/desktop/%s", FTK_ROOT_DIR, path); ftk_normalize_path(out_path); ftk_logd("%s: %s --> %s\n", __func__, path, out_path); return out_path; }
Ret ftk_file_browser_set_path(FtkWidget* thiz, const char* path) { PrivInfo* priv = (PrivInfo*)ftk_widget_user_data(thiz); return_val_if_fail(priv != NULL && path != NULL, RET_FAIL); ftk_strncpy(priv->path, path, FTK_MAX_PATH); ftk_normalize_path(priv->path); return RET_OK; }
static Ret on_file_selected(void* ctx, int index, const char* path) { FtkWidget* win = (FtkWidget*)ctx; char filename[FTK_MAX_PATH+1] = {0}; Info* info = (Info*)ftk_widget_user_data(win); ftk_strncpy(filename, path, FTK_MAX_PATH); ftk_normalize_path(filename); ftk_widget_set_text(info->widget_file_name, filename); return RET_OK; }
static const char* normalize_path_name(const char* in, char* out) { if(in != NULL) { strcpy(out, in); ftk_normalize_path(out); return out; } else { return NULL; } }
static Ret ftk_init_theme(const char* theme) { char filename[FTK_MAX_PATH + 1] = {0}; ftk_set_theme(ftk_theme_create(theme == NULL)); if(theme != NULL) { #if !defined(ANDROID) && !defined(ANDROID_NDK) ftk_strs_cat(filename, FTK_MAX_PATH, ftk_config_get_data_dir(ftk_default_config()), "/theme/", theme, "/theme.xml", NULL); #else ftk_strs_cat(filename, FTK_MAX_PATH, ftk_config_get_data_dir(ftk_default_config()), "/theme/", theme, "/theme.wav", NULL); #endif ftk_normalize_path(filename); ftk_theme_parse_file(ftk_default_theme(), filename); } return RET_OK; }
Ret ftk_config_load(FtkConfig* thiz, const char* progname) { char path[FTK_MAX_PATH+1] = {0}; char cwd[FTK_MAX_PATH+1] = {0}; char filename[FTK_MAX_PATH+1] = {0}; const char* base = progname + strlen(progname); while(base > progname) { if(*base == '/' || *base == '\\') { break; } base--; } if(base > progname) { ftk_strncpy(path, progname, base-progname); } if(ftk_path_is_abs(progname)) { ftk_strs_cat(filename, sizeof(filename), path, "/ftk.cnf", NULL); } else { ftk_getcwd(cwd, sizeof(cwd)); ftk_strs_cat(filename, sizeof(filename), cwd, "/", path, "/ftk.cnf", NULL); } ftk_normalize_path(filename); if(!ftk_mmap_exist(filename)) { return RET_FAIL; } return ftk_config_load_file(thiz, filename); }
int FTK_MAIN(int argc, char* argv[]) { int i = 0; FtkWidget* win = NULL; FtkWidget* button = NULL; FtkSource* timer = NULL; char path[FTK_MAX_PATH] = {0}; const char* root_path[FTK_ICON_PATH_NR] = {0}; ftk_init(argc, argv); for(i = 0; i < argc; i++) { const char* key_play="--event-play="; const char* key_record="--event-record="; #ifdef FTK_HAS_TESTER if(strncmp(argv[i], key_play, strlen(key_play)) == 0) { ftk_tester_start_play(argv[i] + strlen(key_play)); } if(strncmp(argv[i], key_record, strlen(key_record)) == 0) { ftk_tester_start_record(argv[i] + strlen(key_record)); } #endif } #ifdef ENABLE_NLS if(getenv("LANG") == NULL) { setenv("LANG", "zh_CN.UTF-8", 1); setlocale (LC_ALL, "zh_CN.UTF-8"); ftk_logd("LANG is not set, use zh_CN.UTF-8\n"); } else { setlocale (LC_ALL, ""); } bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); textdomain (PACKAGE); ftk_logd("%s: locale=%s\n", _("Hello, GetText"), setlocale(LC_ALL, NULL)); #endif desktop_add_time_item_on_statusbar(); if(argv[1] != NULL && strncmp(argv[1], "--hor", 5) == 0) { g_desktop.is_horizonal = 1; } g_desktop.app_manager = app_info_manager_create(); ftk_snprintf(path, sizeof(path), "%s/base/apps", FTK_ROOT_DIR); ftk_normalize_path(path); if(app_info_manager_load_dir(g_desktop.app_manager, path) != RET_OK) { ftk_snprintf(path, sizeof(path), "%s/apps", LOCAL_DATA_DIR); app_info_manager_load_dir(g_desktop.app_manager, path); } ftk_snprintf(path, sizeof(path), "%s/desktop", FTK_ROOT_DIR); root_path[0] = path; root_path[1] = NULL; g_desktop.icon_cache = ftk_icon_cache_create(root_path, NULL); win = desktop_load_xul(g_desktop.is_horizonal ? "xul/desktop-h.xul" : "xul/desktop-v.xul"); ftk_app_window_set_on_prepare_options_menu(win, desktop_on_prepare_options_menu, win); button = ftk_widget_lookup(win, 100); ftk_button_set_clicked_listener(button, desktop_on_button_open_applist_clicked, win); ftk_widget_show_all(win, 1); desktop_update_time(win); timer = ftk_source_timer_create(60000, desktop_update_time, win); ftk_main_loop_add_source(ftk_default_main_loop(), timer); ftk_widget_set_user_data(win, desktop_destroy, &g_desktop); ftk_run(); return 0; }