forked from qt-creator/qt-creator
UpdateInfo: Show info when no updates are found
Show that no updates are found in the progress widget. Also change the title to something nice and understandable. Task-number: QTCREATORBUG-21584 Change-Id: I765509850d0454fa3c93b31586766d810ff6e392 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -40,12 +40,17 @@ ShellCommand::ShellCommand(const QString &workingDirectory, const QProcessEnviro
|
|||||||
this, &ShellCommand::coreAboutToClose);
|
this, &ShellCommand::coreAboutToClose);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FutureProgress *ShellCommand::futureProgress() const
|
||||||
|
{
|
||||||
|
return m_progress.data();
|
||||||
|
}
|
||||||
|
|
||||||
void ShellCommand::addTask(QFuture<void> &future)
|
void ShellCommand::addTask(QFuture<void> &future)
|
||||||
{
|
{
|
||||||
const QString name = displayName();
|
const QString name = displayName();
|
||||||
const auto id = Core::Id::fromString(name + QLatin1String(".action"));
|
const auto id = Core::Id::fromString(name + QLatin1String(".action"));
|
||||||
if (hasProgressParser()) {
|
if (hasProgressParser()) {
|
||||||
ProgressManager::addTask(future, name, id);
|
m_progress = ProgressManager::addTask(future, name, id);
|
||||||
} else {
|
} else {
|
||||||
// add a timed tasked based on timeout
|
// add a timed tasked based on timeout
|
||||||
// we cannot access the future interface directly, so we need to create a new one
|
// we cannot access the future interface directly, so we need to create a new one
|
||||||
@@ -58,7 +63,7 @@ void ShellCommand::addTask(QFuture<void> &future)
|
|||||||
watcher->deleteLater();
|
watcher->deleteLater();
|
||||||
});
|
});
|
||||||
watcher->setFuture(future);
|
watcher->setFuture(future);
|
||||||
ProgressManager::addTimedTask(*fi, name, id, qMax(2, timeoutS() / 5)/*itsmagic*/);
|
m_progress = ProgressManager::addTimedTask(*fi, name, id, qMax(2, timeoutS() / 5)/*itsmagic*/);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,8 +27,12 @@
|
|||||||
|
|
||||||
#include "core_global.h"
|
#include "core_global.h"
|
||||||
|
|
||||||
|
#include "progressmanager/futureprogress.h"
|
||||||
|
|
||||||
#include <utils/shellcommand.h>
|
#include <utils/shellcommand.h>
|
||||||
|
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
namespace Core {
|
namespace Core {
|
||||||
|
|
||||||
class CORE_EXPORT ShellCommand : public Utils::ShellCommand
|
class CORE_EXPORT ShellCommand : public Utils::ShellCommand
|
||||||
@@ -38,10 +42,15 @@ class CORE_EXPORT ShellCommand : public Utils::ShellCommand
|
|||||||
public:
|
public:
|
||||||
ShellCommand(const QString &workingDirectory, const QProcessEnvironment &environment);
|
ShellCommand(const QString &workingDirectory, const QProcessEnvironment &environment);
|
||||||
|
|
||||||
|
FutureProgress *futureProgress() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void addTask(QFuture<void> &future) override;
|
void addTask(QFuture<void> &future) override;
|
||||||
|
|
||||||
virtual void coreAboutToClose();
|
virtual void coreAboutToClose();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPointer<FutureProgress> m_progress;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Core
|
} // namespace Core
|
||||||
|
@@ -67,6 +67,7 @@ class UpdateInfoPluginPrivate
|
|||||||
public:
|
public:
|
||||||
QString m_maintenanceTool;
|
QString m_maintenanceTool;
|
||||||
QPointer<ShellCommand> m_checkUpdatesCommand;
|
QPointer<ShellCommand> m_checkUpdatesCommand;
|
||||||
|
QPointer<FutureProgress> m_progress;
|
||||||
QString m_collectedOutput;
|
QString m_collectedOutput;
|
||||||
QTimer *m_checkUpdatesTimer = nullptr;
|
QTimer *m_checkUpdatesTimer = nullptr;
|
||||||
|
|
||||||
@@ -124,6 +125,7 @@ void UpdateInfoPlugin::startCheckForUpdates()
|
|||||||
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
|
||||||
env.insert(QLatin1String("QT_LOGGING_RULES"), QLatin1String("*=false"));
|
env.insert(QLatin1String("QT_LOGGING_RULES"), QLatin1String("*=false"));
|
||||||
d->m_checkUpdatesCommand = new ShellCommand(QString(), env);
|
d->m_checkUpdatesCommand = new ShellCommand(QString(), env);
|
||||||
|
d->m_checkUpdatesCommand->setDisplayName(tr("Checking for Updates"));
|
||||||
connect(d->m_checkUpdatesCommand, &ShellCommand::stdOutText, this, &UpdateInfoPlugin::collectCheckForUpdatesOutput);
|
connect(d->m_checkUpdatesCommand, &ShellCommand::stdOutText, this, &UpdateInfoPlugin::collectCheckForUpdatesOutput);
|
||||||
connect(d->m_checkUpdatesCommand, &ShellCommand::finished, this, &UpdateInfoPlugin::checkForUpdatesFinished);
|
connect(d->m_checkUpdatesCommand, &ShellCommand::finished, this, &UpdateInfoPlugin::checkForUpdatesFinished);
|
||||||
d->m_checkUpdatesCommand->addJob(Utils::FileName(QFileInfo(d->m_maintenanceTool)), QStringList(QLatin1String("--checkupdates")),
|
d->m_checkUpdatesCommand->addJob(Utils::FileName(QFileInfo(d->m_maintenanceTool)), QStringList(QLatin1String("--checkupdates")),
|
||||||
@@ -131,6 +133,11 @@ void UpdateInfoPlugin::startCheckForUpdates()
|
|||||||
/*workingDirectory=*/QString(),
|
/*workingDirectory=*/QString(),
|
||||||
[](int /*exitCode*/) { return Utils::SynchronousProcessResponse::Finished; });
|
[](int /*exitCode*/) { return Utils::SynchronousProcessResponse::Finished; });
|
||||||
d->m_checkUpdatesCommand->execute();
|
d->m_checkUpdatesCommand->execute();
|
||||||
|
d->m_progress = d->m_checkUpdatesCommand->futureProgress();
|
||||||
|
if (d->m_progress) {
|
||||||
|
d->m_progress->setKeepOnFinish(FutureProgress::KeepOnFinishTillUserInteraction);
|
||||||
|
d->m_progress->setSubtitleVisibleInStatusBar(true);
|
||||||
|
}
|
||||||
emit checkForUpdatesRunningChanged(true);
|
emit checkForUpdatesRunningChanged(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,6 +175,8 @@ void UpdateInfoPlugin::checkForUpdatesFinished()
|
|||||||
startUpdater();
|
startUpdater();
|
||||||
} else {
|
} else {
|
||||||
emit newUpdatesAvailable(false);
|
emit newUpdatesAvailable(false);
|
||||||
|
if (d->m_progress)
|
||||||
|
d->m_progress->setSubtitle(tr("No updates found."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user