void ListGenerator::createSFList(u8 maxBtns, Config &m_sourceMenuCfg, bool show_homebrew, bool show_channel, bool show_plugin, bool show_gc, const string& sourceDir, const string& DBName, bool UpdateCache) { if(!DBName.empty()) { if(UpdateCache) fsop_deleteFile(DBName.c_str()); else { CCache(*this, DBName, LOAD); if(!this->empty()) return; fsop_deleteFile(DBName.c_str()); } } char btn_selected[256]; for(u8 i = 0; i < maxBtns; i++) { memset(btn_selected, 0, 256); strncpy(btn_selected, fmt("BUTTON_%i", i), 255); string source = m_sourceMenuCfg.getString(btn_selected, "source",""); if(source == "") continue; if(source == "dml" && !show_gc) continue; else if(source == "emunand" && !show_channel) continue; else if(source == "homebrew" && (!show_homebrew)) continue; else if((source == "plugin" || source == "allplugins") && !show_plugin) continue; const char *path = fmt("%s/%s", sourceDir.c_str(), m_sourceMenuCfg.getString(btn_selected, "image", "").c_str()); memset((void*)&ListElement, 0, sizeof(dir_discHdr)); ListElement.index = m_gameList.size(); strncpy(ListElement.id, "SOURCE", 6); strncpy(ListElement.path, path, sizeof(ListElement.path) - 1); ListElement.casecolor = 0xFFFFFF; ListElement.type = TYPE_SOURCE; ListElement.settings[0] = i; const char *title = m_sourceMenuCfg.getString(btn_selected, "title", fmt("title_%i", i)).c_str(); mbstowcs(ListElement.title, title, 63); Asciify(ListElement.title); m_gameList.push_back(ListElement); } if(!this->empty() && !DBName.empty()) /* Write a new Cache */ CCache(*this, DBName, SAVE); }
void ListGenerator::CreateList(u32 Flow, u32 Device, const string& Path, const vector<string>& FileTypes, const string& DBName, bool UpdateCache) { if(!DBName.empty()) { if(UpdateCache) fsop_deleteFile(DBName.c_str()); else { CCache(*this, DBName, LOAD); if(!this->empty()) return; fsop_deleteFile(DBName.c_str()); } } //if(Flow != COVERFLOW_PLUGIN) OpenConfigs(); if(Flow == COVERFLOW_WII) { if(DeviceHandle.GetFSType(Device) == PART_FS_WBFS) Create_Wii_WBFS_List(DeviceHandle.GetWbfsHandle(Device)); else GetFiles(Path.c_str(), FileTypes, Create_Wii_EXT_List, false); } else if(Flow == COVERFLOW_CHANNEL) { ChannelHandle.Init(gameTDB_Language); Create_Channel_List(); } else if(DeviceHandle.GetFSType(Device) != PART_FS_WBFS) { if(Flow == COVERFLOW_GAMECUBE) GetFiles(Path.c_str(), FileTypes, Create_GC_List, true);//the only one that looks for a folder (/root) else if(Flow == COVERFLOW_PLUGIN) GetFiles(Path.c_str(), FileTypes, Create_Plugin_List, false, 30);//wow 30 subfolders! really? else if(Flow == COVERFLOW_HOMEBREW) GetFiles(Path.c_str(), FileTypes, Create_Homebrew_List, false); } CloseConfigs(); if(!this->empty() && !DBName.empty()) /* Write a new Cache */ CCache(*this, DBName, SAVE); }
bool CMenu::_LangSettings(void) { _refreshLangSettings(); bool lang_changed = false; while(!m_exit) { _mainLoopCommon(); if(BTN_HOME_PRESSED || BTN_B_PRESSED) break; else if(BTN_A_PRESSED) { if(m_btnMgr.selected(m_LangSettingsBtnBack)) break; else if(m_btnMgr.selected(m_LangSettingsBtnCurLanguageP) || m_btnMgr.selected(m_LangSettingsBtnCurLanguageM)) { s8 direction = m_btnMgr.selected(m_LangSettingsBtnCurLanguageP) ? 1 : -1; available_pos = loopNum(available_pos + direction, languages_available.size()); m_curLanguage = languages_available[available_pos]; if(!m_loc.load(fmt("%s/%s.ini", m_languagesDir.c_str(), m_curLanguage.c_str()))) { m_curLanguage = "Default"; m_cfg.setString("GENERAL", "language", m_curLanguage.c_str()); m_loc.unload(); } else m_cfg.setString("GENERAL", "language", m_curLanguage.c_str()); lang_changed = true; _updateText(); _showLangSettings(); } else if(m_btnMgr.selected(m_LangSettingsBtnGetLanguages)) { /* reset our variables doh */ _hideLangSettings(); language_cnt = 0; mem_pos = 0; u8 *file = NULL; u32 filesize = 0; _downloadUrl(fmt("%s/Languages/", SVN_URL), &file, &filesize); if(m_buffer != NULL) { const char *search_char = "<li><a"; /* getting count */ char *start = (strstr((char*)file, search_char)); /* skipping the .. */ start = strstr(start, "\n") + 1; /* skipping the line */ char *tmp = start; while((tmp = strstr(tmp, search_char)) != NULL) { language_cnt++; tmp = strstr(tmp, "\n") + 1; /* next line */ } gprintf("Found %u languages\n", language_cnt); /* creating list */ tmp = start; lang_list_mem = (language_list*)MEM2_alloc(language_cnt*sizeof(language_list)); memset(lang_list_mem, 0, language_cnt*sizeof(language_list)); for(u32 i = 0; i < language_cnt; ++i) { tmp = strstr(tmp, search_char); char *lang_chr = strchr(tmp, 0x22) + 1; /* the " is the beginning for the name */ memcpy(lang_list_mem[i].lang, lang_chr, std::min(31u, (u32)(strchr(lang_chr, '.') - lang_chr))); //gprintf("%s added\n", lang_list_mem[i].lang); tmp = strstr(tmp, "\n") + 1; /* next line */ } //gprintf("Finished creating the list\n"); free(m_buffer); m_buffer = NULL; } _showLangSettings(); } else if(m_btnMgr.selected(m_LangSettingsBtnCurDlLangP) || m_btnMgr.selected(m_LangSettingsBtnCurDlLangM)) { s8 direction = m_btnMgr.selected(m_LangSettingsBtnCurDlLangP) ? 1 : -1; mem_pos = loopNum(mem_pos + direction, language_cnt); _showLangSettings(); } else if(m_btnMgr.selected(m_LangSettingsBtnDownload)) { _hideLangSettings(); m_loc.unload(); /* Get main ini */ u8 *file = NULL; u32 filesize = 0; _downloadUrl(fmt("%s/Languages/%s.ini", SVN_URL, lang_list_mem[mem_pos].lang), &file, &filesize); if(m_buffer != NULL) { if(filesize > 0) { const char *language_ini = fmt("%s/%s.ini", m_languagesDir.c_str(), lang_list_mem[mem_pos].lang); fsop_deleteFile(language_ini); fsop_WriteFile(language_ini, file, filesize); gprintf("Wrote %s with the size %u\n", language_ini, filesize); } free(m_buffer); m_buffer = NULL; } /* Get help file */ file = NULL; filesize = 0; _downloadUrl(fmt("%s/help/%s.txt", SVN_URL, lang_list_mem[mem_pos].lang), &file, &filesize); if(m_buffer != NULL) { if(filesize > 0) { const char *language_help = fmt("%s/%s.txt", m_helpDir.c_str(), lang_list_mem[mem_pos].lang); fsop_deleteFile(language_help); fsop_WriteFile(language_help, file, filesize); gprintf("Wrote %s with the size %u\n", language_help, filesize); } free(m_buffer); m_buffer = NULL; } /* reload */ m_loc.load(fmt("%s/%s.ini", m_languagesDir.c_str(), m_curLanguage.c_str())); _updateText(); _refreshLangSettings(); } } } _hideLangSettings(); if(lang_changed) _cfNeedsUpdate(); if(lang_list_mem != NULL) free(lang_list_mem); lang_list_mem = NULL; return lang_changed; }