NOISSUE Flatten gui and logic libraries into MultiMC

This commit is contained in:
Petr Mrázek
2021-07-25 19:11:59 +02:00
parent dd13368085
commit 20b9f2b42a
1113 changed files with 1228 additions and 1401 deletions
CMakeLists.txt
api
application
launcher
BaseInstaller.cppBaseInstaller.hBaseInstance.cppBaseInstance.hBaseVersion.hBaseVersionList.cppBaseVersionList.hCMakeLists.txtColorCache.cppColorCache.hColumnResizer.cppColumnResizer.hCommandline.cppCommandline.hDefaultVariable.hDesktopServices.cppDesktopServices.hEnv.cppEnv.hException.hExponentialSeries.hFileSystem.cppFileSystem.hFileSystem_test.cppFilter.cppFilter.hGZip.cppGZip.hGZip_test.cppGuiUtil.cppGuiUtil.hHoeDown.hInstanceCopyTask.cppInstanceCopyTask.hInstanceCreationTask.cppInstanceCreationTask.hInstanceImportTask.cppInstanceImportTask.hInstanceList.cppInstanceList.hInstancePageProvider.hInstanceProxyModel.cppInstanceProxyModel.hInstanceTask.cppInstanceTask.hInstanceWindow.cppInstanceWindow.hJavaCommon.cppJavaCommon.hJson.cppJson.hKonamiCode.cppKonamiCode.hLaunchController.cppLaunchController.hLoggedProcess.cppLoggedProcess.hMMCStrings.cppMMCStrings.hMMCZip.cppMMCZip.hMainWindow.cppMainWindow.hMessageLevel.cppMessageLevel.hMultiMC.cppMultiMC.hNullInstance.hProblemProvider.hQObjectPtr.hRWStorage.hRecursiveFileSystemWatcher.cppRecursiveFileSystemWatcher.hSeparatorPrefixTree.hSkinUtils.cppSkinUtils.hUpdateController.cppUpdateController.hUsable.hVersion.cppVersion.hVersionProxyModel.cppVersionProxyModel.hVersion_test.cppWatchLock.h
dialogs
groupview
icons
install_prereqs.cmake.in
java
launch
main.cpp
meta
minecraft
AssetsUtils.cppAssetsUtils.hComponent.cppComponent.hComponentUpdateTask.cppComponentUpdateTask.hComponentUpdateTask_p.hGradleSpecifier.hGradleSpecifier_test.cppLaunchProfile.cppLaunchProfile.hLibrary.cppLibrary.hLibrary_test.cppMinecraftInstance.cppMinecraftInstance.hMinecraftLoadAndCheck.cppMinecraftLoadAndCheck.hMinecraftUpdate.cppMinecraftUpdate.hMojangDownloadInfo.hMojangVersionFormat.cppMojangVersionFormat.hMojangVersionFormat_test.cppOneSixVersionFormat.cppOneSixVersionFormat.hOpSys.cppOpSys.hPackProfile.cppPackProfile.hPackProfile_p.hParseUtils.cppParseUtils.hParseUtils_test.cppProfileUtils.cppProfileUtils.hRule.cppRule.hVersionFile.cppVersionFile.hVersionFilterData.cppVersionFilterData.hWorld.cppWorld.hWorldList.cppWorldList.h
auth-msa
auth
gameoptions
launch
legacy
mod
services
testdata
update
modplatform
mojang
net
news
notifications
package
pagedialog
pages
BasePage.hBasePageContainer.hBasePageProvider.h
global
instance
modplatform
pathmatcher
resources
MultiMC.icnsMultiMC.icoMultiMC.manifest
OSX
assets
backgrounds
documents
flat
iOS
multimc.rc
multimc
128x128
16x16
22x22
24x24
256x256
32x32
48x48
50x50
instances
64x64
8x8
index.thememultimc.qrc
scalable
pe_blue
pe_colored
pe_dark
pe_light
sources
screenshots
settings
setupwizard
status
tasks
testdata
themes
tools
translations
updater
widgets

@@ -0,0 +1,121 @@
#include "JavaVersion.h"
#include <MMCStrings.h>
#include <QRegularExpression>
#include <QString>
JavaVersion & JavaVersion::operator=(const QString & javaVersionString)
{
m_string = javaVersionString;
auto getCapturedInteger = [](const QRegularExpressionMatch & match, const QString &what) -> int
{
auto str = match.captured(what);
if(str.isEmpty())
{
return 0;
}
return str.toInt();
};
QRegularExpression pattern;
if(javaVersionString.startsWith("1."))
{
pattern = QRegularExpression ("1[.](?<major>[0-9]+)([.](?<minor>[0-9]+))?(_(?<security>[0-9]+)?)?(-(?<prerelease>[a-zA-Z0-9]+))?");
}
else
{
pattern = QRegularExpression("(?<major>[0-9]+)([.](?<minor>[0-9]+))?([.](?<security>[0-9]+))?(-(?<prerelease>[a-zA-Z0-9]+))?");
}
auto match = pattern.match(m_string);
m_parseable = match.hasMatch();
m_major = getCapturedInteger(match, "major");
m_minor = getCapturedInteger(match, "minor");
m_security = getCapturedInteger(match, "security");
m_prerelease = match.captured("prerelease");
return *this;
}
JavaVersion::JavaVersion(const QString &rhs)
{
operator=(rhs);
}
QString JavaVersion::toString()
{
return m_string;
}
bool JavaVersion::requiresPermGen()
{
if(m_parseable)
{
return m_major < 8;
}
return true;
}
bool JavaVersion::operator<(const JavaVersion &rhs)
{
if(m_parseable && rhs.m_parseable)
{
auto major = m_major;
auto rmajor = rhs.m_major;
// HACK: discourage using java 9
if(major > 8)
major = -major;
if(rmajor > 8)
rmajor = -rmajor;
if(major < rmajor)
return true;
if(major > rmajor)
return false;
if(m_minor < rhs.m_minor)
return true;
if(m_minor > rhs.m_minor)
return false;
if(m_security < rhs.m_security)
return true;
if(m_security > rhs.m_security)
return false;
// everything else being equal, consider prerelease status
bool thisPre = !m_prerelease.isEmpty();
bool rhsPre = !rhs.m_prerelease.isEmpty();
if(thisPre && !rhsPre)
{
// this is a prerelease and the other one isn't -> lesser
return true;
}
else if(!thisPre && rhsPre)
{
// this isn't a prerelease and the other one is -> greater
return false;
}
else if(thisPre && rhsPre)
{
// both are prereleases - use natural compare...
return Strings::naturalCompare(m_prerelease, rhs.m_prerelease, Qt::CaseSensitive) < 0;
}
// neither is prerelease, so they are the same -> this cannot be less than rhs
return false;
}
else return Strings::naturalCompare(m_string, rhs.m_string, Qt::CaseSensitive) < 0;
}
bool JavaVersion::operator==(const JavaVersion &rhs)
{
if(m_parseable && rhs.m_parseable)
{
return m_major == rhs.m_major && m_minor == rhs.m_minor && m_security == rhs.m_security && m_prerelease == rhs.m_prerelease;
}
return m_string == rhs.m_string;
}
bool JavaVersion::operator>(const JavaVersion &rhs)
{
return (!operator<(rhs)) && (!operator==(rhs));
}