Litemod version info.
This commit is contained in:
		@@ -47,7 +47,7 @@ void Mod::repath(const QFileInfo &file)
 | 
			
		||||
	}
 | 
			
		||||
	else if (m_file.isFile())
 | 
			
		||||
	{
 | 
			
		||||
		if(name_base.endsWith(".disabled"))
 | 
			
		||||
		if (name_base.endsWith(".disabled"))
 | 
			
		||||
		{
 | 
			
		||||
			m_enabled = false;
 | 
			
		||||
			name_base.chop(9);
 | 
			
		||||
@@ -62,6 +62,11 @@ void Mod::repath(const QFileInfo &file)
 | 
			
		||||
			m_type = MOD_ZIPFILE;
 | 
			
		||||
			name_base.chop(4);
 | 
			
		||||
		}
 | 
			
		||||
		else if (name_base.endsWith(".litemod"))
 | 
			
		||||
		{
 | 
			
		||||
			m_type = MOD_LITEMOD;
 | 
			
		||||
			name_base.chop(8);
 | 
			
		||||
		}
 | 
			
		||||
		else
 | 
			
		||||
		{
 | 
			
		||||
			m_type = MOD_SINGLEFILE;
 | 
			
		||||
@@ -79,7 +84,7 @@ void Mod::repath(const QFileInfo &file)
 | 
			
		||||
 | 
			
		||||
		if (zip.setCurrentFile("mcmod.info"))
 | 
			
		||||
		{
 | 
			
		||||
			if(!file.open(QIODevice::ReadOnly))
 | 
			
		||||
			if (!file.open(QIODevice::ReadOnly))
 | 
			
		||||
			{
 | 
			
		||||
				zip.close();
 | 
			
		||||
				return;
 | 
			
		||||
@@ -120,6 +125,27 @@ void Mod::repath(const QFileInfo &file)
 | 
			
		||||
			ReadMCModInfo(data);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else if (m_type == MOD_LITEMOD)
 | 
			
		||||
	{
 | 
			
		||||
		QuaZip zip(m_file.filePath());
 | 
			
		||||
		if (!zip.open(QuaZip::mdUnzip))
 | 
			
		||||
			return;
 | 
			
		||||
 | 
			
		||||
		QuaZipFile file(&zip);
 | 
			
		||||
 | 
			
		||||
		if (zip.setCurrentFile("litemod.json"))
 | 
			
		||||
		{
 | 
			
		||||
			if (!file.open(QIODevice::ReadOnly))
 | 
			
		||||
			{
 | 
			
		||||
				zip.close();
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			ReadLiteModInfo(file.readAll());
 | 
			
		||||
			file.close();
 | 
			
		||||
		}
 | 
			
		||||
		zip.close();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NEW format
 | 
			
		||||
@@ -152,8 +178,7 @@ void Mod::ReadMCModInfo(QByteArray contents)
 | 
			
		||||
		}
 | 
			
		||||
		m_credits = firstObj.value("credits").toString();
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	;
 | 
			
		||||
	};
 | 
			
		||||
	QJsonParseError jsonError;
 | 
			
		||||
	QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError);
 | 
			
		||||
	// this is the very old format that had just the array
 | 
			
		||||
@@ -197,13 +222,29 @@ void Mod::ReadForgeInfo(QByteArray contents)
 | 
			
		||||
	m_version = major + "." + minor + "." + revision + "." + build;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Mod::ReadLiteModInfo(QByteArray contents)
 | 
			
		||||
{
 | 
			
		||||
	QJsonParseError jsonError;
 | 
			
		||||
	QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError);
 | 
			
		||||
	auto object = jsonDoc.object();
 | 
			
		||||
	m_mod_id = object.value("name").toString();
 | 
			
		||||
	if(object.contains("version"))
 | 
			
		||||
		m_version=object.value("version").toString("");
 | 
			
		||||
	else
 | 
			
		||||
		m_version=object.value("revision").toString("");
 | 
			
		||||
	m_mcversion = object.value("mcversion").toString();
 | 
			
		||||
	m_authors = object.value("author").toString();
 | 
			
		||||
	m_description = object.value("description").toString();
 | 
			
		||||
	m_homeurl = object.value("url").toString();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool Mod::replace(Mod &with)
 | 
			
		||||
{
 | 
			
		||||
	if (!destroy())
 | 
			
		||||
		return false;
 | 
			
		||||
	bool success = false;
 | 
			
		||||
	auto t = with.type();
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	if (t == MOD_ZIPFILE || t == MOD_SINGLEFILE)
 | 
			
		||||
	{
 | 
			
		||||
		QLOG_DEBUG() << "Copy: " << with.m_file.filePath() << " to " << m_file.filePath();
 | 
			
		||||
@@ -260,6 +301,7 @@ QString Mod::version() const
 | 
			
		||||
	switch (type())
 | 
			
		||||
	{
 | 
			
		||||
	case MOD_ZIPFILE:
 | 
			
		||||
	case MOD_LITEMOD:
 | 
			
		||||
		return m_version;
 | 
			
		||||
	case MOD_FOLDER:
 | 
			
		||||
		return "Folder";
 | 
			
		||||
@@ -272,27 +314,27 @@ QString Mod::version() const
 | 
			
		||||
 | 
			
		||||
bool Mod::enable(bool value)
 | 
			
		||||
{
 | 
			
		||||
	if(m_type == Mod::MOD_UNKNOWN || m_type == Mod::MOD_FOLDER)
 | 
			
		||||
	if (m_type == Mod::MOD_UNKNOWN || m_type == Mod::MOD_FOLDER)
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	if(m_enabled == value)
 | 
			
		||||
	if (m_enabled == value)
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	QString path = m_file.absoluteFilePath();
 | 
			
		||||
	if(value)
 | 
			
		||||
	if (value)
 | 
			
		||||
	{
 | 
			
		||||
		QFile foo(path);
 | 
			
		||||
		if(!path.endsWith(".disabled"))
 | 
			
		||||
		if (!path.endsWith(".disabled"))
 | 
			
		||||
			return false;
 | 
			
		||||
		path.chop(9);
 | 
			
		||||
		if(!foo.rename(path))
 | 
			
		||||
		if (!foo.rename(path))
 | 
			
		||||
			return false;
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
		QFile foo(path);
 | 
			
		||||
		path += ".disabled";
 | 
			
		||||
		if(!foo.rename(path))
 | 
			
		||||
		if (!foo.rename(path))
 | 
			
		||||
			return false;
 | 
			
		||||
	}
 | 
			
		||||
	m_file = QFileInfo(path);
 | 
			
		||||
@@ -305,6 +347,5 @@ bool Mod::operator==(const Mod &other) const
 | 
			
		||||
}
 | 
			
		||||
bool Mod::strongCompare(const Mod &other) const
 | 
			
		||||
{
 | 
			
		||||
	return mmc_id() == other.mmc_id() &&
 | 
			
		||||
		   version() == other.version() && type() == other.type();
 | 
			
		||||
	return mmc_id() == other.mmc_id() && version() == other.version() && type() == other.type();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -25,6 +25,7 @@ public:
 | 
			
		||||
		MOD_ZIPFILE,	//!< The mod is a zip file containing the mod's class files.
 | 
			
		||||
		MOD_SINGLEFILE, //!< The mod is a single file (not a zip file).
 | 
			
		||||
		MOD_FOLDER,	 //!< The mod is in a folder on the filesystem.
 | 
			
		||||
		MOD_LITEMOD, //!< The mod is a litemod
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	Mod(const QFileInfo &file);
 | 
			
		||||
@@ -102,6 +103,7 @@ public:
 | 
			
		||||
private:
 | 
			
		||||
	void ReadMCModInfo(QByteArray contents);
 | 
			
		||||
	void ReadForgeInfo(QByteArray contents);
 | 
			
		||||
	void ReadLiteModInfo(QByteArray contents);
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -255,7 +255,7 @@ bool ModList::installMod(const QFileInfo &filename, int index)
 | 
			
		||||
	auto type = m.type();
 | 
			
		||||
	if (type == Mod::MOD_UNKNOWN)
 | 
			
		||||
		return false;
 | 
			
		||||
	if (type == Mod::MOD_SINGLEFILE || type == Mod::MOD_ZIPFILE)
 | 
			
		||||
	if (type == Mod::MOD_SINGLEFILE || type == Mod::MOD_ZIPFILE || type == Mod::MOD_LITEMOD)
 | 
			
		||||
	{
 | 
			
		||||
		QString newpath = PathCombine(m_dir.path(), filename.fileName());
 | 
			
		||||
		if (!QFile::copy(filename.filePath(), newpath))
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user