Improve messages and update options dialog checkbox after Forget

This commit is contained in:
elecpower
2022-09-06 09:29:41 +10:00
committed by Peter Feerick
parent 7ee796d56a
commit bb4ed8023d
4 changed files with 16 additions and 6 deletions
+3 -1
View File
@@ -1574,12 +1574,14 @@ bool UpdateFactories::manualUpdate(ProgressWidget * progress)
return ok;
}
const bool UpdateFactories::updatesAvailable()
const bool UpdateFactories::updatesAvailable(QStringList & names)
{
bool ret = false;
names.clear();
foreach (UpdateFactoryInterface * factory, registeredUpdateFactories) {
if (factory->instance()->isUpdateAvailable()) {
names.append(factory->name());
ret = true;
}
}
+1 -1
View File
@@ -285,7 +285,7 @@ class UpdateFactories : public QWidget
bool autoUpdate(ProgressWidget * progress = nullptr);
bool manualUpdate(ProgressWidget * progress = nullptr);
const bool updatesAvailable();
const bool updatesAvailable(QStringList & names);
private:
QVector<UpdateFactoryInterface *> registeredUpdateFactories;
+11 -4
View File
@@ -63,17 +63,24 @@ void Updates::autoUpdates()
g.lastUpdateCheck(QDateTime::currentDateTime().toString(Qt::ISODate));
if (!factories->updatesAvailable())
QStringList list;
if (!factories->updatesAvailable(list))
return;
if (QMessageBox::question(parentWidget(), CPN_STR_APP_NAME % ": " % tr("Checking for Updates"),
tr("One or more updates are available. Update now?"),
tr("Updates available for:\n %1\n\nUpdate now?").arg(list.join("\n ")),
(QMessageBox::Yes | QMessageBox::No), QMessageBox::No) == QMessageBox::Yes) {
factories->resetAllRunEnvironments();
if (factories->autoUpdate())
checkRunSDSync();
if (!factories->autoUpdate()) {
QMessageBox::warning(this, CPN_STR_APP_NAME, tr("Updates finished with errors"));
return;
}
QMessageBox::information(this, CPN_STR_APP_NAME, tr("Updates finished successfully"));
checkRunSDSync();
}
}
+1
View File
@@ -177,6 +177,7 @@ UpdatesDialog::UpdatesDialog(QWidget * parent, UpdateFactories * factories) :
UpdateOptionsDialog *dlg = new UpdateOptionsDialog(this, factories, i);
connect(dlg, &UpdateOptionsDialog::changed, [=](const int i) {
QString name = g.component[i].name();
chkUpdate[i]->setChecked(!factories->isLatestRelease(name));
lblCurrentRel[i]->setText(factories->currentRelease(name));
lblUpdateRel[i]->setText(factories->updateRelease(name));
});