Krita Source Code Documentation
Loading...
Searching...
No Matches
KisManualUpdater Class Reference

#include <KisManualUpdater.h>

+ Inheritance diagram for KisManualUpdater:

Public Slots

void rssDataChanged ()
 

Public Member Functions

void checkForUpdate () override
 start the process checking whether there is an update available or not When the check is done, the updater emits sigUpdateCheckStateChange with the check result
 
void doUpdate () override
 if the updater has update capability, start the update process When the update is done, the updater emits sigUpdateCheckStateChange with the check result
 
bool hasUpdateCapability () override
 the manual updater can only check for available versions
 
 KisManualUpdater ()
 
 KisManualUpdater (MultiFeedRssModel *rssModel, QString &currentVersion)
 KisManualUpdater - constructor for testing.
 
- Public Member Functions inherited from KisUpdaterBase
 KisUpdaterBase ()
 

Private Member Functions

bool availableVersionIsHigher (QString currentVersion, QString availableVersion)
 

Private Attributes

QString m_currentVersion
 
QScopedPointer< MultiFeedRssModelm_rssModel
 

Friends

class KisManualUpdaterTest
 

Additional Inherited Members

- Signals inherited from KisUpdaterBase
void sigUpdateCheckStateChange (KisUpdaterStatus)
 
- Protected Attributes inherited from KisUpdaterBase
KisUpdaterStatus m_updaterStatus
 

Detailed Description

Definition at line 18 of file KisManualUpdater.h.

Constructor & Destructor Documentation

◆ KisManualUpdater() [1/2]

KisManualUpdater::KisManualUpdater ( )

Definition at line 20 of file KisManualUpdater.cpp.

22{
23 m_rssModel.reset(new MultiFeedRssModel());
24}
QScopedPointer< MultiFeedRssModel > m_rssModel
KRITAVERSION_EXPORT QString versionString(bool checkGit=false)

References m_rssModel.

◆ KisManualUpdater() [2/2]

KisManualUpdater::KisManualUpdater ( MultiFeedRssModel * rssModel,
QString & currentVersion )
explicit

KisManualUpdater - constructor for testing.

Parameters
rssModel
currentVersion

Definition at line 26 of file KisManualUpdater.cpp.

27 : m_currentVersion(currentVersion)
28{
29 m_rssModel.reset(rssModel);
30}

References m_rssModel.

Member Function Documentation

◆ availableVersionIsHigher()

bool KisManualUpdater::availableVersionIsHigher ( QString currentVersion,
QString availableVersion )
private

Definition at line 84 of file KisManualUpdater.cpp.

85{
86 if (currentVersion.isEmpty() || availableVersion.isEmpty()) {
87 return false;
88 }
89
90 int currentSuffixIndex {5};
91 int availableSuffixIndex {5};
92
93 QVersionNumber currentVersionNumber = QVersionNumber::fromString(currentVersion, &currentSuffixIndex);
94 QVersionNumber availableVersionNumber = QVersionNumber::fromString(availableVersion, &availableSuffixIndex);
95
96 QString currentSuffix = currentVersion.mid(currentSuffixIndex);
97 QString availableSuffix = availableVersion.mid(availableSuffixIndex);
98
99 if (currentVersionNumber.normalized() == availableVersionNumber.normalized()) {
100 if (!currentSuffix.isEmpty() && availableSuffix.isEmpty()) {
101 return true;
102 } else {
103 return false;
104 }
105 } else {
106 return (currentVersionNumber.normalized() < availableVersionNumber.normalized());
107 }
108}

◆ checkForUpdate()

void KisManualUpdater::checkForUpdate ( )
overridevirtual

start the process checking whether there is an update available or not When the check is done, the updater emits sigUpdateCheckStateChange with the check result

Implements KisUpdaterBase.

Definition at line 32 of file KisManualUpdater.cpp.

33{
34 connect(m_rssModel.data(), SIGNAL(feedDataChanged()), this, SLOT(rssDataChanged()));
35 m_rssModel->addFeed(QLatin1String("https://krita.org/en/feed/"));
36}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))

References connect(), m_rssModel, and rssDataChanged().

◆ doUpdate()

void KisManualUpdater::doUpdate ( )
inlineoverridevirtual

if the updater has update capability, start the update process When the update is done, the updater emits sigUpdateCheckStateChange with the check result

Implements KisUpdaterBase.

Definition at line 39 of file KisManualUpdater.h.

39{ return; }

◆ hasUpdateCapability()

bool KisManualUpdater::hasUpdateCapability ( )
inlineoverridevirtual

the manual updater can only check for available versions

Returns
false

Implements KisUpdaterBase.

Definition at line 38 of file KisManualUpdater.h.

38{ return false; }

◆ rssDataChanged

void KisManualUpdater::rssDataChanged ( )
slot

Definition at line 38 of file KisManualUpdater.cpp.

39{
40 // grab the latest release post and URL for reference later
41 // if we need to update
42 QString availableVersion;
43 QString downloadLink;
44
45 for (int i = 0; i < m_rssModel->rowCount(); i++) {
46 const QModelIndex &idx = m_rssModel->index(i);
47
48 if (idx.isValid()) {
49 // only use official release announcements to get version number
50 if ( idx.data(KisRssReader::RssRoles::CategoryRole).toString() != "Official Release") {
51 continue;
52 }
53
54 QString linkTitle = idx.data(KisRssReader::RssRoles::TitleRole).toString();
55
56 // regex to capture version number
57 QRegularExpression versionRegex("\\d\\.\\d\\.?\\d?\\.?\\d");
58 QRegularExpressionMatch matched = versionRegex.match(linkTitle);
59
60 // only take the top match for release version since that is the newest
61 if (matched.hasMatch()) {
62 availableVersion = matched.captured(0);
63 downloadLink = idx.data(KisRssReader::RssRoles::LinkRole).toString();
64 break;
65 }
66 }
67 }
68
70
71 if (availableVersionIsHigher(m_currentVersion, availableVersion)) {
73 } else {
75 }
76
78 m_updaterStatus.setAvailableVersion(availableVersion);
79 m_updaterStatus.setDownloadLink(downloadLink);
80
82}
bool availableVersionIsHigher(QString currentVersion, QString availableVersion)
KisUpdaterStatus m_updaterStatus
void sigUpdateCheckStateChange(KisUpdaterStatus)
void setStatus(const UpdaterStatus::StatusID &status)
void setDownloadLink(const QString &downloadLink)
void setAvailableVersion(const QString &availableVersion)

References availableVersionIsHigher(), KisRssReader::CategoryRole, KisRssReader::LinkRole, m_currentVersion, m_rssModel, KisUpdaterBase::m_updaterStatus, KisUpdaterStatus::setAvailableVersion(), KisUpdaterStatus::setDownloadLink(), KisUpdaterStatus::setStatus(), KisUpdaterBase::sigUpdateCheckStateChange(), KisRssReader::TitleRole, UpdaterStatus::UPDATE_AVAILABLE, and UpdaterStatus::UPTODATE.

Friends And Related Symbol Documentation

◆ KisManualUpdaterTest

friend class KisManualUpdaterTest
friend

Definition at line 50 of file KisManualUpdater.h.

Member Data Documentation

◆ m_currentVersion

QString KisManualUpdater::m_currentVersion
private

Definition at line 48 of file KisManualUpdater.h.

◆ m_rssModel

QScopedPointer<MultiFeedRssModel> KisManualUpdater::m_rssModel
private

Definition at line 47 of file KisManualUpdater.h.


The documentation for this class was generated from the following files: