Inform about updates

This commit is contained in:
Gres 2020-03-16 21:44:33 +03:00
parent 493262876f
commit 3847c8d61b
3 changed files with 25 additions and 0 deletions

View File

@ -51,6 +51,10 @@ Manager::Manager()
tray_.get(), [this] { tray_.get(), [this] {
tray_->showInformation(QObject::tr("Update completed")); tray_->showInformation(QObject::tr("Update completed"));
}); });
QObject::connect(updater_.get(), &update::Loader::updatesAvailable, //
tray_.get(), [this] {
tray_->showInformation(QObject::tr("Updates available"));
});
#ifdef DEVELOP #ifdef DEVELOP
updater_->checkForUpdates(); updater_->checkForUpdates();
#endif #endif

View File

@ -133,6 +133,8 @@ void Loader::handleReply(QNetworkReply *reply)
if (isUpdatesReply) { if (isUpdatesReply) {
SOFT_ASSERT(model_, return ); SOFT_ASSERT(model_, return );
model_->parse(replyData); model_->parse(replyData);
if (model_->hasUpdates())
emit updatesAvailable();
return; return;
} }
@ -309,6 +311,22 @@ void Model::updateStates()
emitColumnsChanged(QModelIndex()); emitColumnsChanged(QModelIndex());
} }
bool Model::hasUpdates() const
{
if (!root_)
return false;
return hasUpdates(*root_);
}
bool Model::hasUpdates(const Model::Component &component) const
{
for (const auto &i : component.children) {
if (i->state == State::UpdateAvailable || hasUpdates(*i))
return true;
}
return false;
}
void Model::updateState(Model::Component &component) void Model::updateState(Model::Component &component)
{ {
if (!component.files.empty()) { if (!component.files.empty()) {

View File

@ -47,6 +47,7 @@ public:
void setExpansions(const std::map<QString, QString>& expansions); void setExpansions(const std::map<QString, QString>& expansions);
UserActions userActions() const; UserActions userActions() const;
void updateStates(); void updateStates();
bool hasUpdates() const;
QModelIndex index(int row, int column, QModelIndex index(int row, int column,
const QModelIndex& parent) const override; const QModelIndex& parent) const override;
@ -74,6 +75,7 @@ private:
std::unique_ptr<Component> parse(const QJsonObject& json) const; std::unique_ptr<Component> parse(const QJsonObject& json) const;
void updateState(Component& component); void updateState(Component& component);
bool hasUpdates(const Component& component) const;
void fillUserActions(UserActions& actions, Component& component) const; void fillUserActions(UserActions& actions, Component& component) const;
State currentState(const File& file) const; State currentState(const File& file) const;
QString expanded(const QString& source) const; QString expanded(const QString& source) const;
@ -108,6 +110,7 @@ public:
Model* model() const; Model* model() const;
signals: signals:
void updatesAvailable();
void updated(); void updated();
void error(const QString& error); void error(const QString& error);