/* Calculating Touch Screen */ static int aipCalculateTouch(AIP_POSITIONP p, int *x, int *y){ if (p->xi.minimum == p->xi.maximum || p->yi.minimum == p->yi.maximum){ *x = p->x; *y = p->y; return 0; } int fb_width = 0; int fb_height = 0; if (_aip->touch_swap_xy){ fb_width = agh(); fb_height = agw(); } else{ fb_width = agw(); fb_height = agh(); } *x = (p->x - p->xi.minimum) * (fb_width - 1) / (p->xi.maximum - p->xi.minimum); *y = (p->y - p->yi.minimum) * (fb_height -1) / (p->yi.maximum - p->yi.minimum); if (*x >= 0 && *x < fb_width && *y >= 0 && *y < fb_height) { return 0; } return 1; }
void aw_textdialog(AWINDOWP parent,char * title,char * text,char * ok_text){ CANVAS * tmpc = aw_muteparent(parent); on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); int elmP = agdp()*4; int winP = agdp()*4; int winW = agw() - (winP*2); int winH = (agh() / 2) + (winP*4); int winX = winP; int winY = (agh() / 2) - (winH/2); int titW = ag_txtwidth(title,1); int capH = ag_fontheight(1) + (elmP*2); int btnH = agdp()*20; int txtH = winH - (btnH + capH + (elmP*3)); int txtY = winY + capH + elmP; int btnY = txtY + txtH + elmP; int btnW = (winW/2) - elmP; int btnX = winX + ((winW/2) - (btnW/2)); int txtX = winX + elmP; int txtW = winW - (elmP*2); CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.border,acfg_var.border_g,acfg_var.roundsz*agdp()); ag_roundgrad(&alertbg,winX+1,winY+1,winW-2,winH-2,acfg_var.winbg,acfg_var.winbg_g,(acfg_var.roundsz*agdp())-1); ag_roundgrad_ex(&alertbg,winX+1,winY+1,winW-2,capH-1,acfg_var.titlebg,acfg_var.titlebg_g,(acfg_var.roundsz*agdp())-1,1,1,0,0); ag_textf(&alertbg,titW,((agw()/2)-(titW/2))+1,winY+elmP+1,title,acfg_var.titlebg_g,1); ag_text(&alertbg,titW,(agw()/2)-(titW/2),winY+elmP,title,acfg_var.titlefg,1); AWINDOWP hWin = aw(&alertbg); actext(hWin,txtX,txtY,txtW,txtH,text,0); acbutton(hWin,btnX,btnY,btnW,btnH,(ok_text==NULL?acfg_var.text_ok:ok_text),0,5); aw_show(hWin); byte ondispatch = 1; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); }
char *auifav(AWINDOWP parent, char *path) { //-- Mute Parent CANVAS *tmpc = aw_muteparent(parent); aw_set_on_dialog(2); ag_rectopa(agc(), 0, 0, agw(), agh(), 0x0000, 180); ag_sync(); //-- Initializing Canvas CANVAS favbg; ag_canvas(&favbg, agw(), agh()); ag_draw(&favbg, agc(), 0, 0); //-- Init Sizes int winY = agh() - round(agh() / 1.618); int winH = agh() - winY; int titH = agdp() * 24; // (agdp()*6) + ag_fontheight(1); int boxY = winY + titH; int boxH = winH - titH; //-- Draw Title ag_roundgrad_ex(&favbg, 0, winY, agw(), titH, acfg()->navbg, acfg()->navbg_g, 0, 0, 0, 0, 0); //-- Draw Main Window ag_roundgrad_ex(&favbg, 0, boxY, agw(), boxH, acfg()->navbg, acfg()->navbg_g, 0, 0, 0, 0, 0); byte first = 1; char *out_char = NULL; while (auifav_win (&favbg, path, &out_char, winY, titH, boxY, boxH, first)) { first = 0; } //-- Cleanup Canvas ag_ccanvas(&favbg); //-- Unmute Parent aw_set_on_dialog(0); aw_unmuteparent(parent, tmpc); return out_char; }
CANVAS * aw_muteparent(AWINDOWP win){ if (win==NULL){ //-- Set Temporary CANVAS * tmpbg = (CANVAS *) malloc(sizeof(CANVAS)); ag_canvas(tmpbg,agw(),agh()); ag_draw(tmpbg,agc(),0,0); return tmpbg; } else{ win->isActived = 0; return NULL; } }
//-- CREATE WINDOW AWINDOWP aw(CANVAS * bg){ ag_setbusy(); //sleep(4); //-- Create Window AWINDOWP win = (AWINDOWP) malloc(sizeof(AWINDOW)); if (win==NULL) return NULL; //-- Create Canvas & Draw BG ag_canvas(&win->c,agw(),agh()); ag_draw(&win->c,bg,0,0); //-- Initializing Variables win->bg = bg; win->controls = NULL; win->controln = 0; win->threadnum = 0; win->focusIndex = -1; win->touchIndex = -1; win->isActived = 0; //-- RETURN return win; }
struct _menuUnit* wipe_ui_init() { ag_canvas(&canvas_wipemenu,agw(),agh()); struct _menuUnit* p = common_ui_init(); return_null_if_fail(p != NULL); return_null_if_fail(menuUnit_set_name(p, "<~wipe.name>") == RET_OK); return_null_if_fail(menuUnit_set_title(p, "<~wipe.title>") == RET_OK); return_null_if_fail(menuUnit_set_icon(p, "@wipe") == RET_OK); return_null_if_fail(RET_OK == menuUnit_set_show(p, &wipe_menu_show)); return_null_if_fail(menuNode_init(p) != NULL); //wipe_data/factory reset struct _menuUnit* temp = common_ui_init(); assert_if_fail(menuNode_add(p, temp) == RET_OK); return_null_if_fail(menuUnit_set_name(temp, "<~wipe.factory.name>") == RET_OK); return_null_if_fail(menuUnit_set_result(temp, WIPE_FACTORY) == RET_OK); return_null_if_fail(menuUnit_set_desc(temp, "<~wipe.factory.desc>") == RET_OK); return_null_if_fail(menuUnit_set_icon(temp, "@wipe.all") == RET_OK); return_null_if_fail(RET_OK == menuUnit_set_show(temp, &wipe_item_show)); //wipe_data temp = common_ui_init(); assert_if_fail(menuNode_add(p, temp) == RET_OK); return_null_if_fail(menuUnit_set_name(temp, "<~wipe.data.name>") == RET_OK); return_null_if_fail(menuUnit_set_result(temp, WIPE_DATA) == RET_OK); return_null_if_fail(menuUnit_set_desc(temp, "<~wipe.data.desc>") == RET_OK); return_null_if_fail(menuUnit_set_icon(temp, "@wipe.data") == RET_OK); return_null_if_fail(RET_OK == menuUnit_set_show(temp, &wipe_item_show)); //wipe_cache temp = common_ui_init(); assert_if_fail(menuNode_add(p, temp) == RET_OK); return_null_if_fail(menuUnit_set_name(temp, "<~wipe.cache.name>") == RET_OK); return_null_if_fail(menuUnit_set_result(temp, WIPE_CACHE) == RET_OK); return_null_if_fail(menuUnit_set_desc(temp, "<~wipe.cache.desc>") == RET_OK); return_null_if_fail(menuUnit_set_icon(temp, "@wipe.cache") == RET_OK); return_null_if_fail(RET_OK == menuUnit_set_show(temp, &wipe_item_show)); return p; }
/* * Descriptions: * ------------- * AROMA File Manager : Permission File * */ byte auido_setperm(AWINDOWP parent,char * path, char * fn) { struct stat fst; byte buf[12]; memset(buf,0,12); if (!stat(path, &fst)) { buf[11] = (fst.st_mode & S_IXOTH) ? 1 : 0; buf[10] = (fst.st_mode & S_IWOTH) ? 1 : 0; buf[9] = (fst.st_mode & S_IROTH) ? 1 : 0; buf[8] = (fst.st_mode & S_IXGRP) ? 1 : 0; buf[7] = (fst.st_mode & S_IWGRP) ? 1 : 0; buf[6] = (fst.st_mode & S_IRGRP) ? 1 : 0; buf[5] = (fst.st_mode & S_IXUSR) ? 1 : 0; buf[4] = (fst.st_mode & S_IWUSR) ? 1 : 0; buf[3] = (fst.st_mode & S_IRUSR) ? 1 : 0; buf[2] = (fst.st_mode & S_ISVTX) ? 1 : 0; buf[1] = (fst.st_mode & S_ISGID) ? 1 : 0; buf[0] = (fst.st_mode & S_ISUID) ? 1 : 0; } //-- Init Dialog Window CANVAS *tmpc = aw_muteparent(parent); aw_set_on_dialog(2); ag_rectopa(agc(), 0, 0, agw(), agh(), 0x0000, 180); ag_sync(); //-- Initializing Canvas CANVAS bg; ag_canvas(&bg, agw(), agh()); ag_draw(&bg, agc(), 0, 0); //-- Size & Position /* MainTitle SubTitle [PAD] user group others [x] r [x] w [x] x [x] r [x] w [x] x [x] r [x] w [x] x [x] s [x] g [x] t [PAD] [ BUTTONS ] */ int pad = agdp() * 4; int padB = pad; int padT = pad; int padL = pad; int padR = pad; PNGCANVASP winp = atheme("img.dialog"); APNG9 winv; if (winp != NULL) { if (apng9_calc(winp, &winv, 1)) { padL = winv.l; padR = winv.r; padB = winv.b; padT = winv.t; } } int hpad = agdp() * 2; int winW = agw() - (pad * 2); //-- Window int winX = pad; int cliW = winW - (padL + padR + (hpad*2)); //-- Window Client int cliX = pad + padL + hpad; int titH = ag_fontheight(1) + (agdp() * 2); //-- Title Height int chkH = agdp()*20; int txtH = ag_fontheight(0) + agdp(); //-- Text Interface Height int btnH = agdp() * 24; int cliH = titH + txtH + (chkH * 4) + btnH + (pad); int winH = cliH + padT + padB; int winY = (agh() / 2) - (winH / 2); int cliY = winY + padT; int _Y = cliY; //-- Draw Canvas if (!atheme_draw("img.dialog", &bg, winX, winY, winW, winH)) { ag_roundgrad(&bg, winX - 1, winY - 1, winW + 2, winH + 2, acfg()->border, acfg()->border_g, (acfg()->roundsz * agdp()) + 1); ag_roundgrad(&bg, winX, winY, winW, winH, acfg()->dialogbg, acfg()->dialogbg_g, acfg()->roundsz * agdp()); } //-- Init Window & Controls AWINDOWP hWin = aw(&bg); ACONTROLP txtTitle = aclabel(hWin, cliX, _Y, cliW, titH, alang_get("tools.chmod"), 1, 1, 2, acfg()->winfg); _Y+=titH; ACONTROLP txtFilename = aclabel(hWin, cliX, _Y, cliW, txtH, fn, 0, 1, 2, acfg()->winfg); _Y+=txtH+pad; int colW = cliW / 4; int col1 = cliX; int col2 = col1 + colW; int col3 = col2 + colW; int col4 = col3 + colW; aclabel(hWin, col1, _Y, colW, chkH, alang_get("tools.chmod.user"), 0, 1, 1, acfg()->winfg); ACONTROLP cbR1 = accb(hWin,col2,_Y,colW,chkH,alang_get("tools.chmod.read"),buf[3]); ACONTROLP cbW1 = accb(hWin,col3,_Y,colW,chkH,alang_get("tools.chmod.write"),buf[4]); ACONTROLP cbX1 = accb(hWin,col4,_Y,colW,chkH,alang_get("tools.chmod.exec"),buf[5]); _Y+=chkH; aclabel(hWin, col1, _Y, colW, chkH, alang_get("tools.chmod.group"), 0, 1, 1, acfg()->winfg); ACONTROLP cbR2 = accb(hWin,col2,_Y,colW,chkH,alang_get("tools.chmod.read"),buf[6]); ACONTROLP cbW2 = accb(hWin,col3,_Y,colW,chkH,alang_get("tools.chmod.write"),buf[7]); ACONTROLP cbX2 = accb(hWin,col4,_Y,colW,chkH,alang_get("tools.chmod.exec"),buf[8]); _Y+=chkH; aclabel(hWin, col1, _Y, colW, chkH, alang_get("tools.chmod.others"), 0, 1, 1, acfg()->winfg); ACONTROLP cbR3 = accb(hWin,col2,_Y,colW,chkH,alang_get("tools.chmod.read"),buf[9]); ACONTROLP cbW3 = accb(hWin,col3,_Y,colW,chkH,alang_get("tools.chmod.write"),buf[10]); ACONTROLP cbX3 = accb(hWin,col4,_Y,colW,chkH,alang_get("tools.chmod.exec"),buf[11]); _Y+=chkH; ACONTROLP cbZ1 = accb(hWin,col2,_Y,colW,chkH,alang_get("tools.chmod.setuid"),buf[0]); ACONTROLP cbZ2 = accb(hWin,col3,_Y,colW,chkH,alang_get("tools.chmod.setgid"),buf[1]); ACONTROLP cbZ3 = accb(hWin,col4,_Y,colW,chkH,alang_get("tools.chmod.sticky"),buf[2]); _Y+=chkH; int btnW = cliW / 2; int btn1 = cliX; int btn2 = btn1 + btnW; ACONTROLP okBtn = imgbtn(hWin, btn1, _Y, btnW-(pad/2), btnH, aui_icons(33), alang_get("ok"), 3, 6); ACONTROLP cancelBtn = imgbtn(hWin, btn2+(pad/2), _Y, btnW-(pad/2), btnH, aui_icons(0), alang_get("cancel"), 3, 5); //-- Show Window aw_show_ex(hWin, 0, 0, okBtn); byte ondispatch = 1; byte retval = 1; //-- Dispatch do { dword msg = aw_dispatch(hWin); switch (aw_gm(msg)) { case 5: { ondispatch = 0; } break; case 6: { // ondispatch = 0; buf[0]=accb_ischecked(cbZ1); buf[1]=accb_ischecked(cbZ2); buf[2]=accb_ischecked(cbZ3); buf[3]=accb_ischecked(cbR1); buf[4]=accb_ischecked(cbW1); buf[5]=accb_ischecked(cbX1); buf[6]=accb_ischecked(cbR2); buf[7]=accb_ischecked(cbW2); buf[8]=accb_ischecked(cbX2); buf[9]=accb_ischecked(cbR3); buf[10]=accb_ischecked(cbW3); buf[11]=accb_ischecked(cbX3); mode_t newmod = 0; if (buf[0]) newmod |= S_ISUID; if (buf[1]) newmod |= S_ISGID; if (buf[2]) newmod |= S_ISVTX; if (buf[3]) newmod |= S_IRUSR; if (buf[4]) newmod |= S_IWUSR; if (buf[5]) newmod |= S_IXUSR; if (buf[6]) newmod |= S_IRGRP; if (buf[7]) newmod |= S_IWGRP; if (buf[8]) newmod |= S_IXGRP; if (buf[9]) newmod |= S_IROTH; if (buf[10]) newmod |= S_IWOTH; if (buf[11]) newmod |= S_IXOTH; printf("CHMOD %o - %s\n",newmod,path); chmod(path,newmod); ondispatch = 0; retval = 0; } break; } } while (ondispatch); //-- Release Resources aw_destroy(hWin); ag_ccanvas(&bg); aw_set_on_dialog(0); aw_unmuteparent(parent, tmpc); return retval; }
int atouch_wait_ex(ATEV *atev, byte calibratingtouch){ atev->x = -1; atev->y = -1; // if (prev_was_key) ui_clear_key_queue(); while (1){ int key = ui_wait_key(); //-- Custom Message if (key==atouch_message_code){ atev->msg = atouch_message_value; atev->d = 0; atev->x = 0; atev->y = 0; atev->k = 0; ui_clear_key_queue(); atouch_message_value = 0; return ATEV_MESSAGE; } atev->d = ui_key_pressed(key); atev->k = key; if (key==evtouch_code){ if ((evtouch_x>0)&&(evtouch_y>0)){ //-- GENERIC TOUCH SCREEN INPUT EVENT if (((evtouch_x<=agw())&&(evtouch_y<=agh()))||(calibratingtouch)){ atev->x = evtouch_x; atev->y = evtouch_y; evtouch_locked=0; switch(evtouch_state){ case 1: return ATEV_MOUSEDN; break; case 2: return ATEV_MOUSEMV; break; default: return ATEV_MOUSEUP; break; } } //-- CAPIATIVE KEY INPUT EVENT else if(evtouch_y>(agh()+(agdp()*10))){ int capiative_btnsz = agw()/4; if (evtouch_state==0){ atev->d = 0; if (evtouch_x<capiative_btnsz){ vibrate(30); atev->k = KEY_HOME; evtouch_locked=0; return ATEV_SELECT; } else if (evtouch_x<(capiative_btnsz*2)){ vibrate(30); atev->k = KEY_MENU; evtouch_locked=0; return ATEV_MENU; } else if (evtouch_x<(capiative_btnsz*3)){ vibrate(30); atev->k = KEY_BACK; evtouch_locked=0; return ATEV_BACK; } else if (evtouch_x<(capiative_btnsz*4)){ vibrate(30); atev->k = KEY_SEARCH; evtouch_locked=0; return ATEV_MENU; } } // home,menu,back,search } } evtouch_locked=0; } else if ((key!=0)&&(key==acfg()->ckey_up)) return ATEV_UP; else if ((key!=0)&&(key==acfg()->ckey_down)) return ATEV_DOWN; else if ((key!=0)&&(key==acfg()->ckey_select)) return ATEV_SELECT; else if ((key!=0)&&(key==acfg()->ckey_back)) return ATEV_BACK; else if ((key!=0)&&(key==acfg()->ckey_menu)) return ATEV_MENU; else{ /* DEFINED KEYS */ switch (key){ /* RIGHT */ case KEY_RIGHT: return ATEV_RIGHT; break; /* LEFT */ case KEY_LEFT: return ATEV_LEFT; break; /* DOWN */ case KEY_DOWN: case KEY_CAPSLOCK: case KEY_VOLUMEDOWN: return ATEV_DOWN; break; /* UP */ case KEY_UP: case KEY_LEFTSHIFT: case KEY_VOLUMEUP: return ATEV_UP; break; /* SELECT */ case KEY_LEFTBRACE: case KEY_POWER: case KEY_HOME: case BTN_MOUSE: case KEY_ENTER: case KEY_CENTER: case KEY_CAMERA: case KEY_F21: case KEY_SEND: return ATEV_SELECT; break; /* SHOW MENU */ case KEY_SEARCH: case 229: case KEY_MENU: return ATEV_MENU; break; /* BACK */ case KEY_END: case KEY_BACKSPACE: case KEY_BACK: return ATEV_BACK; break; } } } return 0; }
byte aw_confirm(AWINDOWP parent, char * titlev,char * textv,char * img,char * yes_text,char * no_text){ CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); char title[64]; char text[512]; snprintf(title,64,"%s",titlev); snprintf(text,512,"%s",textv); int pad = agdp()*4; int winW = agw()-(pad*2); int txtW = winW-(pad*2); int txtX = pad*2; int btnH = agdp()*20; int titW = ag_txtwidth(title,1); int titH = ag_fontheight(1) + (pad*2); PNGCANVASP winp = atheme("img.dialog"); PNGCANVASP titp = atheme("img.dialog.titlebar"); APNG9 winv; APNG9 titv; int vtitY = -1; int vpadB = -1; int vimgX = pad*2; if (titp!=NULL){ if (apng9_calc(titp,&titv,1)){ int tmptitH = titH - (pad*2); titH = tmptitH + (titv.t+titv.b); vtitY = titv.t; } } if (winp!=NULL){ if (apng9_calc(winp,&winv,1)){ txtW = winW - (winv.l+winv.r); txtX = pad + (winv.l); vimgX= pad + (winv.l); vpadB= winv.b; } } //-- Load Icon PNGCANVAS ap; byte imgE = 0; int imgW = 0; int imgH = 0; if (apng_load(&ap,img)){ imgE = 1; imgW = min(ap.w,agdp()*30); imgH = min(ap.h,agdp()*30); int imgA = pad + imgW; txtX += imgA; txtW -= imgA; } int txtH = ag_txtheight(txtW,text,0); int infH = ((imgE)&&(txtH<imgH))?imgH:txtH; //-- Calculate Window Size & Position int winH = titH + infH + btnH + (pad*3); if (vpadB!=-1){ winH = titH + infH + btnH + (pad*2) + vpadB; } int winX = pad; int winY = (agh()/2) - (winH/2); //-- Calculate Title Size & Position int titX = (agw()/2) - (titW/2); int titY = winY + pad; if (vtitY!=-1) titY = winY+vtitY; //-- Calculate Text Size & Position int infY = winY + titH + pad; int txtY = infY + ((infH - txtH) / 2); int imgY = infY; //-- Calculate Button Size & Position int btnW = (txtW / 2) - (pad/2); int btnY = infY+infH+pad; int btnX = txtX; int btnX2 = txtX+(txtW/2)+(pad/2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window if (!atheme_draw("img.dialog", &alertbg, winX-1,winY-1,winW+2,winH+2)){ ag_roundgrad(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.dialogbg,acfg_var.dialogbg_g,acfg_var.roundsz*agdp()); } //-- Draw Title if (!atheme_draw("img.dialog.titlebar", &alertbg, winX,winY,winW,titH)){ ag_roundgrad_ex(&alertbg,winX,winY,winW,titH,acfg_var.dlgtitlebg,acfg_var.dlgtitlebg_g,acfg_var.roundsz*agdp(),1,1,0,0); } ag_textf(&alertbg,titW,titX+1,titY+1,title,acfg_var.dlgtitlebg_g,1); ag_text(&alertbg,titW,titX,titY,title,acfg_var.dlgtitlefg,1); //-- Draw Image if (imgE){ apng_draw_ex(&alertbg,&ap,vimgX,imgY,0,0,imgW,imgH); apng_close(&ap); } //-- Draw Text ag_textf(&alertbg,txtW,txtX+1,txtY+1,text,acfg_var.dialogbg,0); ag_text(&alertbg,txtW,txtX,txtY,text,acfg_var.dialogfg,0); AWINDOWP hWin = aw(&alertbg); acbutton(hWin,btnX,btnY,btnW,btnH,(yes_text==NULL?acfg_var.text_yes:yes_text),0,6); acbutton(hWin,btnX2,btnY,btnW,btnH,(no_text==NULL?acfg_var.text_no:no_text),0,5); aw_show(hWin); byte ondispatch = 1; byte res = 0; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 6: res=1; ondispatch = 0; break; case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); return res; }
void aw_calibtools(AWINDOWP parent){ int USE_HACK = aw_confirm( parent, "Use alternative touch", "Do you want to use alternative touch?\n Only use if the default method does not work.\n\nPress the volume keys to select Yes or No.", "@alert", acfg_var.text_no, acfg_var.text_yes ); byte current_hack = atouch_gethack(); if (!USE_HACK){ atouch_sethack(1); } else{ atouch_sethack(0); } //-- Set Mask CANVAS * tmpc = aw_muteparent(parent); on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,220); ag_sync(); byte isvalid = 0; //-- Initializing Canvas CANVAS ccv; ag_canvas(&ccv,agw(),agh()); ag_blur(&ccv,agc(),agdp()*2); int xpos[5] = { agdp()*10, agw()-(agdp()*10), agdp()*10, agw()-(agdp()*10), agw()/2 }; int ypos[5] = { agdp()*10, agdp()*10, agh() - (agdp()*10), agh()-(agdp()*10), agh()/2 }; int xtch[5] = { 0,0,0,0,0 }; int ytch[5] = { 0,0,0,0,0 }; atouch_plaincalibrate(); char datx[256]; if (!aw_calibdraw(&ccv,0,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,1,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,2,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,3,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,4,xpos,ypos,xtch,ytch)) goto doneit; float padsz = agdp()*5; float leftx = ((xtch[0]+xtch[2])/2); float rightx = ((xtch[1]+xtch[3])/2); float topy = ((ytch[0]+ytch[1])/2); float bottomy = ((ytch[2]+ytch[3])/2); float centerx = xtch[4]; float centery = ytch[4]; float halfx = (agw()/2)-padsz; float halfy = (agh()/2)-padsz; float fullx = agw()-padsz; float fully = agh()-padsz; byte data_is_valid = 0; float cal_x = 0; float cal_y = 0; int add_x = 0; int add_y = 0; if ((halfx>0)&&(fullx>0)&&(halfy>0)&&(fully>0)){ cal_x = ((((centerx-leftx)/halfx) + ((rightx-leftx)/fullx))/2); cal_y = ((((centery-topy)/halfy) + ((bottomy-topy)/fully))/2); if ((cal_x>0)&&(cal_y>0)){ add_x = round((leftx / cal_x) - padsz); add_y = round((topy / cal_y) - padsz); data_is_valid = 1; } } if (data_is_valid){ atouch_set_calibrate(cal_x,add_x,cal_y,add_y); if (!USE_HACK){ snprintf(datx,255, "Use/Replace this command in <#009>aroma-config</#>:\n\n" "<#060>calibrate(\n \"%01.4f\",\"%i\",\"%01.4f\",\"%i\",\"yes\"\n);</#>\n\n", cal_x,add_x,cal_y,add_y); } else{ snprintf(datx,255, "Use/Replace this command in <#009>aroma-config</#>:\n\n" "<#060>calibrate(\n \"%01.4f\",\"%i\",\"%01.4f\",\"%i\"\n);</#>\n\n", cal_x,add_x,cal_y,add_y); } aw_calibdraw(&ccv,-1,xpos,ypos,xtch,ytch); isvalid = 1; } else{ aw_alert(parent, "Calibrated Data", "Calibrated data not valid, please try again...", "@info", NULL); } doneit: ag_ccanvas(&ccv); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); byte dont_restore_caldata = 0; if (isvalid){ aw_alert(parent, "Calibrated Data", datx, "@info", NULL); dont_restore_caldata = aw_confirm( parent, "Set Calibrated Data", "Do you want to use the current calibrated data in the current process?\n\n<#080>NOTE:</#> It will revert back when you restart the AROMA Installer...", "@alert", NULL, NULL ); } if (!dont_restore_caldata){ atouch_sethack(current_hack); atouch_restorecalibrate(); } }
//* //* SHOW TIPS //* void aui_showtips(AUI_VARSP v) { if (aui_is_show_tips) { aui_is_show_tips = 0; CANVAS * tmpc = aw_muteparent(v->hWin); aw_set_on_dialog(2); ag_rectopa(agc(), 0, 0, agw(), agh(), 0x0000, 180); ag_sync(); CANVAS alertbg; ag_canvas(&alertbg, agw(), agh()); ag_draw(&alertbg, agc(), 0, 0); //-- Load Tips Font ag_loadbigfont("fonts/HTC Hand/HTCHand.otf", 18, AROMA_DIR "/"); PNGCANVAS ap; int imS = agdp() * 12; int bHH = v->btnH / 2; int w75 = round(agw() * 0.6); if (apng_load(&ap, "common/tips1")) { apng_stretch(&alertbg, &ap, v->pad + v->btnH, v->boxY - bHH, imS, imS, 0, 0, ap.w, ap.h); apng_close(&ap); } ag_text(&alertbg, w75, v->pad + v->btnH + imS, v->boxY - bHH, "Here is the path of the current working directory", 0xffff, 1); if (apng_load(&ap, "common/tips2")) { apng_stretch(&alertbg, &ap, agw() - (v->btnH + imS), v->boxY + (v->btnH * 4.5), imS, imS, 0, 0, ap.w, ap.h); apng_close(&ap); } ag_text(&alertbg, w75, agw() - (v->btnH + imS + w75), v->boxY + (v->btnH * 4.5), "<@right>Tap the checkbox to select multiple files</@>", 0xffff, 1); if (apng_load(&ap, "common/tips3")) { apng_stretch(&alertbg, &ap, agw() - (v->btnH + imS * 3), v->btnY - (v->pad + v->btnFH + imS), imS, imS, 0, 0, ap.w, ap.h); apng_close(&ap); } ag_text(&alertbg, w75, agw() - (v->btnH + imS * 3 + w75), v->btnY - (v->pad + v->btnFH + (imS * 2)), "<@right>All functions you need is on this toolbar</@>", 0xffff, 1); //-- Revert Font aui_cfg_reloadfonts(); //-- Create Window AWINDOWP hWin = aw(&alertbg); aw_show(hWin); byte ondispatch = 1; while (ondispatch) { dword msg = aw_dispatch_ex(hWin, agh()); byte msgm = aw_gm(msg); if (msgm == 5) { ondispatch = 0; } } aw_destroy(hWin); ag_ccanvas(&alertbg); aw_set_on_dialog(0); aw_unmuteparent(v->hWin, tmpc); } }
//* //* 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; }
void aw_calibtools(AWINDOWP parent){ //-- Set Mask CANVAS * tmpc = aw_muteparent(parent); on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,220); ag_sync(); byte isvalid = 0; //-- Initializing Canvas CANVAS ccv; ag_canvas(&ccv,agw(),agh()); ag_blur(&ccv,agc(),agdp()*2); int xpos[5] = { agdp()*10, agw()-(agdp()*10), agdp()*10, agw()-(agdp()*10), agw()/2 }; int ypos[5] = { agdp()*10, agdp()*10, agh() - (agdp()*10), agh()-(agdp()*10), agh()/2 }; int xtch[5] = { 0,0,0,0,0 }; int ytch[5] = { 0,0,0,0,0 }; atouch_plaincalibrate(); char datx[256]; if (!aw_calibdraw(&ccv,0,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,1,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,2,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,3,xpos,ypos,xtch,ytch)) goto doneit; if (!aw_calibdraw(&ccv,4,xpos,ypos,xtch,ytch)) goto doneit; float padsz = agdp()*5; float leftx = ((xtch[0]+xtch[2])/2); float rightx = ((xtch[1]+xtch[3])/2); float topy = ((ytch[0]+ytch[1])/2); float bottomy = ((ytch[2]+ytch[3])/2); float centerx = xtch[4]; float centery = ytch[4]; float halfx = (agw()/2)-padsz; float halfy = (agh()/2)-padsz; float fullx = agw()-padsz; float fully = agh()-padsz; byte data_is_valid = 0; float cal_x = 0; float cal_y = 0; int add_x = 0; int add_y = 0; if ((halfx>0)&&(fullx>0)&&(halfy>0)&&(fully>0)){ cal_x = ((((centerx-leftx)/halfx) + ((rightx-leftx)/fullx))/2); cal_y = ((((centery-topy)/halfy) + ((bottomy-topy)/fully))/2); if ((cal_x>0)&&(cal_y>0)){ add_x = round((leftx / cal_x) - padsz); add_y = round((topy / cal_y) - padsz); data_is_valid = 1; } } if (data_is_valid){ atouch_set_calibrate(cal_x,add_x,cal_y,add_y); snprintf(datx,255, "Use/Replace this command in top of <#009>aroma-config</#>:\n\n" "<#060>calibrate(\"%01.4f\",\"%i\",\"%01.4f\",\"%i\");</#>\n\n", cal_x,add_x,cal_y,add_y); aw_calibdraw(&ccv,-1,xpos,ypos,xtch,ytch); isvalid = 1; } else{ aw_alert(parent, "Calibrated Data", "Calibrated Data not Valid, Please Try Again...", "icons/info", NULL); } doneit: ag_ccanvas(&ccv); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); byte dont_restore_caldata = 0; if (isvalid){ aw_alert(parent, "Calibrated Data", datx, "icons/info", NULL); dont_restore_caldata = aw_confirm( parent, "Set Calibrated Data", "Do You Want to Use Current Calibrated Data in Current Process?\n\n<#080>NOTE:</#> It Will revert back when you restart the AROMA Installer...", "icons/alert", NULL, NULL ); } if (!dont_restore_caldata){ atouch_restorecalibrate(); } }
byte aw_confirm(AWINDOWP parent, char * titlev,char * textv,char * img,char * yes_text,char * no_text){ CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); char title[32]; char text[513]; snprintf(title,31,"%s",titlev); snprintf(text,512,"%s",textv); int pad = agdp()*4; int winW = agw()-(pad*2); int txtW = winW-(pad*2); int txtX = pad*2; int btnH = agdp()*20; int titW = ag_txtwidth(title,1); int titH = ag_fontheight(1) + (pad*2); //-- Load Icon PNGCANVAS ap; byte imgE = 0; int imgW = 0; int imgH = 0; if (apng_load(&ap,img)){ imgE = 1; imgW = min(ap.w,agdp()*30); imgH = min(ap.h,agdp()*30); int imgA = pad + imgW; txtX += imgA; txtW -= imgA; } int txtH = ag_txtheight(txtW,text,0); int infH = ((imgE)&&(txtH<imgH))?imgH:txtH; //-- Calculate Window Size & Position int winH = titH + infH + btnH + (pad*3); int winX = pad; int winY = (agh()/2) - (winH/2); //-- Calculate Title Size & Position int titX = (agw()/2) - (titW/2); int titY = winY + pad; //-- Calculate Text Size & Position int infY = winY + titH + pad; int txtY = infY + ((infH - txtH) / 2); int imgY = infY; //-- Calculate Button Size & Position int btnW = (txtW / 2) - (pad/2); int btnY = infY+infH+pad; int btnX = txtX; int btnX2 = txtX+(txtW/2)+(pad/2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window ag_roundgrad(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.winbg,acfg_var.winbg_g,acfg_var.roundsz*agdp()); //-- Draw Title ag_roundgrad_ex(&alertbg,winX,winY,winW,titH,acfg_var.titlebg,acfg_var.titlebg_g,acfg_var.roundsz*agdp(),1,1,0,0); ag_textf(&alertbg,titW,titX+1,titY+1,title,acfg_var.titlebg_g,1); ag_text(&alertbg,titW,titX,titY,title,acfg_var.titlefg,1); //-- Draw Image if (imgE){ apng_draw_ex(&alertbg,&ap,pad*2,imgY,0,0,imgW,imgH); apng_close(&ap); } //-- Draw Text ag_textf(&alertbg,txtW,txtX+1,txtY+1,text,acfg_var.textbg,0); ag_text(&alertbg,txtW,txtX,txtY,text,acfg_var.textfg,0); AWINDOWP hWin = aw(&alertbg); acbutton(hWin,btnX,btnY,btnW,btnH,(yes_text==NULL?"Yes":yes_text),0,6); acbutton(hWin,btnX2,btnY,btnW,btnH,(no_text==NULL?"No":no_text),0,5); aw_show(hWin); byte ondispatch = 1; byte res = 0; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 6: res=1; ondispatch = 0; break; case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); return res; }
/* Translate Event */ static byte aipTranslateEvent(AIP_EVP e, struct input_event * ev){ static int downX = -1; static int downY = -1; static int discard = 0; static int lastWasSynReport = 0; static int touchReleaseOnNextSynReport = 0; int i; int x, y; /* Not Used */ if (e->ignored){ return 1; } if ((ev->type==EV_REL) && (ev->code == REL_Z)){ /* This appears to be an accelerometer or another strange input device. It's not the touchscreen. */ e->ignored = 1; return AIP_TRANS_IGNONE; } /* Handle keyboard events, value of 1 indicates key down, 0 indicates key up */ if (ev->type == EV_KEY) { return AIP_TRANS_KEY; } /* Possibly Touchscreen */ if (ev->type == EV_ABS) { switch (ev->code) { case AIP_ABS_X: { e->p.synced |= 0x01; e->p.x = ev->value; printf("EV: %s => ABS_X %d\n", e->device_name, ev->value); } break; case AIP_ABS_Y: { e->p.synced |= 0x02; e->p.y = ev->value; printf("EV: %s => ABS_Y %d\n", e->device_name, ev->value); } break; case AIP_ABS_MT_POSITION: { e->mt_p.synced = 0x03; if (ev->value == (1 << 31)){ e->mt_p.x = 0; e->mt_p.y = 0; lastWasSynReport = 1; } else{ lastWasSynReport = 0; e->mt_p.x = (ev->value & 0x7FFF0000) >> 16; e->mt_p.y = (ev->value & 0xFFFF); } } break; case AIP_ABS_MT_TOUCH_MAJOR: { if (ev->value == 0) { e->mt_p.x = 0; e->mt_p.y = 0; touchReleaseOnNextSynReport = 1; } } break; case AIP_ABS_MT_PRESSURE: { if (ev->value == 0){ e->mt_p.x = 0; e->mt_p.y = 0; touchReleaseOnNextSynReport = 1; } } break; case AIP_ABS_MT_POSITION_X: { e->mt_p.synced |= 0x01; e->mt_p.x = ev->value; } break; case AIP_ABS_MT_POSITION_Y: { e->mt_p.synced |= 0x02; e->mt_p.y = ev->value; } break; default: { return AIP_TRANS_NONE; } } if (ev->code != AIP_ABS_MT_POSITION){ lastWasSynReport = 0; return AIP_TRANS_NONE; } } if (ev->code != AIP_ABS_MT_POSITION && (ev->type != EV_SYN || (ev->code != AIP_SYN_REPORT && ev->code != AIP_SYN_MT_REPORT) ) ){ lastWasSynReport = 0; return AIP_TRANS_NONE; } if (ev->code == AIP_SYN_MT_REPORT){ return AIP_TRANS_NONE; } if (lastWasSynReport == 1 || touchReleaseOnNextSynReport == 1){ /* Reset the value */ touchReleaseOnNextSynReport = 0; /* We are a finger-up state */ if (!discard){ /* Report the key up */ ev->type = EV_ABS; ev->code = 0; ev->value = (downX << 16) | downY; } downX = -1; downY = -1; if (discard){ discard = 0; return AIP_TRANS_NONE; } return AIP_TRANS_TOUCH; } lastWasSynReport = 1; if (e->p.synced & 0x03){ aipCalculateTouch(&e->p, &x, &y); } else if (e->mt_p.synced & 0x03){ aipCalculateTouch(&e->mt_p, &x, &y); } else{ return AIP_TRANS_NONE; } /* Swap & Flip Handler */ if (_aip->touch_swap_xy){ x ^= y; y ^= x; x ^= y; } if (_aip->touch_flip_x){ x = agw() - x; } if (_aip->touch_flip_y){ y = agh() - y; } /* Clear the current sync states */ e->p.synced = e->mt_p.synced = 0; /* If we have nothing useful to report, skip it */ if (x == -1 || y == -1){ return AIP_TRANS_NONE; } /* On first touch, see if we're at a virtual key */ if (downX == -1){ /* Attempt mapping to virtual key */ for (i=0; i<e->vkn; ++i){ int xd = abs(e->vks[i].x - x); int yd = abs(e->vks[i].y - y); if (xd < e->vks[i].w/2 && yd < e->vks[i].h/2){ ev->type = EV_KEY; ev->code = e->vks[i].scan; ev->value= 1; /* vibrate(VIBRATOR_TIME_MS); */ discard = 1; downX = 0; return AIP_TRANS_KEY; } } } /* If we were originally a button press, discard this event */ if (discard){ return AIP_TRANS_NONE; } /* Record where we started the touch for deciding if this is a key or a scroll */ downX = x; downY = y; ev->type = EV_ABS; ev->code = 1; ev->value = (x << 16) | y; return AIP_TRANS_TOUCH; }
byte aw_showmenu(AWINDOWP parent){ CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 2; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); int btnH = agdp()*20; int pad = agdp()*4; int vpad = agdp()*2; int winH = ((btnH+vpad) * 3) + pad; int winW = agw()-(pad*2); int winX = pad; int winY = agh()-winH; int btnY = winY + pad; int btnX = winX + pad; int btnW = winW - (pad*2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window Background ag_roundgrad_ex(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1,1,1,0,0); ag_roundgrad_ex(&alertbg,winX,winY,winW,winH,acfg_var.navbg,acfg_var.navbg_g,acfg_var.roundsz*agdp(),1,1,0,0); //-- Create Window AWINDOWP hWin = aw(&alertbg); acbutton(hWin,btnX,btnY,btnW,btnH,acfg_var.text_about,0,11); //acbutton(hWin,btnX,btnY+((btnH+vpad)*1),btnW,btnH,"Help",0,12); acbutton(hWin,btnX,btnY+((btnH+vpad)*1),btnW,btnH,acfg_var.text_calibrating,0,13); acbutton(hWin,btnX,btnY+((btnH+vpad)*2),btnW,btnH,acfg_var.text_quit,0,14); aw_show(hWin); byte ondispatch = 1; byte res = 0; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 5: ondispatch = 0; break; case 11: res=1; ondispatch = 0; break; case 12: res=2; ondispatch = 0; break; case 13: res=3; ondispatch = 0; break; case 14: res=4; ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); if (res==1){ aw_about_dialog(parent); } else if (res==2){ aw_help_dialog(parent); } else if (res==3){ aw_calibtools(parent); } else if (res==4){ byte res = aw_confirm(parent, AROMA_NAME " " AROMA_VERSION, acfg_var.text_quit_msg,"@alert",NULL,NULL); if (res) return 2; } return 0; }
byte aw_calibdraw(CANVAS * c, int id,int * xpos,int * ypos,int * xtch,int * ytch){ ag_draw(agc(),c,0,0); usleep(500000); int sz = agdp()*10; if (id!=-1){ int x = xpos[id]; int y = ypos[id]; int rx = x-(sz/2); int ry = y-(sz/2); ag_roundgrad( agc(),rx,ry,sz,sz, 0xffff, ag_rgb(200,200,200), sz/2); } if (id!=-1){ char txt[128]; snprintf(txt,127,"Step %i: Tap The Circle To Calibrate",id+1); char * txt2 = "Press Back Key or Other Keys To Cancel"; int tw = ag_txtwidth(txt,0); int tw2 = ag_txtwidth(txt2,0); int tx = (agw()/2) - (tw/2); int tx2= (agw()/2) - (tw2/2); int ty = (agh()/2) + (sz*2); int ty2= (ty +ag_fontheight(0)+agdp()); ag_text(agc(),tw,tx+1,ty+1,txt,0x0000,0); ag_text(agc(),tw,tx,ty,txt,0xffff,0); ag_text(agc(),tw2,tx2+1,ty2+1,txt2,0x0000,0); ag_text(agc(),tw2,tx2,ty2,txt2,0xffff,0); } else{ char * txt = "Tap The Screen to Test Calibrated Data"; char * txt2 = "Press Back or Other Keys To Continue"; int tw = ag_txtwidth(txt,0); int tw2 = ag_txtwidth(txt2,0); int tx = (agw()/2) - (tw/2); int tx2= (agw()/2) - (tw2/2); int ty = (agh()/2) + (sz*2); int ty2= (ty +ag_fontheight(0)+agdp()); ag_text(agc(),tw,tx+1,ty+1,txt,0x0000,0); ag_text(agc(),tw,tx,ty,txt,0xffff,0); ag_text(agc(),tw2,tx2+1,ty2+1,txt2,0x0000,0); ag_text(agc(),tw2,tx2,ty2,txt2,0xffff,0); } CANVAS bg; ag_canvas(&bg,agw(),agh()); ag_draw(&bg,agc(),0,0); ag_sync(); byte res=1; byte ond=1; byte onp=0; ui_clear_key_queue(); while (ond){ ATEV atev; ui_clear_key_queue(); int action=atouch_wait_ex(&atev,1); switch (action){ case ATEV_MOUSEDN:{ onp=1; if (id==-1){ ag_draw(agc(),&bg,0,0); int vz = agdp()*40; int vx = atev.x-(vz/2); int vy = atev.y-(vz/2); ag_roundgrad(agc(),vx,vy,vz,vz,0xffff,ag_rgb(180,180,180),(vz/2)); ag_sync(); } } break; case ATEV_MOUSEMV:{ if (onp){ if (id!=-1){ xtch[id]=atev.x; ytch[id]=atev.y; } else{ ag_draw(agc(),&bg,0,0); int vz = agdp()*40; int vx = atev.x-(vz/2); int vy = atev.y-(vz/2); ag_roundgrad(agc(),vx,vy,vz,vz,0xffff,ag_rgb(180,180,180),(vz/2)); ag_sync(); } } } break; case ATEV_MOUSEUP:{ if (id!=-1){ if (onp){ if ((xtch[id]>0)&&(ytch[id]>0)){ ond=0; } onp=0; } } } break; case ATEV_SELECT: case ATEV_BACK: case ATEV_MENU:{ if (atev.d==0){ ond=0; res=0; } } break; } } ag_ccanvas(&bg); return res; }
void aw_textdialog(AWINDOWP parent,char * titlev,char * text,char * ok_text){ // actext(hWin,txtX,txtY,txtW,txtH,text,0); CANVAS * tmpc = aw_muteparent(parent); //-- Set Mask on_dialog_window = 1; ag_rectopa(agc(),0,0,agw(),agh(),0x0000,180); ag_sync(); char title[64]; snprintf(title,64,"%s",titlev); int pad = agdp()*4; int winW = agw()-(pad*2); int txtW = winW-(pad*2); int txtX = pad*2; int btnH = agdp()*20; int titW = ag_txtwidth(title,1); int titH = ag_fontheight(1) + (pad*2); PNGCANVASP winp = atheme("img.dialog"); PNGCANVASP titp = atheme("img.dialog.titlebar"); APNG9 winv; APNG9 titv; int vtitY = -1; int vpadB = pad; int vimgX = pad*2; if (titp!=NULL){ if (apng9_calc(titp,&titv,1)){ int tmptitH = titH - (pad*2); titH = tmptitH + (titv.t+titv.b); vtitY = titv.t; } } if (winp!=NULL){ if (apng9_calc(winp,&winv,1)){ txtW = winW - (winv.l+winv.r); txtX = pad + (winv.l); vimgX= pad + (winv.l); vpadB= winv.b; } } byte imgE = 0; int imgW = 0; int imgH = 0; int txtH = agh()/2; int infH = txtH; //-- Calculate Window Size & Position int winH = titH + infH + btnH + (pad*2) + vpadB; int winX = pad; int winY = (agh()/2) - (winH/2); //-- Calculate Title Size & Position int titX = (agw()/2) - (titW/2); int titY = winY + pad; if (vtitY!=-1) titY = winY+vtitY; //-- Calculate Text Size & Position int infY = winY + titH + pad; int txtY = infY; //-- Calculate Button Size & Position int btnW = winW / 2; int btnY = infY+infH+pad; int btnX = (agw()/2) - (btnW/2); //-- Initializing Canvas CANVAS alertbg; ag_canvas(&alertbg,agw(),agh()); ag_draw(&alertbg,agc(),0,0); //-- Draw Window if (!atheme_draw("img.dialog", &alertbg, winX,winY,winW,winH)){ ag_roundgrad(&alertbg,winX-1,winY-1,winW+2,winH+2,acfg_var.border,acfg_var.border_g,(acfg_var.roundsz*agdp())+1); ag_roundgrad(&alertbg,winX,winY,winW,winH,acfg_var.dialogbg,acfg_var.dialogbg_g,acfg_var.roundsz*agdp()); } //-- Draw Title if (!atheme_draw("img.dialog.titlebar", &alertbg, winX,winY,winW,titH)){ ag_roundgrad_ex(&alertbg,winX,winY,winW,titH,acfg_var.dlgtitlebg,acfg_var.dlgtitlebg_g,acfg_var.roundsz*agdp(),1,1,0,0); } ag_textf(&alertbg,titW,titX+1,titY+1,title,acfg_var.dlgtitlebg_g,1); ag_text(&alertbg,titW,titX,titY,title,acfg_var.dlgtitlefg,1); AWINDOWP hWin = aw(&alertbg); actext(hWin,txtX,txtY,txtW,txtH,text,0); ACONTROLP okbtn=acbutton(hWin,btnX,btnY,btnW,btnH,(ok_text==NULL?acfg_var.text_ok:ok_text),0,5); aw_show(hWin); aw_setfocus(hWin,okbtn); byte ondispatch = 1; while(ondispatch){ dword msg=aw_dispatch(hWin); switch (aw_gm(msg)){ case 5: ondispatch = 0; break; } } aw_destroy(hWin); ag_ccanvas(&alertbg); on_dialog_window = 0; aw_unmuteparent(parent,tmpc); }
//* //* SHOW MAIN DIRECTORY LIST UI //* void aui_show_setting() { printf("SHOW SETTINGS\n"); //-- REDRAW BG aui_setbg(NULL); //-- Main Variable AUI_VARS v; //-- Return Value v.reshow = 0; //-- Init Drawing Data v.selfile = ""; v.path = ""; v.state = 0; v.pad = agdp() * 2; v.btnH = agdp() * 20; v.boxH = agh() - (aui_minY + (v.btnH) + (v.pad * 2)); v.boxY = aui_minY; 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 / 3); int btnHlv = v.navW - (v.pad / 2); v.hFileType = 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); //-- Create Main Window v.hWin = aw(&aui_win_bg); //****************************[ INIT WINDOW CONTROLS ]****************************/ // imgbtn(v.hWin, v.pad, v.navY, btnHlv, v.btnH, &UI_ICONS[20], alang_get("settings.mount"), 3, 22); /*imgbtn(v.hWin, v.pad, v.navY, btnHlv, v.btnH, &UI_ICONS[17], alang_get("settings.calib"), 3, 21); */ v.hFile = acopt(v.hWin, 0, v.boxY, agw(), (v.boxH - v.btnFH)); //-- Toolbar style : 1 acopt_addgroup(v.hFile, alang_get("settings.toolbar"), ""); acopt_add(v.hFile, alang_get("settings.toolbar.icontext"), "", auic()->tooltext ? 1 : 0); acopt_add(v.hFile, alang_get("settings.toolbar.icononly"), "", auic()->tooltext ? 0 : 1); //-- Font size : 2 acopt_addgroup(v.hFile, alang_get("settings.fontsize"), ""); acopt_add(v.hFile, alang_get("settings.fontsize.small"), "", (auic()->fontsize == 1) ? 1 : 0); acopt_add(v.hFile, alang_get("settings.fontsize.medium"), "", (auic()->fontsize == 2) ? 1 : 0); acopt_add(v.hFile, alang_get("settings.fontsize.big"), "", (auic()->fontsize == 3) ? 1 : 0); //-- Font Family : 3 acopt_addgroup(v.hFile, alang_get("settings.fontfamily"), ""); if (1) { AZREADDIRP rz_fonts = az_readdir(AROMA_DIR "/fonts/"); if (rz_fonts != NULL) { int i = 0; for (i = 0; i < rz_fonts->n; i++) { if (rz_fonts->t[i] == 1) { char desc[256]; auis_readinfo(desc, AROMA_DIR "/fonts/", rz_fonts->f[i]); acopt_add(v.hFile, rz_fonts->f[i], desc, (strcmp (auic()->fontfamily, rz_fonts->f[i]) == 0) ? 1 : 0); } } az_readdir_free(rz_fonts); } } //-- Icon set : 4 acopt_addgroup(v.hFile, alang_get("settings.iconset"), ""); if (1) { AZREADDIRP rz_icons = az_readdir(AROMA_DIR "/icons/"); if (rz_icons != NULL) { int i = 0; for (i = 0; i < rz_icons->n; i++) { if (rz_icons->t[i] == 1) { char desc[256]; auis_readinfo(desc, AROMA_DIR "/icons/", rz_icons->f[i]); acopt_add(v.hFile, rz_icons->f[i], desc, (strcmp (auic()->iconset, rz_icons->f[i]) == 0) ? 1 : 0); } } az_readdir_free(rz_icons); } } //-- Theme : 5 acopt_addgroup(v.hFile, alang_get("settings.themes"), ""); acopt_add(v.hFile, "Generic", "Unskinned AROMA File Manager", (strcmp(auic()->theme, "") == 0) ? 1 : 0); if (1) { AZREADDIRP rz_theme = az_readdir(AROMA_DIR "/themes/"); if (rz_theme != NULL) { int i = 0; for (i = 0; i < rz_theme->n; i++) { if (rz_theme->t[i] == 1) { char desc[256]; auis_readinfo(desc, AROMA_DIR "/themes/", rz_theme->f[i]); acopt_add(v.hFile, rz_theme->f[i], desc, (strcmp (auic()->theme, rz_theme->f[i]) == 0) ? 1 : 0); } } az_readdir_free(rz_theme); } } //-- Languages : 6 acopt_addgroup(v.hFile, alang_get("settings.lang"), ""); if (1) { AZREADDIRP rz_langs = az_readdir(AROMA_DIR "/langs/"); if (rz_langs != NULL) { int i = 0; for (i = 0; i < rz_langs->n; i++) { if (rz_langs->t[i] == 1) { char desc[256]; auis_readinfo(desc, AROMA_DIR "/langs/", rz_langs->f[i]); acopt_add(v.hFile, rz_langs->f[i], desc, (strcmp (auic()->language, rz_langs->f[i]) == 0) ? 1 : 0); } } az_readdir_free(rz_langs); } } //-- Font size : 7 acopt_addgroup(v.hFile, alang_get("settings.trans"), ""); acopt_add(v.hFile, alang_get("settings.trans.0"), "", (acfg()->fadeframes == 0) ? 1 : 0); acopt_add(v.hFile, alang_get("settings.trans.1"), "", (acfg()->fadeframes == 2) ? 1 : 0); acopt_add(v.hFile, alang_get("settings.trans.2"), "", (acfg()->fadeframes == 4) ? 1 : 0); acopt_add(v.hFile, alang_get("settings.trans.3"), "", (acfg()->fadeframes == 6) ? 1 : 0); acopt_add(v.hFile, alang_get("settings.trans.4"), "", (acfg()->fadeframes == 8) ? 1 : 0); //-- Automount : 8 acopt_addgroup(v.hFile, alang_get("settings.mount"), ""); acopt_add(v.hFile, alang_get("settings.mount.all"), "", auic()->automount ? 1 : 0); acopt_add(v.hFile, alang_get("settings.mount.none"), "", auic()->automount ? 0 : 1); //-- colorspace : 9 acopt_addgroup(v.hFile, alang_get("settings.colorspace"), ""); acopt_add(v.hFile, alang_get("settings.colorspace.rgba"), "", (auic()->colorspace == 1) ? 1 : 0); acopt_add(v.hFile, alang_get("settings.colorspace.abgr"), "", (auic()->colorspace == 2) ? 1 : 0); acopt_add(v.hFile, alang_get("settings.colorspace.argb"), "", (auic()->colorspace == 3) ? 1 : 0); acopt_add(v.hFile, alang_get("settings.colorspace.bgra"), "", (auic()->colorspace == 4) ? 1 : 0); //-- Font size : 8 /* acopt_addgroup(v.hFile,"Automount Partitions",""); acopt_add(v.hFile,"All partitions","",0); acopt_add(v.hFile,"None","",1); */ //-- TOOLS v.b1 = imgbtn(v.hWin, v.pad, v.btnY - v.btnFH, v.btnW, v.btnH + v.btnFH, &UI_ICONS[33], aui_tbtitle(9), 1, 12); //-- Done v.b2 = imgbtn(v.hWin, v.pad + v.btnW, v.btnY - v.btnFH, v.btnW, v.btnH + v.btnFH, &UI_ICONS[14], aui_tbtitle(10), 1, 22); //-- Reset v.b3 = imgbtn(v.hWin, v.pad + v.btnW * 2, v.btnY - v.btnFH, v.btnW, v.btnH + v.btnFH, &UI_ICONS[0], aui_tbtitle(8), 1, 20); //-- Cancel //-- Show Window aw_show_ex(v.hWin, 2, 0, v.hFile); // aw_setfocus(v.hWin,v.hFile); aui_changetitle(&v, alang_get("settings")); byte ondispatch = 1; byte saveconfig = 1; byte save_to_file = 0; do { dword msg = aw_dispatch(v.hWin); switch (aw_gm(msg)) { case 12: { //-- DONE ondispatch = 0; } break; case 20: { //-- CANCEL ondispatch = 0; saveconfig = 0; } break; case 22: { //-- RESET if (aw_confirm(v.hWin, alang_get("settings.reset"), alang_get("settings.reset.msg"), aui_icons(39), NULL, NULL)) { ondispatch = 0; saveconfig = 0; aui_cfg_init(); aui_load_icons(); aui_cfg_reloadfonts(); aui_langreload(); aui_themereload(); save_to_file = 1; } } break; case 21: { //-- CALIB if (aw_calibtools(NULL)) { aui_cfg_save(); } } break; } } while (ondispatch); if (saveconfig) { byte font_reloaded = 0; byte colorspace_refreshed = 0; //-- Text on toolbar auic()->tooltext = (acopt_getvalue(v.hFile, 1) == 1) ? 1 : 0; auic()->automount = (acopt_getvalue(v.hFile, 8) == 1) ? 1 : 0; //-- Font Size byte newfontsz = (byte) acopt_getvalue(v.hFile, 2); if (newfontsz != auic()->fontsize) { auic()->fontsize = newfontsz; font_reloaded = 1; } byte newcolorspace = (byte) acopt_getvalue(v.hFile, 9); if (newcolorspace != auic()->colorspace) { auic()->colorspace = newcolorspace; colorspace_refreshed = 1; } //-- Font Family char * fontsel = acopt_getseltitle(v.hFile, 3); if ((fontsel != NULL) && (strcmp(fontsel, auic()->fontfamily) != 0)) { snprintf(auic()->fontfamily, 256, "%s", fontsel); font_reloaded = 1; } //-- Iconset fontsel = acopt_getseltitle(v.hFile, 4); if ((fontsel != NULL) && (strcmp(fontsel, auic()->iconset) != 0)) { snprintf(auic()->iconset, 256, "%s", fontsel); aui_unload_icons(); aui_load_icons(); } //-- Theme fontsel = acopt_getseltitle(v.hFile, 5); if ((fontsel != NULL) && (strcmp(fontsel, auic()->theme) != 0)) { int newtheme = acopt_getvalue(v.hFile, 5); if (newtheme == 1) { if (strcmp(auic()->theme, "") != 0) { snprintf(auic()->theme, 256, ""); aui_themereload(); } } else { snprintf(auic()->theme, 256, "%s", fontsel); aui_themereload(); } } //-- Language fontsel = acopt_getseltitle(v.hFile, 6); if ((fontsel != NULL) && (strcmp(fontsel, auic()->language) != 0)) { snprintf(auic()->language, 256, "%s", fontsel); aui_langreload(); } //-- Transition int transition = acopt_getvalue(v.hFile, 7); acfg()->fadeframes = (transition - 1) * 2; //-- Reload Font if (font_reloaded) { aui_cfg_reloadfonts(); } // set new color space if (colorspace_refreshed) { aui_cfg_setcolorspace(); } save_to_file = 1; } //-- Window aw_destroy(v.hWin); //-- Save if (save_to_file) { aui_cfg_save(); } }
static STATUS _file_scan(char *path, int path_len) { return_val_if_fail(path != NULL, RET_FAIL); return_val_if_fail(strlen(path) <= path_len, RET_INVALID_ARG); DIR* d = NULL; struct dirent* de = NULL; int i = 0; int result = 0; d = opendir(path); return_val_if_fail(d != NULL, RET_FAIL); int d_size = 0; int d_alloc = 10; char** dirs = (char **)malloc(d_alloc * sizeof(char*)); char** dirs_desc = (char **)malloc(d_alloc * sizeof(char*)); return_val_if_fail(dirs != NULL, RET_FAIL); return_val_if_fail(dirs_desc != NULL, RET_FAIL); int z_size = 0; int z_alloc = 10; char** zips = (char **)malloc(z_alloc * sizeof(char*)); char** zips_desc=(char **)malloc(z_alloc * sizeof(char*)); return_val_if_fail(zips != NULL, RET_FAIL); return_val_if_fail(zips_desc != NULL, RET_FAIL); // zips[0] = strdup("../"); // zips_desc[0]=strdup("../"); while ((de = readdir(d)) != NULL) { int name_len = strlen(de->d_name); if (name_len <= 0) continue; char de_path[PATH_MAX]; snprintf(de_path, PATH_MAX, "%s/%s", path, de->d_name); struct stat st ; assert_if_fail(stat(de_path, &st) == 0); if (de->d_type == DT_DIR) { //skip "." and ".." entries if (name_len == 1 && de->d_name[0] == '.') continue; if (name_len == 2 && de->d_name[0] == '.' && de->d_name[1] == '.') continue; if (d_size >= d_alloc) { d_alloc *= 2; dirs = (char **)realloc(dirs, d_alloc * sizeof(char*)); assert_if_fail(dirs != NULL); dirs_desc = (char **)realloc(dirs_desc, d_alloc * sizeof(char*)); assert_if_fail(dirs_desc != NULL); } dirs[d_size] = (char *)malloc(name_len + 2); assert_if_fail(dirs[d_size] != NULL); dirs_desc[d_size] = (char *)malloc(64); assert_if_fail(dirs_desc[d_size] != NULL); strncpy(dirs[d_size], de->d_name, name_len); dirs[d_size][name_len] = '/'; dirs[d_size][name_len + 1] = '\0'; snprintf(dirs_desc[d_size], 63, "%s" ,ctime(&st.st_mtime)); dirs_desc[d_size][63] = '\0'; ++d_size; } else if (de->d_type == DT_REG) { if (g_file_filter_fun == NULL || g_file_filter_fun(de->d_name, name_len) == 0) { if (z_size >= z_alloc) { z_alloc *= 2; zips = (char **) realloc(zips, z_alloc * sizeof(char*)); assert_if_fail(zips != NULL); zips_desc = (char **) realloc(zips_desc, z_alloc * sizeof(char*)); assert_if_fail(zips_desc != NULL); } zips[z_size] = strdup(de->d_name); assert_if_fail(zips[z_size] != NULL); zips_desc[z_size] = (char*)malloc(64); assert_if_fail(zips_desc[z_size] != NULL); snprintf(zips_desc[z_size], 63, "%s %lldbytes" ,ctime(&st.st_mtime), st.st_size); zips_desc[z_size][63] = '\0'; z_size++; } } } closedir(d); // append dirs to the zips list if (d_size + z_size + 1 > z_alloc) { z_alloc = d_size + z_size + 1; zips = (char **)realloc(zips, z_alloc * sizeof(char*)); assert_if_fail(zips != NULL); zips_desc = (char **)realloc(zips_desc, z_alloc * sizeof(char*)); assert_if_fail(zips_desc != NULL); } for (i = 0; i < d_size; i++) { zips[z_size + i] = dirs[i]; zips_desc[z_size + i] = dirs_desc[i]; } free(dirs); z_size += d_size; zips[z_size] = NULL; zips_desc[z_size] = NULL; int chosen_item = 0; do { if (NULL == g_title_name) { oppo_error("g_title_name is NULL \n"); result = -1; goto finish_done; } #if DEBUG sd_file_dump_array(zips, zips_desc, z_size); #endif chosen_item = oppo_sdmenu(g_title_name, zips, zips_desc, z_size); /* OPPO 2013-02-18 jizhengkang azx Add begin for reason */ selectedItem[selectedCount] = chosen_item; /* OPPO 2013-02-23 jizhengkang azx Modify begin for reason */ #if 0 if (chosen_item == -1) {//huanggd for exit explorer when select "return" option result = 1; if (result_inter_sd || result_external_sd) { selectedCount = 1; memset(selectedItem + 2, 0, 1022); } else { selectedCount = 2; memset(selectedItem + 3, 0, 1021); } break; } #endif /* OPPO 2013-02-23 jizhengkang azx Modify end */ if (chosen_item == -1) { result = -1; memset(selectedItem + selectedCount, 0, 1024 - selectedCount - 1); selectedCount--; break; } return_val_if_fail(chosen_item >= 0, RET_FAIL); char * item = zips[chosen_item]; return_val_if_fail(item != NULL, RET_FAIL); int item_len = strlen(item); // ((chosen_item > 0)&&(item[item_len - 1] == '/'))?selectedCount++:selectedCount--; // (chosen_item == 0)?selectedCount--:((item[item_len - 1] == '/')?selectedCount++:NULL); /* OPPO 2013-02-18 jizhengkang azx Add end */ /* OPPO 2013-02-23 jizhengkang azx Delete begin for reason */ #if 0 if ( chosen_item == 0) { //go up but continue browsing result = -1; break; } else #endif /* OPPO 2013-02-23 jizhengkang azx Delete end */ if (item[item_len - 1] == '/') { selectedCount++; char new_path[PATH_MAX]; strlcpy(new_path, path, PATH_MAX); strlcat(new_path, "/", PATH_MAX); strlcat(new_path, item, PATH_MAX); new_path[strlen(new_path) - 1] = '\0'; result = _file_scan(new_path, PATH_MAX); if (result > 0) break; } else { // select a zipfile // the status to the caller char new_path[PATH_MAX]; strlcpy(new_path, path, PATH_MAX); strlcat(new_path, "/", PATH_MAX); strlcat(new_path, item, PATH_MAX); int wipe_cache = 0; //if third parameter is 1, echo sucess dialog if (NULL == g_fun) { oppo_error("g_fun is NULL in fun\n"); result = -1; goto finish_done; } if (oppo_get_battery_capacity() < 15) { if (!oppo_is_ac_usb_online()) { oppo_notice(3, "<~sd.install.notice>", "<~sd.install.caplow.desc>", "@sd"); continue; } } if (canvas_sdfile_inited == 0) { canvas_sdfile_inited = 1; ag_canvas(&canvas_sdfile,agw(),agh()); } ag_draw(&canvas_sdfile,agc(),0,0); int ret = g_fun(new_path, PATH_MAX, (void *)g_data); if (0 == ret)//execute callback fun success { //back to up layer //result = -1;//huanggd for exit explorer when install successfully selectedCount = 1; memset(selectedItem + 2, 0, 1022); result = 1; feed_back("2"); } else if(1 == ret){ continue;//cacel install } else { oppo_error("g_fun execute fail\n"); result = 0; feed_back("3"); ag_draw(NULL,&canvas_sdfile,0,0); oppo_notice(3, "<~sd.install.failed.name>", "<~sd.install.failed.desc>", "@sd"); continue; } break; } } while(1); finish_done: for (i = 0; i < z_size; ++i) { free(zips[i]); free(zips_desc[i]); } free(zips); return result; }
void auido_show_del(byte * copy_status, char **source_path, int number_files) { //-- Init Dialog Window CANVAS *tmpc = aw_muteparent(NULL); aw_set_on_dialog(2); //ag_rectopa(agc(), 0, 0, agw(), agh(), 0x0000, 180); CANVAS * maskc = aw_maskparent(); ag_sync(); //-- Initializing Canvas CANVAS bg; ag_canvas(&bg, agw(), agh()); ag_draw(&bg, agc(), 0, 0); //-- Size & Position /* [PAD] mainInfo extraInfo [*************perProg*************] perInfo [PAD] [ CANCEL BUTTON ] [PAD] */ int pad = agdp() * 4; int padB = pad; int padT = pad; int padL = pad; int padR = pad; PNGCANVASP winp = atheme("img.dialog"); APNG9 winv; if (winp != NULL) { if (apng9_calc(winp, &winv, 1)) { padL = winv.l; padR = winv.r; padB = winv.b; padT = winv.t; } } int hpad = agdp() * 2; int winW = agw() - (pad * 2); //-- Window int winX = pad; int cliW = winW - (padL + padR); //-- Window Client int cliX = pad + padL; int titH = ag_fontheight(1) + (agdp() * 2); //-- Title Height int txtH = ag_fontheight(0) + agdp(); //-- Text Interface Height int prgH = agdp() * 12; //-- Progress Height int btnH = agdp() * 24; int btnW = winW / 2; int btnX = agw() / 2 - btnW / 2; int winH = (pad * 2) + titH + (txtH * 2) + (prgH) + btnH + padB + padT; int winY = (agh() / 2) - (winH / 2); int titY = winY + padT; int curY = titY + titH + pad; int defW = cliW - pad; int txtW1 = (int)(defW * 0.8); int txtW2 = defW - txtW1; int txtX1 = cliX + hpad; int txtX2 = txtX1 + txtW1; //-- Draw Canvas if (!atheme_draw("img.dialog", &bg, winX, winY, winW, winH)) { ag_roundgrad(&bg, winX - 1, winY - 1, winW + 2, winH + 2, acfg()->border, acfg()->border_g, (acfg()->roundsz * agdp()) + 1); ag_roundgrad(&bg, winX, winY, winW, winH, acfg()->dialogbg, acfg()->dialogbg_g, acfg()->roundsz * agdp()); } //-- Init Window & Controls AWINDOWP hWin = aw(&bg); ACONTROLP mainInfo = aclabel(hWin, cliX, titY, cliW, titH, alang_get("delete.prepare"), 1, 1, 2, acfg()->winfg); ACONTROLP extraInfo = aclabel(hWin, cliX, curY, cliW, txtH, alang_get("calculating"), 0, 1, 2, acfg()->winfg); curY += txtH; ACONTROLP perProg = acprog(hWin, cliX, curY + agdp(), cliW, prgH - (agdp() * 2), 0); curY += prgH; ACONTROLP perInfo = aclabel(hWin, cliX, curY, cliW, txtH, "", 0, 1, 2, acfg()->textfg_gray); curY += txtH + pad; imgbtn(hWin, btnX, curY, btnW, btnH, aui_icons(0), alang_get("cancel"), 3, 55); //-- Show Window //aw_show(hWin); aw_show_ex2(hWin, 5, winX - 1, winY - 1, winW + 2, winH + 2, NULL); byte ondispatch = 1; acprog_setonwait(perProg, 1); //-- Start Delete Proc AFSDT dt; memset(&dt, 0, sizeof(AFSDT)); int curr_id = 0; byte proc_state = 0; long kbps_tick = 0; if (auido_next_del_size (&dt, &curr_id, copy_status, source_path, number_files)) { //-- Dispatch do { dword msg = aw_dispatch(hWin); switch (aw_gm(msg)) { //-- CALCULATING case 10: { //-- Discovery Tick if (proc_state == 0) { char info[256]; char strfl[64]; char format[256]; snprintf(strfl, 64, "%i", dt.n); snprintf(format, 256, "%s ( %s )", alang_get("deleting"), "\%0.1f"); snprintf(info, 256, format, strfl, ((float)dt.k) / 1024); aclabel_settext(perInfo, dt.curr, 0); aclabel_settext(extraInfo, info, 1); } } break; case 11: { //-- Discovery Finish if (proc_state == 0) { curr_id++; if (!auido_next_del_size (&dt, &curr_id, copy_status, source_path, number_files)) { ondispatch = 0; aclabel_settext (mainInfo, alang_get ("finishing"), 1); } } else if (proc_state == 2) { ondispatch = 0; aclabel_settext(mainInfo, alang_get ("finishing"), 1); } } break; case 55: { if (proc_state == 0) { aclabel_settext(mainInfo, alang_get ("canceling"), 1); proc_state = 2; dt.status = 0; } } break; } } while (ondispatch); } //-- Release Resources aw_destroy(hWin); ag_ccanvas(&bg); aw_set_on_dialog(0); //aw_unmuteparent(NULL, tmpc); aw_unmaskparent(NULL, tmpc, maskc, winX - 1, winY - 1, winW + 2, winH + 2); }