-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpackadge.cpp
More file actions
69 lines (53 loc) · 2.09 KB
/
packadge.cpp
File metadata and controls
69 lines (53 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "packadge.h"
#include <QDebug>
Packadge::Packadge(QString name, QString version, QSettings &cnf):
PackadgeCandidate(name, version, cnf, nullptr)
{
}
Packadge::~Packadge()
{
qDeleteAll(_candidates);
}
void Packadge::addCandidate(PackadgeCandidate *candidate)
{
qInfo()<<"Add candidate to"<<fullName()<<" avaliable version"<<candidate->version();
_candidates.insert(candidate->version(), candidate);
}
Packadge::TCandidates Packadge::candidates() const
{
return _candidates;
}
/**
* @brief Находим для себя обновления
* @param updateCnf
* @return
*/
int Packadge::parseUpdates(QSettings &updateCnf, QHash<QString, PackadgeCandidate *> *instCandidates)
{
qInfo()<<"Parse updates for packet"<<fullName();
QString avVersionsStr = updateCnf.value(QString("updates/%1").arg(name())).toString();
if ( !avVersionsStr.isEmpty() ) {
QStringList avVersions = avVersionsStr.split(";");
if ( avVersions.count()==0 ) {
qWarning()<<"Wrong avaliable versions format"<<avVersionsStr;
return -1;
}
foreach(QString avVersion, avVersions) {
if ( PackadgeInfo::versionStr2Int(avVersion) <= versionInt() ) continue; //-- Учитываем только более новые версии
qInfo()<<"--new version avaliable"<<avVersion;
QString cndFullName = PackadgeCandidate::makeFullName(name(), avVersion);
PackadgeCandidate * candidate = nullptr;
if ( !instCandidates->contains(cndFullName) ) {
candidate = new PackadgeCandidate(name(), avVersion, updateCnf, this);
instCandidates->insert(cndFullName, candidate);
candidate->parseRels(updateCnf, instCandidates);
} else {
candidate = instCandidates->value(cndFullName);
candidate->setOriginalPackage(this); //-- На случай, если уже был распаршен зависимостями
}
addCandidate(candidate);
}
}
parseRels(updateCnf, instCandidates);
return 1;
}