/* 触发文件列表视图的按钮回调函数 */ static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event) { rtgui_filelist_view_t *view; rtgui_workbench_t *workbench; rtgui_rect_t rect; /* 获得顶层的workbench对象 */ workbench = RTGUI_WORKBENCH(rtgui_widget_get_toplevel(widget)); rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect); /* 针对Win32平台和其他平台做的不同的其实目录位置 */ #ifdef _WIN32 view = rtgui_filelist_view_create(workbench, "d:\\", "*.*", &rect); #else view = rtgui_filelist_view_create(workbench, "/", "*.*", &rect); #endif /* 采用模式形式显示文件列表视图 */ if (rtgui_view_show(RTGUI_VIEW(view), RT_TRUE) == RTGUI_MODAL_OK) { char path[32]; /* 在文件列表视图中成功选择文件,这里获得相应的路径名 */ rtgui_filelist_view_get_fullpath(view, path, sizeof(path)); /* 设置文件路径到文本标签 */ rtgui_label_set_text(label, path); } /* 删除 文件列表 视图 */ rtgui_view_destroy(RTGUI_VIEW(view)); }
/* 打开按钮的回调函数 */ static void open_btn_onbutton(rtgui_widget_t* widget, struct rtgui_event* event) { rtgui_filelist_view_t *view; rtgui_workbench_t *workbench; rtgui_rect_t rect; /* 获得顶层的workbench */ workbench = RTGUI_WORKBENCH(rtgui_widget_get_toplevel(widget)); rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect); /* WIN32平台上和真实设备上的初始路径处理 */ #ifdef _WIN32 view = rtgui_filelist_view_create(workbench, "d:\\", "*.*", &rect); #else view = rtgui_filelist_view_create(workbench, "/", "*.*", &rect); #endif /* 模态显示一个文件列表视图,以提供给用户选择图像文件 */ if (rtgui_view_show(RTGUI_VIEW(view), RT_TRUE) == RTGUI_MODAL_OK) { char path[32], image_type[8]; /* 设置文件路径的标签 */ rtgui_filelist_view_get_fullpath(view, path, sizeof(path)); if (image != RT_NULL) { rtgui_image_destroy(image); image = RT_NULL; } rt_memset(image_type, 0, sizeof(image_type)); /* 获得图像的类型 */ if (rt_strstr(path, ".bmp") != RT_NULL || rt_strstr(path, ".BMP") != RT_NULL) strcat(image_type, "bmp"); if (rt_strstr(path, ".png") != RT_NULL || rt_strstr(path, ".PNG") != RT_NULL) strcat(image_type, "png"); if (rt_strstr(path, ".jpg") != RT_NULL || rt_strstr(path, ".JPG") != RT_NULL) strcat(image_type, "jpeg"); if (rt_strstr(path, ".hdc") != RT_NULL || rt_strstr(path, ".HDC") != RT_NULL) strcat(image_type, "hdc"); /* 如果图像文件有效,创建相应的rtgui_image对象 */ if (image_type[0] != '\0') image = rtgui_image_create_from_file(image_type, path, RT_TRUE); } /* 删除 文件列表 视图 */ rtgui_view_destroy(RTGUI_VIEW(view)); rtgui_view_show(_view, RT_FALSE); }
static rt_bool_t rtgui_filelist_view_on_folder_item(rtgui_object_t *object, struct rtgui_event *event) { rtgui_win_t *menu; rtgui_listbox_t *listbox; rtgui_filelist_view_t *view; listbox = RTGUI_LISTBOX(object); menu = RTGUI_WIN(rtgui_widget_get_toplevel(RTGUI_WIDGET(object))); view = RTGUI_FILELIST_VIEW(menu->user_data); /* hide window */ rtgui_win_hide(menu); switch (listbox->current_item) { case 0: { char *dir_ptr; /* destroy menu window */ rtgui_win_destroy(menu); dir_ptr = (char *) rtgui_malloc(256); rtgui_filelist_view_get_fullpath(view, dir_ptr, 256); rtgui_filelist_view_set_directory(view, dir_ptr); rtgui_free(dir_ptr); } break; case 1: /* destroy menu window */ rtgui_win_destroy(menu); break; default: /* destroy menu window */ rtgui_win_destroy(menu); break; } return RT_TRUE; }
/* 打开按钮的回调函数 */ static void open_btn_onbutton(rtgui_widget_t *widget, struct rtgui_event *event) { rtgui_filelist_view_t *view; rtgui_workbench_t *workbench; rtgui_rect_t rect; /* 获得顶层的workbench */ workbench = RTGUI_WORKBENCH(rtgui_widget_get_toplevel(widget)); rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect); /* WIN32平台上和真实设备上的初始路径处理 */ #ifdef _WIN32 view = rtgui_filelist_view_create(workbench, "d:\\", "*.*", &rect); #else view = rtgui_filelist_view_create(workbench, "/", "*.*", &rect); #endif /* 模态显示一个文件列表视图,以提供给用户选择图像文件 */ if (rtgui_container_show(RTGUI_CONTAINER(view), RT_TRUE) == RTGUI_MODAL_OK) { char path[32], name[8]; /* 设置文件路径的标签 */ rtgui_filelist_view_get_fullpath(view, path, sizeof(path)); rt_memset(name, 0, sizeof(name)); /* 获得应用模块的类型 */ if (rt_strstr(path, ".mo") != RT_NULL || rt_strstr(path, ".so") != RT_NULL) { rt_module_open(path); } } /* 删除 文件列表 视图 */ rtgui_container_destroy(RTGUI_CONTAINER(view)); rtgui_container_show(_view, RT_FALSE); }
static void function_filelist(struct rtgui_widget* widget, void* parameter) { rtgui_rect_t rect; rtgui_filelist_view_t *view; rtgui_widget_get_rect(RTGUI_WIDGET(workbench), &rect); view = rtgui_filelist_view_create(workbench, "/SD", "*.*", &rect); if (view != RT_NULL) { if (rtgui_view_show(RTGUI_VIEW(view), RT_TRUE) == RTGUI_MODAL_OK) { int type; char fn[64]; /* get file */ rtgui_filelist_view_get_fullpath(view, fn, sizeof(fn)); type = media_type(fn); /* stop playing */ player_stop(); /* check whether it's a folder */ if (is_directory(fn) == RT_TRUE) { play_list_append_directory(fn); if (play_list_items() > 0) { player_play_item(play_list_start()); } } else if (type == MEDIA_WAV || type == MEDIA_MP3) { /* clear old play list */ play_list_clear(); /* append file */ play_list_append(fn); player_play_item(play_list_start()); } else if (type == MEDIA_M3U) { /* append m3u filelist */ play_list_append_m3u(fn); if (play_list_items() > 0) { player_play_item(play_list_start()); } } player_update_list(); } /* destroy view */ rtgui_filelist_view_destroy(view); } /* show home view */ rtgui_view_show(home_view, RT_FALSE); return; }