Exemplo n.º 1
0
static Ret ftk_file_browser_on_item_clicked(void* ctx, void* list)
{
	FtkWidget* win = (FtkWidget*)ctx;
	FtkListItemInfo* info = NULL;
	int i = ftk_list_view_get_selected((FtkWidget*)list);
	PrivInfo* priv = (PrivInfo*)ftk_widget_user_data(win);
	FtkListModel* model = ftk_list_view_get_model((FtkWidget*)list);
 
 	return_val_if_fail(priv != NULL, RET_FAIL);

	ftk_list_model_get_data(model, i, (void**)&info);
	if(info != NULL && info->text != NULL)
	{
		char* p = NULL;
		char  path[FTK_MAX_PATH+1] = {0};
		char* file_name = info->text;

		if(strcmp(file_name, _("..")) == 0)
		{
			ftk_strcpy(path, priv->path);
			if((p = strrchr(path, FTK_PATH_DELIM)) != NULL)
			{
				if(p == path)
				{
					p[1] = '\0';
				}
				else
				{
					*p = '\0';
				}
			}
			ftk_file_browser_set_path(win, path);
			ftk_file_browser_load(win);
		}
		else if(info->value) /*enter selected folder*/
		{
			ftk_strs_cat(path, FTK_MAX_PATH, priv->path, "/", file_name, NULL);
			ftk_file_browser_set_path(win, path);
			ftk_file_browser_load(win);
		}
		else if(priv->type == FTK_FILE_BROWER_SINGLE_CHOOSER)
		{
			if(priv->on_choosed != NULL)
			{
				ftk_strs_cat(path, FTK_MAX_PATH, priv->path, "/", file_name, NULL);
				priv->on_choosed(priv->on_choosed_ctx, 0, path);
				ftk_widget_unref(win);
			}
		}
		else if(priv->type == FTK_FILE_BROWER_MULTI_CHOOSER)
		{
			info->state = !info->state;
		}
	}

	return RET_OK;
}
Exemplo n.º 2
0
static Ret ftk_file_browser_on_create_folder(void* ctx, void* obj)
{
	int ret = 0;
	const char* name = NULL;
	FtkWidget* win = (FtkWidget*)ctx;
	FtkWidget* dialog = NULL;
	PrivInfo* priv = (PrivInfo*)ftk_widget_user_data(win);
		
	dialog = ftk_file_browser_input_dialog(win, _("Please input folder name:"));
	ret = ftk_dialog_run(dialog);
	if(ret == ID_OK)
	{
		name = ftk_entry_get_text(ftk_widget_lookup(dialog, ID_ENTRY));
		if(name != NULL)
		{
			char folder_name[FTK_MAX_PATH+1] = {0};
			ftk_strs_cat(folder_name, FTK_MAX_PATH, priv->path, "/", name, NULL);
			
			if(ftk_fs_create_dir(folder_name) == RET_OK)
			{
				ftk_file_browser_load(win);
			}
			else
			{
				ftk_tips(_("Create folder failed."));
			}
			ftk_logd("%s: create %s\n", __func__, folder_name);
		}
	}
	ftk_widget_unref(dialog);

	ftk_logd("%s: ret=%d\n", __func__, ret);

	return RET_OK;
}
Exemplo n.º 3
0
static Ret button_browser_clicked(void* ctx, void* obj)
{
	FtkWidget* win = ftk_file_browser_create(FTK_FILE_BROWER_APP);
	ftk_file_browser_set_path(win, "./");
	ftk_file_browser_load(win);

	return RET_OK;
}
Exemplo n.º 4
0
static Ret button_single_choose_clicked(void* ctx, void* obj)
{
	FtkWidget* win = ftk_file_browser_create(FTK_FILE_BROWER_SINGLE_CHOOSER);
	ftk_file_browser_set_choosed_handler(win, on_file_selected, NULL);
	ftk_file_browser_set_path(win, "./");
	ftk_file_browser_load(win);

	return RET_OK;
}
Exemplo n.º 5
0
static Ret _app_music_browser(FtkWidget *thiz)
{
	FtkWidget* win = ftk_file_browser_create(FTK_FILE_BROWER_SINGLE_CHOOSER);
	ftk_window_set_animation_hint(win, "app_main_window");
	ftk_file_browser_set_path(win, "/media/DATA/Musics");
	ftk_file_browser_set_filter(win, "audio/mp3");
	ftk_file_browser_set_choosed_handler(win, _app_music_selected, thiz);
	ftk_file_browser_load(win);

	return RET_OK;
}
Exemplo n.º 6
0
static int lua_ftk_file_browser_load(lua_State* L)
{
	tolua_Error err = {0};
	Ret retv;
	FtkWidget* thiz;
	int param_ok = tolua_isusertype(L, 1, "FtkWidget", 0, &err);

	return_val_if_fail(param_ok, 0);

	thiz = tolua_tousertype(L, 1, 0);
	retv = ftk_file_browser_load(thiz);
	tolua_pushnumber(L, (lua_Number)retv);

	return 1;
}
Exemplo n.º 7
0
static Ret ftk_file_browser_on_rename(void* ctx, void* obj)
{
	int i = 0;
	int ret = 0;
	const char* name = NULL;
	FtkWidget* win = (FtkWidget*)ctx;
	FtkWidget* dialog = NULL;
	FtkListItemInfo* info = NULL;
	PrivInfo* priv = (PrivInfo*)ftk_widget_user_data(win);
	i = ftk_list_view_get_selected(priv->list_view);
	ftk_list_model_get_data(priv->model, i, (void**)&info);
	return_val_if_fail(info != NULL, RET_FAIL);
	
	if(strcmp(info->text, _("..")) == 0)
	{
		return RET_FAIL;
	}

	dialog = ftk_file_browser_input_dialog(win, _("Please input new name:"));
	ret = ftk_dialog_run(dialog);
	if(ret == ID_OK)
	{
		name = ftk_entry_get_text(ftk_widget_lookup(dialog, ID_ENTRY));
		if(name != NULL)
		{
			char new_name[FTK_MAX_PATH+1] = {0};
			char old_name[FTK_MAX_PATH+1] = {0};
			ftk_strs_cat(old_name, FTK_MAX_PATH, priv->path, "/", info->text, NULL);
			ftk_strs_cat(new_name, FTK_MAX_PATH, priv->path, "/", name, NULL);

			if(ftk_fs_move(old_name, new_name) == RET_OK)
			{
				ftk_file_browser_load(win);
			}
			else
			{
				ftk_tips(_("Rename failed."));
			}
			ftk_logd("%s: %s --> %s\n", __func__, old_name, new_name);
		}
	}
	ftk_widget_unref(dialog);

	ftk_logd("%s: ret=%d\n", __func__, ret);

	return RET_OK;
}