diff --git a/src/declarative/pkupdates.h b/src/declarative/pkupdates.h --- a/src/declarative/pkupdates.h +++ b/src/declarative/pkupdates.h @@ -46,7 +46,7 @@ Q_PROPERTY(int securityCount READ securityCount NOTIFY updatesChanged) Q_PROPERTY(bool isSystemUpToDate READ isSystemUpToDate NOTIFY updatesChanged) Q_PROPERTY(QString iconName READ iconName NOTIFY updatesChanged) - Q_PROPERTY(QString message READ message NOTIFY isActiveChanged) + Q_PROPERTY(QString message READ message NOTIFY messageChanged) Q_PROPERTY(int percentage READ percentage NOTIFY percentageChanged) Q_PROPERTY(QString timestamp READ timestamp NOTIFY updatesChanged) Q_PROPERTY(QString statusMessage READ statusMessage NOTIFY statusMessageChanged) @@ -161,6 +161,7 @@ void percentageChanged(); void networkStateChanged(); void isOnBatteryChanged(); + void messageChanged(); public slots: /** @@ -201,6 +202,8 @@ */ Q_INVOKABLE void getUpdateDetails(const QString & pkgID); + Q_INVOKABLE void doDelayedCheckUpdates(); + private slots: void getUpdates(); void onChanged(); @@ -233,6 +236,7 @@ int m_percentage = 0; Activity m_activity = Idle; bool m_lastCheckSuccessful = false; + bool m_checkUpdatesWhenNetworkOnline = false; }; #endif // PLASMA_PK_UPDATES_H diff --git a/src/declarative/pkupdates.cpp b/src/declarative/pkupdates.cpp --- a/src/declarative/pkupdates.cpp +++ b/src/declarative/pkupdates.cpp @@ -54,6 +54,10 @@ connect(Solid::PowerManagement::notifier(), &Solid::PowerManagement::Notifier::appShouldConserveResourcesChanged, this, &PkUpdates::isOnBatteryChanged); + + connect(PackageKit::Daemon::global(), &PackageKit::Daemon::networkStateChanged, this, &PkUpdates::doDelayedCheckUpdates); + connect(this, &PkUpdates::isActiveChanged, this, &PkUpdates::messageChanged); + connect(this, &PkUpdates::networkStateChanged, this, &PkUpdates::messageChanged); } PkUpdates::~PkUpdates() @@ -167,6 +171,16 @@ return (PackageKit::Daemon::networkState() > PackageKit::Daemon::Network::NetworkOffline); } +void PkUpdates::doDelayedCheckUpdates() +{ + if (m_checkUpdatesWhenNetworkOnline && isNetworkOnline()) + { + qCDebug(PLASMA_PK_UPDATES) << "CheckUpdates was delayed. Doing it now"; + m_checkUpdatesWhenNetworkOnline = false; + checkUpdates(); + } +} + bool PkUpdates::isNetworkMobile() const { qCDebug(PLASMA_PK_UPDATES) << "Is net mobile:" << (PackageKit::Daemon::networkState() == PackageKit::Daemon::Network::NetworkMobile); @@ -198,6 +212,12 @@ void PkUpdates::checkUpdates(bool force) { + if (!isNetworkOnline()) + { + qCDebug(PLASMA_PK_UPDATES) << "Checking updates delayed. Network is offline"; + m_checkUpdatesWhenNetworkOnline = true; + return; + } qCDebug(PLASMA_PK_UPDATES) << "Checking updates, forced"; // ask the Packagekit daemon to refresh the cache diff --git a/src/plasma/contents/ui/Full.qml b/src/plasma/contents/ui/Full.qml --- a/src/plasma/contents/ui/Full.qml +++ b/src/plasma/contents/ui/Full.qml @@ -127,7 +127,7 @@ id: updatesScrollArea Layout.fillWidth: true Layout.fillHeight: true - visible: PkUpdates.count && !PkUpdates.isActive + visible: PkUpdates.count && PkUpdates.isNetworkOnline && !PkUpdates.isActive ListView { id: updatesView @@ -160,7 +160,7 @@ } RowLayout { - visible: PkUpdates.count && !PkUpdates.isActive + visible: PkUpdates.count && PkUpdates.isNetworkOnline && !PkUpdates.isActive PlasmaComponents.CheckBox { id: chkSelectAll anchors {