WiiFlow_Lite/source/menu/menu_paths.cpp
fledge68 17fa36e898 -fixed displaying errors on source menu
-removed vipatch, country patch, private server and cheats defaults from wiiflow.ini. no need for default/global setting for those options. they all default to off internally in wiiflow.
-now on file explorer menu pressing home btn returns you to device select so you don't have to keep backing up to get back to devices.
-fixed a few minor problems with game configs, especially gc games. now all game config options should work properly.
-now using bitwise operators and expressions on m_current_view to control which sources are selected.  no more source= under each domain. just sources= under GENERAL.
-replaced ocarina option from main settings pg3 with channels type option. no need for a global/default ocarina setting. channels type allows you to select real, emu, or both channels types for channels coverflow. which means no more pressing B on config icon to cycle thru the choices.
-fixed a minor bug when downloading covers
-changed newid.ini to use only one domain name "[NEWID]". this fixes a possible problem when downloading covers and using newid.ini and multisource.
-added install wad option to nand emulation settings menu. I know you can do it via file explorer but this makes it easier for newbies to find. plus you can select which nand to install to.
-fixed extract game saves.
-fixed extract nand and install GC game by stopping music and controller input while doing these functions.
-Install wii game is broke. added a error msg stating this and keeping users from using it. funny the code is almost identical to usbloader gx which works and wiiflow doesn't.
-now showing all btns on game selected screen. if wiiflow is locked a error msg appears stating this.
-changed makeDir to make the whole path not just one folder. thanks to usbloader gx code.
-added .ciso extension to gamecube list maker so you can use them with nintendont.
2016-12-01 00:05:39 +00:00

296 lines
10 KiB
C++

#include "menu.hpp"
using namespace std;
s16 m_pathsLblTitle;
s16 m_pathsLblPage;
s16 m_pathsBtnPageM;
s16 m_pathsBtnPageP;
s16 m_pathsBtnBack;
s16 m_pathsLbl1;
s16 m_pathsLbl2;
s16 m_pathsLbl3;
s16 m_pathsLbl4;
s16 m_pathsBtn1;
s16 m_pathsBtn2;
s16 m_pathsBtn3;
s16 m_pathsBtn4;
s16 m_pathsLblUser[4];
TexData m_pathsBg;
u8 paths_curPage = 1;
u8 paths_Pages = 2;
void CMenu::_hidePaths(bool instant)
{
m_btnMgr.hide(m_pathsLblTitle, instant);
m_btnMgr.hide(m_pathsBtnBack, instant);
m_btnMgr.hide(m_pathsLblPage, instant);
m_btnMgr.hide(m_pathsBtnPageM, instant);
m_btnMgr.hide(m_pathsBtnPageP, instant);
m_btnMgr.hide(m_pathsLbl1, instant);
m_btnMgr.hide(m_pathsBtn1, instant);
m_btnMgr.hide(m_pathsLbl2, instant);
m_btnMgr.hide(m_pathsBtn2, instant);
m_btnMgr.hide(m_pathsLbl3, instant);
m_btnMgr.hide(m_pathsBtn3, instant);
m_btnMgr.hide(m_pathsLbl4, instant);
m_btnMgr.hide(m_pathsBtn4, instant);
for(u8 i = 0; i < ARRAY_SIZE(m_pathsLblUser); ++i)
if(m_pathsLblUser[i] != -1)
m_btnMgr.hide(m_pathsLblUser[i], instant);
}
void CMenu::_showPaths(void)
{
m_btnMgr.hide(m_pathsLbl1, true);
m_btnMgr.hide(m_pathsBtn1, true);
m_btnMgr.hide(m_pathsLbl2, true);
m_btnMgr.hide(m_pathsBtn2, true);
m_btnMgr.hide(m_pathsLbl3, true);
m_btnMgr.hide(m_pathsBtn3, true);
m_btnMgr.hide(m_pathsLbl4, true);
m_btnMgr.hide(m_pathsBtn4, true);
_setBg(m_pathsBg, m_pathsBg);
m_btnMgr.show(m_pathsLblTitle);
m_btnMgr.show(m_pathsBtnBack);
m_btnMgr.show(m_pathsLblPage);
m_btnMgr.show(m_pathsBtnPageM);
m_btnMgr.show(m_pathsBtnPageP);
for(u32 i = 0; i < ARRAY_SIZE(m_pathsLblUser); ++i)
if(m_pathsLblUser[i] != -1)
m_btnMgr.show(m_pathsLblUser[i]);
m_btnMgr.setText(m_pathsLblPage, wfmt(L"%i / %i", paths_curPage, paths_Pages));
m_btnMgr.show(m_pathsLbl1);
m_btnMgr.show(m_pathsBtn1);
m_btnMgr.show(m_pathsLbl2);
m_btnMgr.show(m_pathsBtn2);
m_btnMgr.show(m_pathsLbl3);
m_btnMgr.show(m_pathsBtn3);
if(paths_curPage == 1)
{
m_btnMgr.show(m_pathsLbl4);
m_btnMgr.show(m_pathsBtn4);
m_btnMgr.setText(m_pathsLbl1, _t("cfgp8", L"Box Covers"));
m_btnMgr.setText(m_pathsLbl2, _t("cfgp2", L"Flat Covers"));
m_btnMgr.setText(m_pathsLbl3, _t("cfgp9", L"Custom Banners"));
m_btnMgr.setText(m_pathsLbl4, _t("cfgp4", L"Banners Cache"));
}
else
{
m_btnMgr.setText(m_pathsLbl1, _t("cfgp5", L"Wii Games"));
m_btnMgr.setText(m_pathsLbl2, _t("cfgp6", L"GameCube Games"));
m_btnMgr.setText(m_pathsLbl3, _t("cfgp7", L"Music"));
}
}
void CMenu::_Paths(void)
{
const char *path;
paths_curPage = 1;
SetupInput();
_showPaths();
while(!m_exit)
{
_mainLoopCommon();
if (BTN_HOME_PRESSED || BTN_B_PRESSED || (BTN_A_PRESSED && m_btnMgr.selected(m_pathsBtnBack)))
break;
else if (BTN_UP_PRESSED)
m_btnMgr.up();
else if (BTN_DOWN_PRESSED)
m_btnMgr.down();
else if (BTN_LEFT_PRESSED || BTN_MINUS_PRESSED || (BTN_A_PRESSED && m_btnMgr.selected(m_pathsBtnPageM)))
{
paths_curPage--;
if(paths_curPage == 0) paths_curPage = paths_Pages;
if(BTN_LEFT_PRESSED || BTN_MINUS_PRESSED)
m_btnMgr.click(m_pathsBtnPageM);
_showPaths();
}
else if (BTN_RIGHT_PRESSED || BTN_PLUS_PRESSED || (BTN_A_PRESSED && m_btnMgr.selected(m_pathsBtnPageP)))
{
paths_curPage++;
if(paths_curPage > paths_Pages) paths_curPage = 1;
if(BTN_RIGHT_PRESSED || BTN_PLUS_PRESSED) m_btnMgr.click(m_pathsBtnPageP);
_showPaths();
}
else if (BTN_A_PRESSED && paths_curPage == 1)
{
if (m_btnMgr.selected(m_pathsBtn1))
{
_hidePaths();
path = _FolderExplorer(m_cfg.getString("GENERAL", "dir_box_covers").c_str());
if(strlen(path) > 0)
{
m_cfg.setString("GENERAL", "dir_box_covers", path);
m_boxPicDir = path;
//m_refreshGameList = true;
_initCF();
}
_showPaths();
}
else if (m_btnMgr.selected(m_pathsBtn2))
{
_hidePaths();
path = _FolderExplorer(m_cfg.getString("GENERAL", "dir_flat_covers").c_str());
if(strlen(path) > 0)
{
m_cfg.setString("GENERAL", "dir_flat_covers", path);
m_picDir = path;
//m_refreshGameList = true;
_initCF();
}
_showPaths();
}
else if (m_btnMgr.selected(m_pathsBtn3))
{
_hidePaths();
path = _FolderExplorer(m_cfg.getString("GENERAL", "dir_custom_banners").c_str());
if(strlen(path) > 0)
{
m_cfg.setString("GENERAL", "dir_custom_banners", path);
m_customBnrDir = path;
}
_showPaths();
}
else if (m_btnMgr.selected(m_pathsBtn4))
{
_hidePaths();
path = _FolderExplorer(m_cfg.getString("GENERAL", "dir_banner_cache").c_str());
if(strlen(path) > 0)
{
m_cfg.setString("GENERAL", "dir_banner_cache", path);
m_bnrCacheDir = path;
}
_showPaths();
}
}
else if (BTN_A_PRESSED && paths_curPage == 2)
{
if (m_btnMgr.selected(m_pathsBtn1))
{
_hidePaths();
currentPartition = m_cfg.getInt(WII_DOMAIN, "partition", USB1);
string gameDir(fmt(wii_games_dir, DeviceName[currentPartition]));
path = _FolderExplorer(gameDir.c_str());
if(strlen(path) > 0)
{
if(strncmp(path, "sd:/", 4) == 0)
m_cfg.setInt(WII_DOMAIN, "partition", 0);
else
{
const char *partval = &path[3];
m_cfg.setInt(WII_DOMAIN, "partition", atoi(partval));
}
char tmpPath[MAX_FAT_PATH];
strcpy(tmpPath, "%s");
strcat(tmpPath, strchr(path, ':'));
m_cfg.setString(WII_DOMAIN, "wii_games_dir", tmpPath);
memset(wii_games_dir, 0, 64);
strncpy(wii_games_dir, tmpPath, 64);
m_cfg.setBool(WII_DOMAIN, "update_cache", true);
if(m_current_view & COVERFLOW_WII)
m_refreshGameList = true;
}
_showPaths();
}
else if (m_btnMgr.selected(m_pathsBtn2))
{
_hidePaths();
currentPartition = m_cfg.getInt(GC_DOMAIN, "partition", USB1);
string gameDir(fmt(gc_games_dir, DeviceName[currentPartition]));
path = _FolderExplorer(gameDir.c_str());
if(strlen(path) > 0)
{
if(strncmp(path, "sd:/", 4) == 0)
m_cfg.setInt(GC_DOMAIN, "partition", 0);
else
{
//might add error check to make sure its first partition and FAT only
const char *partval = &path[3];
m_cfg.setInt(GC_DOMAIN, "partition", atoi(partval));
}
char tmpPath[MAX_FAT_PATH];
strcpy(tmpPath, "%s");
strcat(tmpPath, strchr(path, ':'));
m_cfg.setString(GC_DOMAIN, "gc_games_dir", tmpPath);
memset(gc_games_dir, 0, 64);
strncpy(gc_games_dir, tmpPath, 64);
m_cfg.setBool(GC_DOMAIN, "update_cache", true);
if(m_current_view & COVERFLOW_GAMECUBE)
m_refreshGameList = true;
}
_showPaths();
}
if (m_btnMgr.selected(m_pathsBtn3))
{
_hidePaths();
path = _FolderExplorer(m_cfg.getString("GENERAL", "dir_music").c_str());
if(strlen(path) > 0)
{
m_cfg.setString("GENERAL", "dir_music", path);
m_musicDir = path;
MusicPlayer.Init(m_cfg, m_musicDir, fmt("%s/music", m_themeDataDir.c_str()));
}
_showPaths();
}
}
}
_hidePaths();
}
void CMenu::_initPathsMenu()
{
_addUserLabels(m_pathsLblUser, ARRAY_SIZE(m_pathsLblUser), "PATHS");
m_pathsBg = _texture("PATHS/BG", "texture", theme.bg, false);
m_pathsLblTitle = _addTitle("PATHS/TITLE", theme.titleFont, L"", 0, 10, 640, 60, theme.titleFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE);
m_pathsLblPage = _addLabel("PATHS/PAGE_BTN", theme.btnFont, L"", 68, 400, 104, 48, theme.btnFontColor, FTGX_JUSTIFY_CENTER | FTGX_ALIGN_MIDDLE, theme.btnTexC);
m_pathsBtnPageM = _addPicButton("PATHS/PAGE_MINUS", theme.btnTexMinus, theme.btnTexMinusS, 20, 400, 48, 48);
m_pathsBtnPageP = _addPicButton("PATHS/PAGE_PLUS", theme.btnTexPlus, theme.btnTexPlusS, 172, 400, 48, 48);
m_pathsBtnBack = _addButton("PATHS/BACK_BTN", theme.btnFont, L"", 420, 400, 200, 48, theme.btnFontColor);
m_pathsLbl1 = _addLabel("PATHS/DIR1", theme.lblFont, L"", 20, 125, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
m_pathsBtn1 = _addButton("PATHS/DIR1_BTN", theme.btnFont, L"", 420, 130, 200, 48, theme.btnFontColor);
m_pathsLbl2 = _addLabel("PATHS/DIR2", theme.lblFont, L"", 20, 185, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
m_pathsBtn2 = _addButton("PATHS/DIR2_BTN", theme.btnFont, L"", 420, 190, 200, 48, theme.btnFontColor);
m_pathsLbl3 = _addLabel("PATHS/DIR3", theme.lblFont, L"", 20, 245, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
m_pathsBtn3 = _addButton("PATHS/DIR3_BTN", theme.btnFont, L"", 420, 250, 200, 48, theme.btnFontColor);
m_pathsLbl4 = _addLabel("PATHS/DIR4", theme.lblFont, L"", 20, 305, 385, 56, theme.lblFontColor, FTGX_JUSTIFY_LEFT | FTGX_ALIGN_MIDDLE);
m_pathsBtn4 = _addButton("PATHS/DIR4_BTN", theme.btnFont, L"", 420, 310, 200, 48, theme.btnFontColor);
_setHideAnim(m_pathsLblTitle, "PATHS/TITLE", 0, 0, -2.f, 0.f);
_setHideAnim(m_pathsBtnBack, "PATHS/BACK_BTN", 0, 0, 1.f, -1.f);
_setHideAnim(m_pathsLblPage, "PATHS/PAGE_BTN", 0, 0, 1.f, -1.f);
_setHideAnim(m_pathsBtnPageM, "PATHS/PAGE_MINUS", 0, 0, 1.f, -1.f);
_setHideAnim(m_pathsBtnPageP, "PATHS/PAGE_PLUS", 0, 0, 1.f, -1.f);
_setHideAnim(m_pathsLbl1, "PATHS/DIR1", 50, 0, -2.f, 0.f);
_setHideAnim(m_pathsBtn1, "PATHS/DIR1_BTN", -50, 0, 1.f, 0.f);
_setHideAnim(m_pathsLbl2, "PATHS/DIR2", 50, 0, -2.f, 0.f);
_setHideAnim(m_pathsBtn2, "PATHS/DIR2_BTN", -50, 0, 1.f, 0.f);
_setHideAnim(m_pathsLbl3, "PATHS/DIR3", 50, 0, -2.f, 0.f);
_setHideAnim(m_pathsBtn3, "PATHS/DIR3_BTN", -50, 0, 1.f, 0.f);
_setHideAnim(m_pathsLbl4, "PATHS/DIR4", 50, 0, -2.f, 0.f);
_setHideAnim(m_pathsBtn4, "PATHS/DIR4_BTN", -50, 0, 1.f, 0.f);
_hidePaths(true);
_textPaths();
}
void CMenu::_textPaths(void)
{
m_btnMgr.setText(m_pathsLblTitle, _t("cfgd4", L"Path Manager"));
m_btnMgr.setText(m_pathsBtnBack, _t("cfg10", L"Back"));
m_btnMgr.setText(m_pathsBtn1, _t("dl16", L"Set"));
m_btnMgr.setText(m_pathsBtn2, _t("dl16", L"Set"));
m_btnMgr.setText(m_pathsBtn3, _t("dl16", L"Set"));
m_btnMgr.setText(m_pathsBtn4, _t("dl16", L"Set"));
}