NOISSUE tabs -> spaces

This commit is contained in:
Petr Mrázek
2018-07-15 14:51:05 +02:00
parent 03280cc62e
commit bbb3b3e6f6
577 changed files with 51938 additions and 51938 deletions

View File

@ -11,107 +11,107 @@ FtbPackFetchTask::~FtbPackFetchTask()
void FtbPackFetchTask::fetch()
{
NetJob *netJob = new NetJob("FtbModpackFetch");
NetJob *netJob = new NetJob("FtbModpackFetch");
QUrl publicPacksUrl = QUrl("https://ftb.cursecdn.com/FTB2/static/modpacks.xml");
qDebug() << "Downloading public version info from" << publicPacksUrl.toString();
netJob->addNetAction(Net::Download::makeByteArray(publicPacksUrl, &publicModpacksXmlFileData));
QUrl publicPacksUrl = QUrl("https://ftb.cursecdn.com/FTB2/static/modpacks.xml");
qDebug() << "Downloading public version info from" << publicPacksUrl.toString();
netJob->addNetAction(Net::Download::makeByteArray(publicPacksUrl, &publicModpacksXmlFileData));
QUrl thirdPartyUrl = QUrl("https://ftb.cursecdn.com/FTB2/static/thirdparty.xml");
qDebug() << "Downloading thirdparty version info from" << thirdPartyUrl.toString();
netJob->addNetAction(Net::Download::makeByteArray(thirdPartyUrl, &thirdPartyModpacksXmlFileData));
QUrl thirdPartyUrl = QUrl("https://ftb.cursecdn.com/FTB2/static/thirdparty.xml");
qDebug() << "Downloading thirdparty version info from" << thirdPartyUrl.toString();
netJob->addNetAction(Net::Download::makeByteArray(thirdPartyUrl, &thirdPartyModpacksXmlFileData));
QObject::connect(netJob, &NetJob::succeeded, this, &FtbPackFetchTask::fileDownloadFinished);
QObject::connect(netJob, &NetJob::failed, this, &FtbPackFetchTask::fileDownloadFailed);
QObject::connect(netJob, &NetJob::succeeded, this, &FtbPackFetchTask::fileDownloadFinished);
QObject::connect(netJob, &NetJob::failed, this, &FtbPackFetchTask::fileDownloadFailed);
jobPtr.reset(netJob);
netJob->start();
jobPtr.reset(netJob);
netJob->start();
}
void FtbPackFetchTask::fileDownloadFinished()
{
jobPtr.reset();
jobPtr.reset();
QStringList failedLists;
QStringList failedLists;
if(!parseAndAddPacks(publicModpacksXmlFileData, FtbPackType::Public, publicPacks)) {
failedLists.append(tr("Public Packs"));
}
if(!parseAndAddPacks(publicModpacksXmlFileData, FtbPackType::Public, publicPacks)) {
failedLists.append(tr("Public Packs"));
}
if(!parseAndAddPacks(thirdPartyModpacksXmlFileData, FtbPackType::ThirdParty, thirdPartyPacks)) {
failedLists.append(tr("Third Party Packs"));
}
if(!parseAndAddPacks(thirdPartyModpacksXmlFileData, FtbPackType::ThirdParty, thirdPartyPacks)) {
failedLists.append(tr("Third Party Packs"));
}
if(failedLists.size() > 0) {
emit failed(QString("Failed to download some pack lists:%1").arg(failedLists.join("\n- ")));
} else {
emit finished(publicPacks, thirdPartyPacks);
}
if(failedLists.size() > 0) {
emit failed(QString("Failed to download some pack lists:%1").arg(failedLists.join("\n- ")));
} else {
emit finished(publicPacks, thirdPartyPacks);
}
}
bool FtbPackFetchTask::parseAndAddPacks(QByteArray &data, FtbPackType packType, FtbModpackList &list)
{
QDomDocument doc;
QDomDocument doc;
QString errorMsg = "Unknown error.";
int errorLine = -1;
int errorCol = -1;
QString errorMsg = "Unknown error.";
int errorLine = -1;
int errorCol = -1;
if(!doc.setContent(data, false, &errorMsg, &errorLine, &errorCol)){
auto fullErrMsg = QString("Failed to fetch modpack data: %s %d:%d!").arg(errorMsg, errorLine, errorCol);
qWarning() << fullErrMsg;
data.clear();
return false;
}
if(!doc.setContent(data, false, &errorMsg, &errorLine, &errorCol)){
auto fullErrMsg = QString("Failed to fetch modpack data: %s %d:%d!").arg(errorMsg, errorLine, errorCol);
qWarning() << fullErrMsg;
data.clear();
return false;
}
QDomNodeList nodes = doc.elementsByTagName("modpack");
for(int i = 0; i < nodes.length(); i++) {
QDomElement element = nodes.at(i).toElement();
QDomNodeList nodes = doc.elementsByTagName("modpack");
for(int i = 0; i < nodes.length(); i++) {
QDomElement element = nodes.at(i).toElement();
FtbModpack modpack;
modpack.name = element.attribute("name");
modpack.currentVersion = element.attribute("version");
modpack.mcVersion = element.attribute("mcVersion");
modpack.description = element.attribute("description");
modpack.mods = element.attribute("mods");
modpack.logo = element.attribute("logo");
modpack.oldVersions = element.attribute("oldVersions").split(";");
modpack.broken = false;
modpack.bugged = false;
FtbModpack modpack;
modpack.name = element.attribute("name");
modpack.currentVersion = element.attribute("version");
modpack.mcVersion = element.attribute("mcVersion");
modpack.description = element.attribute("description");
modpack.mods = element.attribute("mods");
modpack.logo = element.attribute("logo");
modpack.oldVersions = element.attribute("oldVersions").split(";");
modpack.broken = false;
modpack.bugged = false;
//remove empty if the xml is bugged
for(QString curr : modpack.oldVersions) {
if(curr.isNull() || curr.isEmpty()) {
modpack.oldVersions.removeAll(curr);
modpack.bugged = true;
qWarning() << "Removed some empty versions from" << modpack.name;
}
}
//remove empty if the xml is bugged
for(QString curr : modpack.oldVersions) {
if(curr.isNull() || curr.isEmpty()) {
modpack.oldVersions.removeAll(curr);
modpack.bugged = true;
qWarning() << "Removed some empty versions from" << modpack.name;
}
}
if(modpack.oldVersions.size() < 1) {
if(!modpack.currentVersion.isNull() && !modpack.currentVersion.isEmpty()) {
modpack.oldVersions.append(modpack.currentVersion);
qWarning() << "Added current version to oldVersions because oldVersions was empty! (" + modpack.name + ")";
} else {
modpack.broken = true;
qWarning() << "Broken pack:" << modpack.name << " => No valid version!";
}
}
if(modpack.oldVersions.size() < 1) {
if(!modpack.currentVersion.isNull() && !modpack.currentVersion.isEmpty()) {
modpack.oldVersions.append(modpack.currentVersion);
qWarning() << "Added current version to oldVersions because oldVersions was empty! (" + modpack.name + ")";
} else {
modpack.broken = true;
qWarning() << "Broken pack:" << modpack.name << " => No valid version!";
}
}
modpack.author = element.attribute("author");
modpack.author = element.attribute("author");
modpack.dir = element.attribute("dir");
modpack.file = element.attribute("url");
modpack.dir = element.attribute("dir");
modpack.file = element.attribute("url");
modpack.type = packType;
modpack.type = packType;
list.append(modpack);
}
list.append(modpack);
}
return true;
return true;
}
void FtbPackFetchTask::fileDownloadFailed(QString reason){
qWarning() << "Fetching FtbPacks failed: " << reason;
emit failed(reason);
qWarning() << "Fetching FtbPacks failed: " << reason;
emit failed(reason);
}

View File

@ -8,30 +8,30 @@
class MULTIMC_LOGIC_EXPORT FtbPackFetchTask : public QObject {
Q_OBJECT
Q_OBJECT
public:
FtbPackFetchTask();
virtual ~FtbPackFetchTask();
FtbPackFetchTask();
virtual ~FtbPackFetchTask();
void fetch();
void fetch();
private:
NetJobPtr jobPtr;
NetJobPtr jobPtr;
QByteArray publicModpacksXmlFileData;
QByteArray thirdPartyModpacksXmlFileData;
QByteArray publicModpacksXmlFileData;
QByteArray thirdPartyModpacksXmlFileData;
bool parseAndAddPacks(QByteArray &data, FtbPackType packType, FtbModpackList &list);
FtbModpackList publicPacks;
FtbModpackList thirdPartyPacks;
bool parseAndAddPacks(QByteArray &data, FtbPackType packType, FtbModpackList &list);
FtbModpackList publicPacks;
FtbModpackList thirdPartyPacks;
protected slots:
void fileDownloadFinished();
void fileDownloadFailed(QString reason);
void fileDownloadFinished();
void fileDownloadFailed(QString reason);
signals:
void finished(FtbModpackList publicPacks, FtbModpackList thirdPartyPacks);
void failed(QString reason);
void finished(FtbModpackList publicPacks, FtbModpackList thirdPartyPacks);
void failed(QString reason);
};

View File

@ -11,188 +11,188 @@
FtbPackInstallTask::FtbPackInstallTask(FtbModpack pack, QString version)
{
m_pack = pack;
m_version = version;
m_pack = pack;
m_version = version;
}
void FtbPackInstallTask::executeTask()
{
downloadPack();
downloadPack();
}
void FtbPackInstallTask::downloadPack()
{
setStatus(tr("Downloading zip for %1").arg(m_pack.name));
setStatus(tr("Downloading zip for %1").arg(m_pack.name));
auto packoffset = QString("%1/%2/%3").arg(m_pack.dir, m_version.replace(".", "_"), m_pack.file);
auto entry = ENV.metacache()->resolveEntry("FTBPacks", packoffset);
NetJob *job = new NetJob("Download FTB Pack");
auto packoffset = QString("%1/%2/%3").arg(m_pack.dir, m_version.replace(".", "_"), m_pack.file);
auto entry = ENV.metacache()->resolveEntry("FTBPacks", packoffset);
NetJob *job = new NetJob("Download FTB Pack");
entry->setStale(true);
QString url = QString("http://ftb.cursecdn.com/FTB2/modpacks/%1").arg(packoffset);
job->addNetAction(Net::Download::makeCached(url, entry));
archivePath = entry->getFullPath();
entry->setStale(true);
QString url = QString("http://ftb.cursecdn.com/FTB2/modpacks/%1").arg(packoffset);
job->addNetAction(Net::Download::makeCached(url, entry));
archivePath = entry->getFullPath();
netJobContainer.reset(job);
connect(job, &NetJob::succeeded, this, &FtbPackInstallTask::onDownloadSucceeded);
connect(job, &NetJob::failed, this, &FtbPackInstallTask::onDownloadFailed);
connect(job, &NetJob::progress, this, &FtbPackInstallTask::onDownloadProgress);
job->start();
netJobContainer.reset(job);
connect(job, &NetJob::succeeded, this, &FtbPackInstallTask::onDownloadSucceeded);
connect(job, &NetJob::failed, this, &FtbPackInstallTask::onDownloadFailed);
connect(job, &NetJob::progress, this, &FtbPackInstallTask::onDownloadProgress);
job->start();
progress(1, 4);
progress(1, 4);
}
void FtbPackInstallTask::onDownloadSucceeded()
{
abortable = false;
unzip();
abortable = false;
unzip();
}
void FtbPackInstallTask::onDownloadFailed(QString reason)
{
emitFailed(reason);
emitFailed(reason);
}
void FtbPackInstallTask::onDownloadProgress(qint64 current, qint64 total)
{
abortable = true;
progress(current, total * 4);
setStatus(tr("Downloading zip for %1 (%2%)").arg(m_pack.name).arg(current / 10));
abortable = true;
progress(current, total * 4);
setStatus(tr("Downloading zip for %1 (%2%)").arg(m_pack.name).arg(current / 10));
}
void FtbPackInstallTask::unzip()
{
progress(2, 4);
setStatus(tr("Extracting modpack"));
QDir extractDir(m_stagingPath);
progress(2, 4);
setStatus(tr("Extracting modpack"));
QDir extractDir(m_stagingPath);
m_packZip.reset(new QuaZip(archivePath));
if(!m_packZip->open(QuaZip::mdUnzip))
{
emitFailed(tr("Failed to open modpack file %1!").arg(archivePath));
return;
}
m_packZip.reset(new QuaZip(archivePath));
if(!m_packZip->open(QuaZip::mdUnzip))
{
emitFailed(tr("Failed to open modpack file %1!").arg(archivePath));
return;
}
m_extractFuture = QtConcurrent::run(QThreadPool::globalInstance(), MMCZip::extractDir, archivePath, extractDir.absolutePath() + "/unzip");
connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::finished, this, &FtbPackInstallTask::onUnzipFinished);
connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::canceled, this, &FtbPackInstallTask::onUnzipCanceled);
m_extractFutureWatcher.setFuture(m_extractFuture);
m_extractFuture = QtConcurrent::run(QThreadPool::globalInstance(), MMCZip::extractDir, archivePath, extractDir.absolutePath() + "/unzip");
connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::finished, this, &FtbPackInstallTask::onUnzipFinished);
connect(&m_extractFutureWatcher, &QFutureWatcher<QStringList>::canceled, this, &FtbPackInstallTask::onUnzipCanceled);
m_extractFutureWatcher.setFuture(m_extractFuture);
}
void FtbPackInstallTask::onUnzipFinished()
{
install();
install();
}
void FtbPackInstallTask::onUnzipCanceled()
{
emitAborted();
emitAborted();
}
void FtbPackInstallTask::install()
{
progress(3, 4);
setStatus(tr("Installing modpack"));
QDir unzipMcDir(m_stagingPath + "/unzip/minecraft");
if(unzipMcDir.exists())
{
//ok, found minecraft dir, move contents to instance dir
if(!QDir().rename(m_stagingPath + "/unzip/minecraft", m_stagingPath + "/.minecraft"))
{
emitFailed(tr("Failed to move unzipped minecraft!"));
return;
}
}
progress(3, 4);
setStatus(tr("Installing modpack"));
QDir unzipMcDir(m_stagingPath + "/unzip/minecraft");
if(unzipMcDir.exists())
{
//ok, found minecraft dir, move contents to instance dir
if(!QDir().rename(m_stagingPath + "/unzip/minecraft", m_stagingPath + "/.minecraft"))
{
emitFailed(tr("Failed to move unzipped minecraft!"));
return;
}
}
QString instanceConfigPath = FS::PathCombine(m_stagingPath, "instance.cfg");
auto instanceSettings = std::make_shared<INISettingsObject>(instanceConfigPath);
instanceSettings->registerSetting("InstanceType", "Legacy");
instanceSettings->set("InstanceType", "OneSix");
QString instanceConfigPath = FS::PathCombine(m_stagingPath, "instance.cfg");
auto instanceSettings = std::make_shared<INISettingsObject>(instanceConfigPath);
instanceSettings->registerSetting("InstanceType", "Legacy");
instanceSettings->set("InstanceType", "OneSix");
MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath);
auto components = instance.getComponentList();
components->buildingFromScratch();
components->setComponentVersion("net.minecraft", m_pack.mcVersion, true);
MinecraftInstance instance(m_globalSettings, instanceSettings, m_stagingPath);
auto components = instance.getComponentList();
components->buildingFromScratch();
components->setComponentVersion("net.minecraft", m_pack.mcVersion, true);
bool fallback = true;
bool fallback = true;
//handle different versions
QFile packJson(m_stagingPath + "/.minecraft/pack.json");
QDir jarmodDir = QDir(m_stagingPath + "/unzip/instMods");
if(packJson.exists())
{
packJson.open(QIODevice::ReadOnly | QIODevice::Text);
QJsonDocument doc = QJsonDocument::fromJson(packJson.readAll());
packJson.close();
//handle different versions
QFile packJson(m_stagingPath + "/.minecraft/pack.json");
QDir jarmodDir = QDir(m_stagingPath + "/unzip/instMods");
if(packJson.exists())
{
packJson.open(QIODevice::ReadOnly | QIODevice::Text);
QJsonDocument doc = QJsonDocument::fromJson(packJson.readAll());
packJson.close();
//we only care about the libs
QJsonArray libs = doc.object().value("libraries").toArray();
//we only care about the libs
QJsonArray libs = doc.object().value("libraries").toArray();
foreach (const QJsonValue &value, libs)
{
QString nameValue = value.toObject().value("name").toString();
if(!nameValue.startsWith("net.minecraftforge"))
{
continue;
}
foreach (const QJsonValue &value, libs)
{
QString nameValue = value.toObject().value("name").toString();
if(!nameValue.startsWith("net.minecraftforge"))
{
continue;
}
GradleSpecifier forgeVersion(nameValue);
GradleSpecifier forgeVersion(nameValue);
components->setComponentVersion("net.minecraftforge", forgeVersion.version().replace(m_pack.mcVersion, "").replace("-", ""));
packJson.remove();
fallback = false;
break;
}
components->setComponentVersion("net.minecraftforge", forgeVersion.version().replace(m_pack.mcVersion, "").replace("-", ""));
packJson.remove();
fallback = false;
break;
}
}
}
if(jarmodDir.exists())
{
qDebug() << "Found jarmods, installing...";
if(jarmodDir.exists())
{
qDebug() << "Found jarmods, installing...";
QStringList jarmods;
for (auto info: jarmodDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files))
{
qDebug() << "Jarmod:" << info.fileName();
jarmods.push_back(info.absoluteFilePath());
}
QStringList jarmods;
for (auto info: jarmodDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Files))
{
qDebug() << "Jarmod:" << info.fileName();
jarmods.push_back(info.absoluteFilePath());
}
components->installJarMods(jarmods);
fallback = false;
}
components->installJarMods(jarmods);
fallback = false;
}
//just nuke unzip directory, it s not needed anymore
FS::deletePath(m_stagingPath + "/unzip");
//just nuke unzip directory, it s not needed anymore
FS::deletePath(m_stagingPath + "/unzip");
if(fallback)
{
//TODO: Some fallback mechanism... or just keep failing!
emitFailed(tr("No installation method found!"));
return;
}
if(fallback)
{
//TODO: Some fallback mechanism... or just keep failing!
emitFailed(tr("No installation method found!"));
return;
}
components->saveNow();
components->saveNow();
progress(4, 4);
progress(4, 4);
instance.init();
instance.setName(m_instName);
if(m_instIcon == "default")
{
m_instIcon = "ftb_logo";
}
instance.setIconKey(m_instIcon);
instance.setGroupInitial(m_instGroup);
instanceSettings->resumeSave();
instance.init();
instance.setName(m_instName);
if(m_instIcon == "default")
{
m_instIcon = "ftb_logo";
}
instance.setIconKey(m_instIcon);
instance.setGroupInitial(m_instGroup);
instanceSettings->resumeSave();
emitSucceeded();
emitSucceeded();
}
bool FtbPackInstallTask::abort()
{
if(abortable)
{
return netJobContainer->abort();
}
return false;
if(abortable)
{
return netJobContainer->abort();
}
return false;
}

View File

@ -11,39 +11,39 @@
class MULTIMC_LOGIC_EXPORT FtbPackInstallTask : public InstanceTask {
Q_OBJECT
Q_OBJECT
public:
explicit FtbPackInstallTask(FtbModpack pack, QString version);
virtual ~FtbPackInstallTask(){}
explicit FtbPackInstallTask(FtbModpack pack, QString version);
virtual ~FtbPackInstallTask(){}
bool abort() override;
bool abort() override;
protected:
//! Entry point for tasks.
virtual void executeTask() override;
//! Entry point for tasks.
virtual void executeTask() override;
private:
void downloadPack();
void unzip();
void install();
void downloadPack();
void unzip();
void install();
private slots:
void onDownloadSucceeded();
void onDownloadFailed(QString reason);
void onDownloadProgress(qint64 current, qint64 total);
void onDownloadSucceeded();
void onDownloadFailed(QString reason);
void onDownloadProgress(qint64 current, qint64 total);
void onUnzipFinished();
void onUnzipCanceled();
void onUnzipFinished();
void onUnzipCanceled();
private: /* data */
bool abortable = false;
std::unique_ptr<QuaZip> m_packZip;
QFuture<QStringList> m_extractFuture;
QFutureWatcher<QStringList> m_extractFutureWatcher;
NetJobPtr netJobContainer;
QString archivePath;
bool abortable = false;
std::unique_ptr<QuaZip> m_packZip;
QFuture<QStringList> m_extractFuture;
QFutureWatcher<QStringList> m_extractFutureWatcher;
NetJobPtr netJobContainer;
QString archivePath;
FtbModpack m_pack;
QString m_version;
FtbModpack m_pack;
QString m_version;
};

View File

@ -7,29 +7,29 @@
//Header for structs etc...
enum FtbPackType {
Public,
ThirdParty,
Private
Public,
ThirdParty,
Private
};
struct FtbModpack {
QString name;
QString description;
QString author;
QStringList oldVersions;
QString currentVersion;
QString mcVersion;
QString mods;
QString logo;
QString name;
QString description;
QString author;
QStringList oldVersions;
QString currentVersion;
QString mcVersion;
QString mods;
QString logo;
//Technical data
QString dir;
QString file; //<- Url in the xml, but doesn't make much sense
//Technical data
QString dir;
QString file; //<- Url in the xml, but doesn't make much sense
bool bugged = false;
bool broken = false;
bool bugged = false;
bool broken = false;
FtbPackType type;
FtbPackType type;
};
//We need it for the proxy model