初步实现版本号切割

This commit is contained in:
2024-05-18 15:36:03 +08:00
parent ee34925def
commit ebe3473d15
5 changed files with 112 additions and 2 deletions

View File

@@ -11,6 +11,63 @@ AptPkgInfo::AptPkgInfo(QString pkgName, PkgSearchOption option)
ReadAptData();
}
QStringList AptPkgInfo::SplitVersion(QString version) const
{
SplitVersionStatus status = SplitVersionStatus::Checking;
QStringList versionList;
QString versionNumberTemp = "";
QString versionLetterTemp = "";
for(QString i: version) {
if(symbolList.contains(i)) {
// 如果是特殊字符
switch(status) {
case SplitVersionStatus::Checking:
versionList.append(versionNumberTemp);
break;
case SplitVersionStatus::MeetedEnglishLetter:
versionList.append(versionLetterTemp);
break;
}
versionList.append(i);
versionNumberTemp = "";
versionLetterTemp = "";
status = SplitVersionStatus::MeetSymbol;
continue;
}
if(i[0].isLetter()) {
switch(status) {
case SplitVersionStatus::Checking:
versionList.append(versionNumberTemp);
break;
}
versionLetterTemp += i;
versionNumberTemp = "";
status = SplitVersionStatus::MeetedEnglishLetter;
continue;
}
switch(status) {
case SplitVersionStatus::MeetedEnglishLetter:
versionList.append(versionLetterTemp);
break;
}
versionNumberTemp += i;
status = SplitVersionStatus::Checking;
versionLetterTemp = "";
}
if(status == SplitVersionStatus::Checking) {
versionList.append(versionNumberTemp);
}
return versionList;
}
bool AptPkgInfo::CompareVersion(QString version1, QString version2) const
{
return true;
}
void AptPkgInfo::ReadAptData()
{
this->aptData = QJsonObject();
@@ -36,7 +93,19 @@ void AptPkgInfo::ReadAptData()
if(strTemp.replace(" ", "").replace("\n", "") == "") {
// 空行
if(status == pkgDataStatus::IsContain) {
aptData.insert(pkgData.value("Package").toString(), pkgData);
QString addPkgName = pkgData.value("Package").toString();
// 如果已经存在表中
if(pkgData.contains(addPkgName)) {
// 新增数据
QJsonObject allDataObject = aptData.value(addPkgName).toObject();
// 判断版本大小,如果新于表内版本则更新
QString dataVersion = allDataObject.value("Version").toString();
}
else {
aptData.insert(addPkgName, pkgData);
}
}
status = pkgDataStatus::EmptyLine;
pkgData = QJsonObject(); // 清空
@@ -149,3 +218,8 @@ QByteArray AptPkgInfo::GetCommandResult(QString command, QStringList argv, QProc
process.close();
return result;
}
QJsonObject AptPkgInfo::get_data() const
{
return aptData;
}