48
38
explicit UpdateItem(const QVariantMap &staticData, QObject *parent = 0);
49
void setVisibility(bool visible);
39
Q_INVOKABLE void setVisibility(bool visible);
55
void updatesNotFound();
56
void credentialsNotFound();
57
void updateAvailableFound(bool downloading);
59
void downloadModeChanged();
60
void systemUpdateDownloaded();
61
void updateProcessFailed(QString message);
62
void systemUpdateFailed(int consecutiveFailureCount, QString lastReason);
65
void changeVisibility(const QString&, Update*);
67
void processUpdates();
68
void handleCredentialsFound(Token token);
43
void onUpdateAvailableFound(bool);
44
void onModelChanged();
71
SystemUpdate m_systemUpdate;
73
UpdatePlugin::Network m_network;
76
QHash<QString, Update*> m_apps;
48
UpdateManager *m_updateManager;
79
51
UpdateItem::UpdateItem(const QVariantMap &staticData, QObject *parent):
80
ItemBase(staticData, parent),
83
setVisibility(m_systemUpdate.checkTarget());
85
QObject::connect(&m_systemUpdate, SIGNAL(updateAvailable(const QString&, Update*)),
86
this, SLOT(changeVisibility(const QString&, Update*)));
89
QObject::connect(&m_service, SIGNAL(credentialsFound(const Token&)),
90
this, SLOT(handleCredentialsFound(Token)));
92
QObject::connect(&m_process, SIGNAL(finished(int)),
93
this, SLOT(processOutput()));
95
QObject::connect(&m_network, SIGNAL(updatesFound()),
96
this, SLOT(processUpdates()));
98
m_service.getCredentials();
101
void UpdateItem::handleCredentialsFound(Token token)
104
QStringList args("list");
105
args << "--manifest";
106
QString command("click");
107
m_process.start(command, args);
110
void UpdateItem::processOutput()
112
QString output(m_process.readAllStandardOutput());
114
QJsonDocument document = QJsonDocument::fromJson(output.toUtf8());
116
QJsonArray array = document.array();
119
for (i = 0; i < array.size(); i++) {
120
QJsonObject object = array.at(i).toObject();
121
QString name = object.value("name").toString();
122
QString title = object.value("title").toString();
123
QString version = object.value("version").toString();
124
Update *app = new Update();
125
app->initializeApplication(name, title, version);
126
m_apps[app->getPackageName()] = app;
129
m_network.checkForNewVersions(m_apps);
133
void UpdateItem::processUpdates()
135
foreach (QString id, m_apps.keys()) {
136
Update *app = m_apps.value(id);
137
if(app->updateRequired()) {
144
void UpdateItem::changeVisibility(const QString&, Update*)
52
ItemBase(staticData, parent)
55
m_updateManager = UpdateManager::instance();
56
QObject::connect(m_updateManager, SIGNAL(updateAvailableFound(bool)),
57
this, SLOT(onUpdateAvailableFound(bool)));
58
QObject::connect(m_updateManager, SIGNAL(modelChanged()),
59
this, SLOT(onModelChanged()));
60
QTimer::singleShot(100, this, SLOT(shouldShow()));
63
void UpdateItem::onUpdateAvailableFound(bool)
65
if (m_updateManager->model().count() > 0)
149
69
void UpdateItem::setVisibility(bool visible)