/* 触发文件列表视图的按钮回调函数 */
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);
}
/* 方向键: 移动
 * 回车键: 进入下一级目录,或调用文件处理函数
 * 退格键: 返回上一级目录 
 */
rtgui_view_t* demo_gui_fnview(rtgui_view_t* parent_view)
{
	rtgui_view_t *view;
	rtgui_filelist_view_t *fview;

	/* 创建演示用的视图 */
	view = demo_view_create(parent_view, "FileList View");

#ifdef _WIN32
	fview = rtgui_filelist_view_create(view, "d:\\", "*.*", 5, 40, 200, 150);
#else
	fview = rtgui_filelist_view_create(view, "/", "*.*", 5, 40, 200, 150);
#endif

	fview->on_item = demo_fview_on_item;

	return 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_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);
}
Exemple #5
0
void main(void)
{
	struct rtgui_app* application;
	struct rtgui_win* win;	

	application = rtgui_app_create(rt_thread_self(), "filelist");
	if (application != RT_NULL)
	{			
		struct rtgui_rect rect;
	    rtgui_filelist_view_t *view;

		win = rtgui_mainwin_create(RT_NULL, "filelist", 
			RTGUI_WIN_STYLE_MAINWIN | RTGUI_WIN_STYLE_DESTROY_ON_CLOSE);
        
		rtgui_widget_get_extent(RTGUI_WIDGET(win), &rect);

	    view = rtgui_filelist_view_create("/", "*.*", &rect);
        rtgui_container_add_child(RTGUI_CONTAINER(win), RTGUI_WIDGET(view));

		rtgui_win_show(win, RT_TRUE);
		rtgui_app_destroy(application);
	}
}
Exemple #6
0
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;
}