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; }