Blob Blame History Raw
From 0e13f4c2005235cd7e3d200f5382ca7725bb7431 Mon Sep 17 00:00:00 2001
From: Rex Dieter <rdieter@math.unl.edu>
Date: Wed, 28 Oct 2015 08:28:41 -0500
Subject: [PATCH 15/15] explicitly set PK cache-age

Recent versions of PackageKit default to cache-age of infinity, since
https://github.com/hughsie/PackageKit/commit/1615ace6ea5f3348ab8c76b713809bbe5a450d23

REVIEW: 125840
---
 ApperKCM/ApperKCM.cpp                        | 2 ++
 ApperKCM/ApperKCM.h                          | 1 +
 apperd/RefreshCacheTask.cpp                  | 4 +++-
 apperd/RefreshCacheTask.h                    | 1 +
 declarative-plugins/daemonhelper.cpp         | 5 +++++
 declarative-plugins/daemonhelper.h           | 1 +
 plasmoid/package/contents/ui/Transaction.qml | 2 ++
 7 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/ApperKCM/ApperKCM.cpp b/ApperKCM/ApperKCM.cpp
index c0d8dc7..8cfe823 100644
--- a/ApperKCM/ApperKCM.cpp
+++ b/ApperKCM/ApperKCM.cpp
@@ -78,6 +78,7 @@ ApperKCM::ApperKCM(QWidget *parent, const QVariantList &args) :
     m_findIcon("edit-find"),
     m_cancelIcon("dialog-cancel"),
     m_forceRefreshCache(false),
+    m_cacheAge(600),
     m_history(0),
     m_searchRole(Transaction::RoleUnknown)
 {
@@ -761,6 +762,7 @@ void ApperKCM::refreshCache()
     PkTransactionWidget *transactionW = new PkTransactionWidget(this);
     connect(transactionW, SIGNAL(titleChangedProgress(QString)), this, SIGNAL(caption(QString)));
     QPointer<PkTransaction> transaction = new PkTransaction(transactionW);
+    Daemon::setHints (QLatin1String("cache-age=")+QString::number(m_cacheAge));
     transaction->refreshCache(m_forceRefreshCache);
     transactionW->setTransaction(transaction, Transaction::RoleRefreshCache);
 
diff --git a/ApperKCM/ApperKCM.h b/ApperKCM/ApperKCM.h
index 317ba3a..18e9c70 100644
--- a/ApperKCM/ApperKCM.h
+++ b/ApperKCM/ApperKCM.h
@@ -119,6 +119,7 @@ private:
     FiltersMenu *m_filtersMenu;
     Transaction::Roles m_roles;
     bool m_forceRefreshCache;
+    uint m_cacheAge;
 
     TransactionHistory *m_history;
 
diff --git a/apperd/RefreshCacheTask.cpp b/apperd/RefreshCacheTask.cpp
index c10aeec..7a6ee3f 100644
--- a/apperd/RefreshCacheTask.cpp
+++ b/apperd/RefreshCacheTask.cpp
@@ -33,7 +33,8 @@ RefreshCacheTask::RefreshCacheTask(QObject *parent) :
     QObject(parent),
     m_transaction(0),
     m_notification(0),
-    m_lastError(Transaction::ErrorUnknown)
+    m_lastError(Transaction::ErrorUnknown),
+    m_cacheAge(3600)
 {
 }
 
@@ -43,6 +44,7 @@ void RefreshCacheTask::refreshCache()
     if (!m_transaction) {
         // Refresh Cache is false otherwise it will rebuild
         // the whole cache on Fedora
+        Daemon::setHints (QLatin1String("cache-age=")+QString::number(m_cacheAge));
         m_transaction = Daemon::refreshCache(false);
         connect(m_transaction, SIGNAL(finished(PackageKit::Transaction::Exit,uint)),
                 this, SLOT(refreshCacheFinished(PackageKit::Transaction::Exit,uint)));
diff --git a/apperd/RefreshCacheTask.h b/apperd/RefreshCacheTask.h
index a10c78f..13859ff 100644
--- a/apperd/RefreshCacheTask.h
+++ b/apperd/RefreshCacheTask.h
@@ -44,6 +44,7 @@ private:
     Transaction *m_transaction;
     KNotification *m_notification;
     Transaction::Error m_lastError;
+    uint m_cacheAge;
     QString m_lastErrorString;
 };
 
diff --git a/declarative-plugins/daemonhelper.cpp b/declarative-plugins/daemonhelper.cpp
index 9e5dc97..df6740e 100644
--- a/declarative-plugins/daemonhelper.cpp
+++ b/declarative-plugins/daemonhelper.cpp
@@ -32,3 +32,8 @@ uint DaemonHelper::getTimeSinceLastRefresh()
 {
     return Daemon::global()->getTimeSinceAction(Transaction::RoleRefreshCache);
 }
+
+void DaemonHelper::setCacheAge (int age)
+{
+   Daemon::setHints(QLatin1String("cache-age=")+QString::number(age));
+}
diff --git a/declarative-plugins/daemonhelper.h b/declarative-plugins/daemonhelper.h
index 469a481..b49d292 100644
--- a/declarative-plugins/daemonhelper.h
+++ b/declarative-plugins/daemonhelper.h
@@ -30,6 +30,7 @@ public:
 
 public Q_SLOTS:
     uint getTimeSinceLastRefresh();
+    void setCacheAge (int age);
 };
 
 #endif // DAEMONHELPER_H
diff --git a/plasmoid/package/contents/ui/Transaction.qml b/plasmoid/package/contents/ui/Transaction.qml
index f16409f..9153365 100644
--- a/plasmoid/package/contents/ui/Transaction.qml
+++ b/plasmoid/package/contents/ui/Transaction.qml
@@ -27,6 +27,7 @@ FocusScope {
     clip: true
 
     property int progressWidth: 30
+    property int cacheAge: 600
     property alias transaction: updateTransaction
 
     signal finished(bool success);
@@ -38,6 +39,7 @@ FocusScope {
 
     function refreshCache() {
         updateTransaction.enableJobWatcher(false);
+        DaemonHelper.setCacheAge(cacheAge);
         updateTransaction.refreshCache(false);
     }
 
-- 
1.9.3