Esempio n. 1
0
static void rtgui_filelist_view_onenturn(struct rtgui_filelist_view* view)
{
	if (view->items[view->current_item].type == RTGUI_FITEM_DIR)
	{
		char new_path[64];

		if (strcmp(view->items[view->current_item].name, ".") == 0) return ;
		if (strcmp(view->items[view->current_item].name, "..") == 0)
		{
			char *ptr;
			ptr = strrchr(view->current_directory, PATH_SEPARATOR);

			if (ptr == RT_NULL) return ;
			if (ptr == &(view->current_directory[0]))
			{
				/* it's root directory */
				new_path[0] = PATH_SEPARATOR;
				new_path[1] = '\0';
			}
			else
			{
				strncpy(new_path, view->current_directory, ptr - view->current_directory + 1);
				new_path[ptr - view->current_directory] = '\0';
			}
		}
		else if (view->current_item == 0 &&
#ifdef _WIN32
			(view->current_directory[1] == ':') && (view->current_directory[2] == '\\')
#else
			(view->current_directory[0] == '/') && (view->current_directory[1] == '\0')
#endif
			)
		{
			rtgui_filelist_view_destroy(view);

			return ;
		}
		else
		{
			rtgui_filelist_view_menu_pop(RTGUI_WIDGET(view));
			return ;
		}
		rtgui_filelist_view_set_directory(view, new_path);
	}
}
Esempio n. 2
0
rtgui_filelist_view_t* rtgui_filelist_view_create(const char* directory,
												  const char* pattern,
												  const rtgui_rect_t* rect)
{
	struct rtgui_filelist_view* view = RT_NULL;

	/* create a new view */
	view = (struct rtgui_filelist_view*) rtgui_widget_create(RTGUI_FILELIST_VIEW_TYPE);
	if (view != RT_NULL)
	{
		view->items = RT_NULL;
		view->pattern = rt_strdup(pattern);
		view->page_items = rtgui_rect_height(*rect) / (1 + rtgui_theme_get_selected_height());
		rtgui_filelist_view_set_directory(view, directory);
	}

	return view;
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
rtgui_filelist_view_t *rtgui_filelist_view_create(const char *directory,
                                                  const char *pattern,
                                                  const rtgui_rect_t *rect)
{
    struct rtgui_filelist_view *view = RT_NULL;

    /* create a new view */
    view = (struct rtgui_filelist_view *) rtgui_widget_create(RTGUI_FILELIST_VIEW_TYPE);
    if (view != RT_NULL)
    {
        rtgui_widget_set_rect(RTGUI_WIDGET(view), rect);
        view->items = RT_NULL;
        view->pattern = rt_strdup(pattern);
        view->page_items = rtgui_rect_height(*rect) / (1 + rtgui_theme_get_selected_height());
        /* Avoid divide by 0 error, display at least one item. */
        if (view->page_items == 0)
            view->page_items = 1;
        rtgui_filelist_view_set_directory(view, directory);
    }

    return view;
}