byte
auifav_win(CANVAS * bg, char *path, char **out_char, int titY, int titH,
	   int boxY, int boxH, byte first)
{
	int btnS = agdp() * 20;
	int btnP = agdp() * 2;

	AWINDOWP hWin = aw(bg);
	ACONTROLP title =
	    aclabel(hWin, btnS + btnP, titY, agw() - ((btnS + btnP) * 2), titH,
		    alang_get("tools.favorite"), 1, 1, 2, acfg()->winfg);
	ACONTROLP addthis =
	    imgbtn(hWin, btnP, titY + btnP, btnS, btnS, aui_icons(6), NULL, 1,
		   55);
	ACONTROLP cancel =
	    imgbtn(hWin, agw() - (btnS + btnP), titY + btnP, btnS, btnS,
		   aui_icons(0), NULL, 1, 5);
	ACONTROLP hFile = afbox(hWin, 0, boxY, agw(), boxH, 7, 8, 2, 6);
	auifav_fetch(hFile);

	aw_show_ex(hWin, first ? 1 : 100, titY, hFile);
	byte ondispatch = 1;
	byte reshow = 0;
	do {
		dword msg = aw_dispatch_ex(hWin, titY);
		switch (aw_gm(msg)) {
		case 5:
			{
				//-- DONE
				ondispatch = 0;
			}
			break;
		case 55:
			{
				//-- REFRESH
				ondispatch = 0;
				reshow = 1;
			}
			break;

			//-- ITEM CLICK
		case 7:
			{
				dword fl = afbox_ddata(hFile);
				char *fpath = auifav_getpath(fl);
				if (fpath != NULL) {
					aui_setpath(out_char, fpath, "", 0);
					free(fpath);
					ondispatch = 0;
				}
			}
			break;

			//-- ITEM TAP & HOLD
		case 8:
			{
				dword fl = afbox_ddata(hFile);
				char *fpath = auifav_getpath(fl);
				if (fpath != NULL) {
					int cp = 0;
					AWMENUITEM mi[2];
					aw_menuset(mi, cp++, "select", 33);
					aw_menuset(mi, cp++,
						   "tools.favorite.del", 8);
					byte ret = aw_menu(hWin, NULL, mi, cp);
					if (ret == 2) {
						auifav_del(fpath);
						reshow = 1;
						free(fpath);
						ondispatch = 0;
					} else if (ret == 1) {
						aui_setpath(out_char, fpath, "",
							    0);
						ondispatch = 0;
					}
					free(fpath);
				}
			}
			break;
		}
	}
	while (ondispatch);
	aw_destroy(hWin);
	return reshow;
}
//*
//* SHOW MAIN DIRECTORY LIST UI
//*
byte aui_show(char ** path, byte * state, char * selfile, byte back_ani) {
  //-- REDRAW BG
  aui_setbg(NULL);
  //-- Main Variable
  AUI_VARS v;
  //-- Return Value
  v.reshow = 0;
  //-- Init Drawing Data
  v.selfile = selfile;
  v.path = *path;
  v.state = state;
  v.pad = agdp() * 2;
  v.btnH = agdp() * 20;
  v.boxH = agh() - (aui_minY + (v.btnH * 2) + (v.pad * 4));
  v.boxY = aui_minY + v.btnH + (v.pad * 2);
  v.btnY = v.boxY + v.boxH + v.pad;
  v.navW = agw() - (v.pad * 2);
  v.pthW = v.navW;
  v.navY = aui_minY + v.pad;
  v.btnW = floor(v.navW / 4);
  v.hFileType = (*v.state == 3) ? 1 : 0;
  v.btnFH = aui_cfg_btnFH();
  //-- Draw Navigation Bar
  aui_drawtopbar(&aui_win_bg, 0, aui_minY, agw(), v.btnH + (v.pad * 2));
  aui_drawnav(&aui_win_bg, 0, v.btnY - (v.pad + v.btnFH), agw(),
              v.btnH + (v.pad * 2) + v.btnFH);
  //-- Check is ROOT Filesystem
  v.isRoot = (strcmp(v.path, "/") != 0) ? 0 : 1;
  
  //-- Justify Path UI Width
  if (!v.isRoot) {
    v.pthW -= v.btnH + v.pad;
  }
  
  //-- Draw Path UI
  aui_pathui(&aui_win_bg, v.pad, v.navY, v.pthW, v.btnH, v.path);
  //-- Create Main Window
  v.hWin = aw(&aui_win_bg);
  //****************************[ INIT WINDOW CONTROLS ]****************************/
  //-- REFRESH BUTTON
  imgbtn(v.hWin, v.pad, v.navY, v.btnH, v.btnH, &UI_ICONS[14], NULL, 2,
         10);
         
  //-- PARENT BUTTON
  if (!v.isRoot)
    imgbtn(v.hWin, agw() - (v.btnH + v.pad), v.navY, v.btnH, v.btnH,
           &UI_ICONS[12], NULL, 0, 11);
           
  //-- FILE LIST BOX
  v.hFile =
    afbox(v.hWin, 0, v.boxY, agw(), v.boxH - v.btnFH, 7, 8, v.hFileType,
          6);
  //-- TOOLS
  v.b1 = imgbtn(v.hWin, v.pad, v.btnY - v.btnFH, v.btnW, v.btnH + v.btnFH, &UI_ICONS[11], aui_tbtitle(0), 1, 20);	//-- NEW FOLDER
  v.b2 = imgbtn(v.hWin, v.pad + v.btnW, v.btnY - v.btnFH, v.btnW, v.btnH + v.btnFH, &UI_ICONS[6], aui_tbtitle(1), 1, 21);	//-- FAVORITE
  v.b3 = imgbtn(v.hWin, v.pad + v.btnW * 2, v.btnY - v.btnFH, v.btnW, v.btnH + v.btnFH, &UI_ICONS[16], aui_tbtitle(2), 1, 22);	//-- SELECT ALL
  v.b4 = imgbtn(v.hWin, v.pad + v.btnW * 3, v.btnY - v.btnFH, v.btnW, v.btnH + v.btnFH, &UI_ICONS[10], aui_tbtitle(7), 1, 3);	//-- MENU
  
  //-- SET TOOLBAR STATE
  if (*v.state != 3) {
    *v.state = 0;
  }
  
  *v.state = aui_tbstate(&v, *v.state, 0);
  //-- FETCH ITEMS FROM DIRECTORY
  aui_fetch(v.path, v.hFile, v.selfile);
  afbox_scrolltoitem(v.hFile);
  snprintf(v.selfile, 256, "");
  //-- Show Window
  aw_show_ex(v.hWin, back_ani ? 3 : 4, 0, v.hFile);
  // aw_setfocus(v.hWin,v.hFile);
  
  //-- Set Filebox Type
  if (*v.state == 3) {
    afbox_changeboxtype(v.hFile, 1);
    aui_changetitle(&v, alang_get("paste.location"));
  }
  else {
    aui_changetitle(&v, AROMA_NAME);
  }
  
  aui_showtips(&v);
  
  do {
  }
  while (aui_dispatch(&v));
  
  //-- Window
  aw_destroy(v.hWin);
  //-- Set New Path
  printf("RESHOW PATH [%s]\n", v.path);
  *path = v.path;
  return v.reshow;
}