void ConfigPackagePage::initializePage() { packageInfo info; if(qGen->type() == GeneratorWindow::Plugin) { plugLibInfo libInfo(field("path").toString()); if(libInfo.isValid()) { info = libInfo.toInfo(); } } else if(qGen->type() == GeneratorWindow::Art) { QFileInfo file(field("path").toString()); info.properties["name"] = file.fileName(); QDir dir = file.dir(); info.properties["type"] = dir.dirName(); info.properties["platform"] = "all"; } setField("name", info.properties["name"]); setField("type", info.properties["type"]); setField("version", info.properties["version"]); setField("category", qGen->type()); setField("shortdesc", info.properties["description"]); setField("url", info.properties["url"]); setField("author", info.properties["author"]); setField("platform", info.properties["platform"]); setField("license", info.properties["license"]); }
std::list<LibInfo> CProfileDatabase::findProfiles(UID id, const std::map<std::string, std::string> & profileArguments, std::string platform) { LOG4CPLUS_TRACE_METHOD(msLogger, __PRETTY_FUNCTION__ ); mpRequestMutex->lock(); LOG4CPLUS_INFO(msLogger, "- CProfileDatabase::findProfiles() Find UID : " + id.value); std::list<LibInfo> result; for (std::map<UID,CProfileInfo>::iterator pit = mProfiles.begin(); mProfiles.end() != pit; ++pit) { CProfileInfo &info = pit->second; LOG4CPLUS_INFO(msLogger, "-- UID: "+ info.uid().value + ", API UID : " + info.apiUid().value); if ((info.uid() == id || info.apiUid() == id)/* && (platform == "" || "" != info.lib(platform))*/) { int rel = getRelevance(info,profileArguments); if (!rel) { continue; } if ("" == platform) { for (std::map<std::string,std::string>::const_iterator libIt = info.libs().begin(); info.libs().end() != libIt; ++libIt) { LibInfo libInfo(info.uid(),libIt->first, libIt->second,rel); result.push_back(libInfo); } } else { std::string rPath = info.lib(platform); if ("" != rPath) { LibInfo libInfo(info.uid(),platform,rPath); result.push_back(libInfo); } } } } mpRequestMutex->unlock(); /// todo: sort results by relevance (add operator < to to LibInfo structure) (after first AXIS implementation, this task is on future) LOG4CPLUS_WARN(msLogger, "Add sorting results by relevance"); return result; }
void LegacyUpdate::fmllibsStart() { // Get the mod list LegacyInstance *inst = (LegacyInstance *)m_inst; auto modList = inst->jarModList(); bool forge_present = false; QString version = inst->intendedVersionId(); if (!fmlLibsMapping.contains(version)) { lwjglStart(); return; } auto &libList = fmlLibsMapping[version]; // determine if we need some libs for FML or forge setStatus(tr("Checking for FML libraries...")); for (unsigned i = 0; i < modList->size(); i++) { auto &mod = modList->operator[](i); // do not use disabled mods. if (!mod.enabled()) continue; if (mod.type() != Mod::MOD_ZIPFILE) continue; if (mod.mmc_id().contains("forge", Qt::CaseInsensitive)) { forge_present = true; break; } if (mod.mmc_id().contains("fml", Qt::CaseInsensitive)) { forge_present = true; break; } } // we don't... if (!forge_present) { lwjglStart(); return; } // now check the lib folder inside the instance for files. for (auto &lib : libList) { QFileInfo libInfo(PathCombine(inst->libDir(), lib.name)); if (libInfo.exists()) continue; fmlLibsToProcess.append(lib); } // if everything is in place, there's nothing to do here... if (fmlLibsToProcess.isEmpty()) { lwjglStart(); return; } // download missing libs to our place setStatus(tr("Dowloading FML libraries...")); auto dljob = new NetJob("FML libraries"); auto metacache = MMC->metacache(); for (auto &lib : fmlLibsToProcess) { auto entry = metacache->resolveEntry("fmllibs", lib.name); QString urlString = lib.ours ? URLConstants::FMLLIBS_OUR_BASE_URL + lib.name : URLConstants::FMLLIBS_FORGE_BASE_URL + lib.name; dljob->addNetAction(CacheDownload::make(QUrl(urlString), entry)); } connect(dljob, SIGNAL(succeeded()), SLOT(fmllibsFinished())); connect(dljob, SIGNAL(failed()), SLOT(fmllibsFailed())); connect(dljob, SIGNAL(progress(qint64, qint64)), SIGNAL(progress(qint64, qint64))); legacyDownloadJob.reset(dljob); legacyDownloadJob->start(); }