From 305dc85fc38e2a61503ed4c60027e439ebe74e16 Mon Sep 17 00:00:00 2001 From: dimok321 <15055714+dimok789@users.noreply.github.com> Date: Mon, 25 May 2009 13:31:48 +0000 Subject: [PATCH] *Some fixes and cleanups for the GRID (still has a lot of issues dont make new issues about it. going to go on fixing later) --- gui.pnproj | 2 +- source/libwiigui/gui_gamegrid.cpp | 297 +++++++++--------------------- source/menu.cpp | 35 ++-- 3 files changed, 108 insertions(+), 226 deletions(-) diff --git a/gui.pnproj b/gui.pnproj index 66b2d8d6..84ea5553 100644 --- a/gui.pnproj +++ b/gui.pnproj @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/source/libwiigui/gui_gamegrid.cpp b/source/libwiigui/gui_gamegrid.cpp index 29760c22..c3500028 100644 --- a/source/libwiigui/gui_gamegrid.cpp +++ b/source/libwiigui/gui_gamegrid.cpp @@ -31,13 +31,13 @@ GuiGameGrid::GuiGameGrid(int w, int h, struct discHdr * l, int gameCnt, const ch this->gameCnt = gameCnt; gameList = l; pagesize = 8; + changed = 0; scrollbaron = (gameCnt > pagesize) ? 1 : 0; selectable = true; listOffset = (offset == 0) ? this->FindMenuItem(-1, 1) : offset; selectedItem = selected - offset; focus = 1; // allow focus char imgPath[100]; - tooMuch=(gameCnt-(gameCnt%8)); trigA = new GuiTrigger; trigA->SetSimpleTrigger(-1, WPAD_BUTTON_A | WPAD_CLASSIC_BUTTON_A, PAD_BUTTON_A); @@ -52,16 +52,14 @@ GuiGameGrid::GuiGameGrid(int w, int h, struct discHdr * l, int gameCnt, const ch trigMinus->SetButtonOnlyTrigger(-1, WPAD_BUTTON_MINUS | WPAD_CLASSIC_BUTTON_MINUS, 0); btnSoundClick = new GuiSound(button_click_pcm, button_click_pcm_size, SOUND_PCM, vol); - + snprintf(imgPath, sizeof(imgPath), "%sstartgame_arrow_left.png", CFG.theme_path); imgLeft = new GuiImageData(imgPath, startgame_arrow_left_png); snprintf(imgPath, sizeof(imgPath), "%sstartgame_arrow_right.png", CFG.theme_path); imgRight = new GuiImageData(imgPath, startgame_arrow_right_png); - + btnLeftImg = new GuiImage(imgLeft); btnLeft = new GuiButton(imgLeft->GetWidth(), imgLeft->GetHeight()); - //GuiImage btnLeftImg(&imgLeft); - //GuiButton btnLeft(imgLeft.GetWidth(), imgLeft.GetHeight()); btnLeft->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); btnLeft->SetPosition(20, -30); btnLeft->SetParent(this); @@ -74,7 +72,6 @@ GuiGameGrid::GuiGameGrid(int w, int h, struct discHdr * l, int gameCnt, const ch btnRightImg = new GuiImage(imgRight); btnRight = new GuiButton(imgRight->GetWidth(), imgRight->GetHeight()); - //GuiButton btnRight(imgRight.GetWidth(), imgRight.GetHeight()); btnRight->SetParent(this); btnRight->SetAlignment(ALIGN_RIGHT, ALIGN_MIDDLE); btnRight->SetPosition(-20, -30); @@ -87,91 +84,55 @@ GuiGameGrid::GuiGameGrid(int w, int h, struct discHdr * l, int gameCnt, const ch gameIndex = new int[pagesize]; game = new GuiButton * [pagesize]; - //gameTxt = new GuiText * [pagesize]; - //gameBg = new GuiImage * [pagesize]; coverImg = new GuiImage * [pagesize]; cover = new GuiImageData * [pagesize]; - //char buffer[THEME.maxcharacters + 4]; char ID[4]; char IDfull[7]; - + for(int i=0; i < pagesize; i++) { - /*if (strlen(get_title(&gameList[i])) < (u32)(THEME.maxcharacters + 3)) - { - sprintf(buffer, "%s", get_title(&gameList[i])); - } - else - { - sprintf(buffer, get_title(&gameList[i]), THEME.maxcharacters); - buffer[THEME.maxcharacters] = '\0'; - strncat(buffer, "...", 3); - } - *///////////////////////////////////////////////// - + struct discHdr *header = &gameList[i]; snprintf (ID,sizeof(ID),"%c%c%c", header->id[0], header->id[1], header->id[2]); snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]); - //w.Remove(&DownloadBtn); - - //load game cover - //if (cover) - //{ - // delete cover; - // cover = NULL; - //} snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, IDfull); cover[i] = new GuiImageData(imgPath,0); //load short id if (!cover[i]->GetImage()) //if could not load the short id image { delete cover[i]; + cover[i] = NULL; snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, ID); cover[i] = new GuiImageData(imgPath, 0); //load full id image if (!cover[i]->GetImage()) { delete cover[i]; + cover[i] = NULL; snprintf(imgPath, sizeof(imgPath), "%snoimage.png", CFG.covers_path); cover[i] = new GuiImageData(imgPath, nocover_png); //load no image } } - //if (coverImg) - //{ - // delete coverImg; - // coverImg = NULL; - //} coverImg[i] = new GuiImage(cover[i]); coverImg[i]->SetWidescreen(CFG.widescreen); coverImg[i]->SetScale(0.6); - //DownloadBtn.SetImage(coverImg);// put the new image on the download button - //w.Append(&DownloadBtn); - ///////////////////////////////////////////////// - - //gameTxt[i] = new GuiText(buffer, 20, (GXColor){THEME.gameText_r, THEME.gameText_g, THEME.gameText_b, 0xff}); - //gameTxt[i]->SetAlignment(ALIGN_LEFT, ALIGN_MIDDLE); - //gameTxt[i]->SetPosition(24,0); - - //gameBg[i] = new GuiImage(bgGamesEntry); - game[i] = new GuiButton(coverImg[i]->GetWidth()*.45,coverImg[i]->GetHeight()*.7); game[i]->SetParent(this); game[i]->SetAlignment(ALIGN_TOP,ALIGN_LEFT); - //game[i]->SetLabel(gameTxt[i]); - //game[i]->SetImageOver(gameBg[i]); game[i]->SetImage(coverImg[i]); coverImg[i]->SetParent(game[i]); - //coverImg[i]->SetAlignment(ALIGN_CENTRE,ALIGN_MIDDLE); coverImg[i]->SetPosition(-10,-35); - //game[i]->SetPosition(5,GAMESELECTSIZE*i+4); if (i<4)game[i]->SetPosition(117+i*110,25); if (i>3)game[i]->SetPosition(117+(i-4)*110,185); game[i]->SetRumble(false); game[i]->SetTrigger(trigA); game[i]->SetSoundClick(btnSoundClick); game[i]->SetEffectGrow(); + game[i]->SetVisible(true); + if (((changed+pagesize)>gameCnt)&&(i>((gameCnt-changed)-1))) + game[i]->SetVisible(false); coverImg[i]->SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50); } } @@ -179,10 +140,9 @@ GuiGameGrid::GuiGameGrid(int w, int h, struct discHdr * l, int gameCnt, const ch /** * Destructor for the GuiGameGrid class. */ -//GuiGameGrid::~GuiGameGrid() GuiGameGrid::~GuiGameGrid() { - + delete imgRight; delete imgLeft; delete btnLeftImg; @@ -195,14 +155,13 @@ GuiGameGrid::~GuiGameGrid() for(int i=0; iIsVisible()) return; - //bgGameImg->Draw(); - - int next = listOffset; for(int i=0; igameCnt){changed=tooMuch;over=1;} - - //int extra=(gameCnt-changed-1); - - - // scrolldelay affects how fast the list scrolls - // when the arrows are clicked - //float scrolldelay = 3.5; - btnRight->Update(t); btnLeft->Update(t); next = listOffset; - //char buffer[THEME.maxcharacters + 4]; + char ID[4]; char IDfull[7]; char imgPath[100]; @@ -352,21 +297,6 @@ void GuiGameGrid::Update(GuiTrigger * t) game[i]->SetVisible(true); game[i]->SetState(STATE_DEFAULT); } - - - /*if (strlen(get_title(&gameList[next])) < (u32)(THEME.maxcharacters + 3)) - { - sprintf(buffer, "%s", get_title(&gameList[next])); - } - else - { - sprintf(buffer, get_title(&gameList[next]), THEME.maxcharacters); - buffer[THEME.maxcharacters] = '\0'; - strncat(buffer, "...", 3); - } - - gameTxt[i]->SetText(buffer); - gameTxt[i]->SetPosition(24, 0);*/ gameIndex[i] = next; next = this->FindMenuItem(next, 1); @@ -382,7 +312,7 @@ void GuiGameGrid::Update(GuiTrigger * t) if(i != selectedItem && game[i]->GetState() == STATE_SELECTED) game[i]->ResetState(); else if(i == selectedItem && game[i]->GetState() == STATE_DEFAULT) - game[selectedItem]->SetState(STATE_SELECTED, t->chan); + game[selectedItem]->SetState(STATE_SELECTED); } game[i]->Update(t); @@ -397,40 +327,38 @@ void GuiGameGrid::Update(GuiTrigger * t) if(!focus) return; // skip navigation - if (scrollbaron == 1) { + if ((t->Right() || btnRight->GetState() == STATE_CLICKED) ) { - if ((t->Right() || - btnRight->GetState() == STATE_CLICKED) ) - //&&(changed<(tooMuch+1))) - { - - //////////////////////////////////////////// changed += pagesize; - if (changed>gameCnt)changed=0; - - - for(int i=0; iid[0], header->id[1], header->id[2]); - snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]); - - snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, IDfull); - cover[i] = new GuiImageData(imgPath,0); //load short id + if (changed>gameCnt-1) + changed=0; + + for(int i=0; iid[0], header->id[1], header->id[2]); + snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]); + + snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, IDfull); + cover[i] = new GuiImageData(imgPath,0); //load short id if (!cover[i]->GetImage()) //if could not load the short id image { delete cover[i]; + cover[i] = NULL; snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, ID); cover[i] = new GuiImageData(imgPath, 0); //load full id image if (!cover[i]->GetImage()) { delete cover[i]; + cover[i] = NULL; snprintf(imgPath, sizeof(imgPath), "%snoimage.png", CFG.covers_path); cover[i] = new GuiImageData(imgPath, nocover_png); //load no image } @@ -440,84 +368,49 @@ void GuiGameGrid::Update(GuiTrigger * t) coverImg[i]->SetWidescreen(CFG.widescreen); coverImg[i]->SetScale(0.6); coverImg[i]->SetParent(game[i]); - //coverImg[i]->SetAlignment(ALIGN_CENTRE,ALIGN_MIDDLE); - coverImg[i]->SetPosition(-10,-35); + coverImg[i]->SetPosition(-10,-35); game[i]->SetImage(coverImg[i]); + game[i]->SetVisible(true); coverImg[i]->SetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_IN, 65); - //if ((extra<8)&&(i>extra)){ - //if ((changed>gameCnt)){//&& (i>((changed-gameCnt)-1))){ if (((changed+pagesize)>gameCnt)&&(i>((gameCnt-changed)-1))) - coverImg[i]->SetVisible(false);//} - //delete coverImg[i];} - - //} - //else { delete game[i]; - // delete coverImg[i]; - //delete cover[i];} - //} - //usleep(500000); - - } - - //game[i] = new GuiButton(coverImg[i]->GetWidth(),coverImg[i]->GetHeight()); - //game[i]->SetParent(this); - //game[i]->SetImage(coverImg[i]); - //game[i]->SetPosition(5,GAMESELECTSIZE*i+4); - //game[i]->SetRumble(false); - //game[i]->SetTrigger(trigA); - //game[i]->SetSoundClick(btnSoundClick); - //////////////////////////////////////////////////// - - - - WPAD_ScanPads(); - u8 cnt, buttons = NULL; - /* Get pressed buttons */ - for (cnt = 0; cnt < 4; cnt++) - buttons |= WPAD_ButtonsHeld(cnt); - if (buttons == WPAD_BUTTON_A) { - - } else { - btnRight->ResetState(); - + game[i]->SetVisible(false);//} } + btnRight->ResetState(); - } - else if((t->Left() || - btnLeft->GetState() == STATE_CLICKED)) - //&& (changed>7)) ////////////////////////////////////////////up - //arrowUpBtn->GetState() == STATE_HELD) - {changed -= pagesize;if (changed<0)changed=tooMuch+pagesize; - over=0; - //if (changed<9)changed=0; - - - - - for(int i=0; iLeft() || btnLeft->GetState() == STATE_CLICKED)){ + + changed -= pagesize; + if (changed < 0) + changed=gameCnt-(gameCnt%8); + + for(int i=0; iSetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 65); - //usleep(500000); - - //if (changedid[0], header->id[1], header->id[2]); snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]); - + snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, IDfull); cover[i] = new GuiImageData(imgPath,0); //load short id if (!cover[i]->GetImage()) //if could not load the short id image { delete cover[i]; + cover[i] = NULL; snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, ID); cover[i] = new GuiImageData(imgPath, 0); //load full id image if (!cover[i]->GetImage()) { delete cover[i]; + cover[i] = NULL; snprintf(imgPath, sizeof(imgPath), "%snoimage.png", CFG.covers_path); cover[i] = new GuiImageData(imgPath, nocover_png); //load no image } @@ -527,38 +420,17 @@ void GuiGameGrid::Update(GuiTrigger * t) coverImg[i]->SetWidescreen(CFG.widescreen); coverImg[i]->SetScale(0.6); coverImg[i]->SetParent(game[i]); - //coverImg[i]->SetAlignment(ALIGN_CENTRE,ALIGN_MIDDLE); - coverImg[i]->SetPosition(-10,-35); - game[i]->ResetState(); - game[i]->SetVisible(true); + coverImg[i]->SetPosition(-10,-35); + game[i]->ResetState(); + game[i]->SetVisible(true); game[i]->SetImage(coverImg[i]); coverImg[i]->SetEffect(EFFECT_SLIDE_RIGHT | EFFECT_SLIDE_IN, 65);//} if (((changed+pagesize)>gameCnt)&&(i>((gameCnt-changed)-1))) - coverImg[i]->SetVisible(false); - //usleep(500000); - + game[i]->SetVisible(false); } - //prev = this->FindMenuItem(gameIndex[selectedItem], -1); - - //if(prev >= 0) - - - WPAD_ScanPads(); - u8 cnt, buttons = NULL; - /* Get pressed buttons */ - for (cnt = 0; cnt < 4; cnt++) - buttons |= WPAD_ButtonsHeld(cnt); - if (buttons == WPAD_BUTTON_A) { - - } else { btnLeft->ResetState(); - - } } - - - } if(updateCB) updateCB(this); @@ -579,29 +451,34 @@ void GuiGameGrid::Reload(struct discHdr * l, int count) char imgPath[100]; for(int i=0; iSetEffect(EFFECT_SLIDE_LEFT | EFFECT_SLIDE_OUT, 50); - //usleep(500000); - - //if (changedid[0], header->id[1], header->id[2]); - snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]); - - snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, IDfull); - cover[i] = new GuiImageData(imgPath,0); //load short id + snprintf (ID,sizeof(ID),"%c%c%c", header->id[0], header->id[1], header->id[2]); + snprintf (IDfull,sizeof(IDfull),"%c%c%c%c%c%c", header->id[0], header->id[1], header->id[2],header->id[3], header->id[4], header->id[5]); + + snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, IDfull); + cover[i] = new GuiImageData(imgPath,0); //load short id if (!cover[i]->GetImage()) //if could not load the short id image { delete cover[i]; + cover[i] = NULL; snprintf(imgPath, sizeof(imgPath), "%s%s.png", CFG.covers_path, ID); cover[i] = new GuiImageData(imgPath, 0); //load full id image if (!cover[i]->GetImage()) { delete cover[i]; + cover[i] = NULL; snprintf(imgPath, sizeof(imgPath), "%snoimage.png", CFG.covers_path); cover[i] = new GuiImageData(imgPath, nocover_png); //load no image } @@ -611,15 +488,13 @@ void GuiGameGrid::Reload(struct discHdr * l, int count) coverImg[i]->SetWidescreen(CFG.widescreen); coverImg[i]->SetScale(0.6); coverImg[i]->SetParent(game[i]); - //coverImg[i]->SetAlignment(ALIGN_CENTRE,ALIGN_MIDDLE); - coverImg[i]->SetPosition(-10,-35); - game[i]->ResetState(); - game[i]->SetVisible(true); + coverImg[i]->SetPosition(-10,-35); + game[i]->ResetState(); + game[i]->SetVisible(true); game[i]->SetImage(coverImg[i]); coverImg[i]->SetEffect(EFFECT_SLIDE_TOP | EFFECT_SLIDE_IN, 50);//} if (((changed+pagesize)>gameCnt)&&(i>((gameCnt-changed)-1))) - coverImg[i]->SetVisible(false); - //usleep(500000); - + game[i]->SetVisible(false); + game[i]->ResetState();} } diff --git a/source/menu.cpp b/source/menu.cpp index 0d8f1ed3..37acedd6 100644 --- a/source/menu.cpp +++ b/source/menu.cpp @@ -3011,7 +3011,7 @@ static int MenuDiscList() countBtn.SetEffectGrow(); countBtn.SetAlpha(180); - + GuiImage gridBtnImg(&imgarrangeGrid); gridBtnImg.SetWidescreen(CFG.widescreen); GuiImage gridBtnImg_g(&imgarrangeGrid_gray); @@ -3088,7 +3088,7 @@ static int MenuDiscList() gameBrowser.SetPosition(THEME.selection_x, THEME.selection_y); gameBrowser.SetAlignment(ALIGN_LEFT, ALIGN_CENTRE); - GuiGameGrid gameGrid(640,400, gameList, gameCnt, CFG.theme_path, bg_options_png, startat, offset); + GuiGameGrid gameGrid(640,400, gameList, gameCnt, CFG.theme_path, bg_options_png, 0, 0); gameGrid.SetPosition(0,20); gameGrid.SetAlignment(ALIGN_LEFT, ALIGN_CENTRE); @@ -3362,7 +3362,7 @@ static int MenuDiscList() if (Settings.gameDisplay==list){ gameBrowser.Reload(gameList, gameCnt);} else if (Settings.gameDisplay==grid){ - gameGrid.Reload(gameList, gameCnt);} + gameGrid.Reload(gameList, gameCnt);} gameBrowser.Reload(gameList, gameCnt); sprintf(GamesCnt,"%s: %i",LANGUAGE.Games, gameCnt); gamecntTxt.SetText(GamesCnt); @@ -3412,12 +3412,12 @@ static int MenuDiscList() } countBtn.ResetState(); } - + else if(gridBtn.GetState() == STATE_CLICKED) { if (Settings.gameDisplay==list){ Settings.gameDisplay=grid; - + mainWindow->Remove(&gameBrowser); mainWindow->Append(&gameGrid); if (GameIDTxt)w.Remove(GameIDTxt); @@ -3429,19 +3429,23 @@ static int MenuDiscList() countBtn.SetPosition(-16,13); gridBtn.SetPosition(16,13); carosselleBtn.SetPosition(48,13); + + if((Settings.hddinfo == hr12)||(Settings.hddinfo == hr24)) { clockTime.SetPosition(THEME.clock_x, THEME.clock_y+3); clockTimeBack.SetPosition(THEME.clock_x, THEME.clock_y+3); w.Append(&clockTime); w.Append(&clockTimeBack); + } + w.Append(&favoriteBtn); w.Append(&abcBtn); w.Append(&countBtn); w.Append(&gridBtn); w.Append(&carosselleBtn);} - + else if (Settings.gameDisplay==grid){ Settings.gameDisplay=list; - + mainWindow->Remove(&gameGrid); mainWindow->Append(&gameBrowser); gridBtn.SetImage(&gridBtnImg_g); @@ -3450,29 +3454,32 @@ static int MenuDiscList() countBtn.SetPosition(84,15); gridBtn.SetPosition(116,15); carosselleBtn.SetPosition(148,15); + + if((Settings.hddinfo == hr12)||(Settings.hddinfo == hr24)) { clockTime.SetPosition(THEME.clock_x, THEME.clock_y); clockTimeBack.SetPosition(THEME.clock_x, THEME.clock_y); w.Append(&clockTime); w.Append(&clockTimeBack); + } w.Append(&favoriteBtn); w.Append(&abcBtn); w.Append(&countBtn); w.Append(&gridBtn); w.Append(&carosselleBtn);} - + if(isSdInserted()) { cfg_save_global(); - } - + } + //menu = MENU_DISCLIST; gridBtn.ResetState(); } - + if (Settings.gameDisplay==grid){ int selectimg; selectimg = gameGrid.GetSelectedOption(); gameSelected = gameGrid.GetClickedOption();} - + if (Settings.gameDisplay==list) { //Get selected game under cursor int selectimg;//, promptnumber; @@ -3480,8 +3487,8 @@ static int MenuDiscList() char IDfull[7]; selectimg = gameBrowser.GetSelectedOption(); gameSelected = gameBrowser.GetClickedOption(); - - + + if (gameSelected > 0) //if click occured selectimg = gameSelected;