┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Holland <[email protected]>2020-10-17 14:37:54 -0400
committerElvis Angelaccio <[email protected]>2020-11-04 23:16:13 +0000
commit70656d08f95eee66d6af85a1d015dff856a459d0 (patch)
treee5d6488b8c6feef68236a767ba2dc8b9fa0f1fc6
parent60c3fa8d39a2187b79369dfd58b383c9df60826e (diff)
Use QDeadlineTimer instead of QDateTime.
Use early returns instead of deeply nested if/else.
-rw-r--r--src/panels/places/placesitemlistwidget.cpp61
-rw-r--r--src/panels/places/placesitemlistwidget.h4
2 files changed, 31 insertions, 34 deletions
diff --git a/src/panels/places/placesitemlistwidget.cpp b/src/panels/places/placesitemlistwidget.cpp
index 12292ad95..745a6ae1b 100644
--- a/src/panels/places/placesitemlistwidget.cpp
+++ b/src/panels/places/placesitemlistwidget.cpp
@@ -6,7 +6,6 @@
#include "placesitemlistwidget.h"
-#include <QDateTime>
#include <QStyleOption>
#include <QPainter>
@@ -16,6 +15,7 @@
#define CAPACITYBAR_HEIGHT 2
#define CAPACITYBAR_MARGIN 2
+#define CAPACITYBAR_CACHE_TTL 60000
PlacesItemListWidget::PlacesItemListWidget(KItemListWidgetInformant* informant, QGraphicsItem* parent) :
@@ -43,47 +43,44 @@ void PlacesItemListWidget::updateCapacityBar()
{
const bool isDevice = !data().value("udi").toString().isEmpty();
const QUrl url = data().value("url").toUrl();
- if (isDevice && url.isLocalFile()) {
- if (!m_freeSpaceInfo.job
- && (
- !m_freeSpaceInfo.lastUpdated.isValid()
- || m_freeSpaceInfo.lastUpdated.secsTo(QDateTime::currentDateTimeUtc()) > 60
- )
- ) {
- m_freeSpaceInfo.job = KIO::fileSystemFreeSpace(url);
- connect(
- m_freeSpaceInfo.job,
- &KIO::FileSystemFreeSpaceJob::result,
- this,
- [this](KIO::Job *job, KIO::filesize_t size, KIO::filesize_t available) {
- // even if we receive an error we want to refresh lastUpdated to avoid repeatedly querying in this case
- m_freeSpaceInfo.lastUpdated = QDateTime::currentDateTimeUtc();
+ if (!(isDevice && url.isLocalFile())) {
+ resetCapacityBar();
+ return;
+ }
- if (job->error()) {
- return;
- }
+ if (m_freeSpaceInfo.job || !m_freeSpaceInfo.lastUpdated.hasExpired()) {
+ // Job running or cache is still valid.
+ return;
+ }
- m_freeSpaceInfo.size = size;
- m_freeSpaceInfo.used = size - available;
- m_freeSpaceInfo.usedRatio = (qreal)m_freeSpaceInfo.used / (qreal)m_freeSpaceInfo.size;
- m_drawCapacityBar = size > 0;
+ m_freeSpaceInfo.job = KIO::fileSystemFreeSpace(url);
+ connect(
+ m_freeSpaceInfo.job,
+ &KIO::FileSystemFreeSpaceJob::result,
+ this,
+ [this](KIO::Job *job, KIO::filesize_t size, KIO::filesize_t available) {
+ // even if we receive an error we want to refresh lastUpdated to avoid repeatedly querying in this case
+ m_freeSpaceInfo.lastUpdated.setRemainingTime(CAPACITYBAR_CACHE_TTL);
- update();
- }
- );
- } else {
- // Job running or cache is still valid.
+ if (job->error()) {
+ return;
+ }
+
+ m_freeSpaceInfo.size = size;
+ m_freeSpaceInfo.used = size - available;
+ m_freeSpaceInfo.usedRatio = (qreal)m_freeSpaceInfo.used / (qreal)m_freeSpaceInfo.size;
+ m_drawCapacityBar = size > 0;
+
+ update();
}
- } else {
- resetCapacityBar();
- }
+ );
}
void PlacesItemListWidget::resetCapacityBar()
{
m_drawCapacityBar = false;
delete m_freeSpaceInfo.job;
- m_freeSpaceInfo.lastUpdated = QDateTime();
+ m_freeSpaceInfo.lastUpdated.setRemainingTime(0);
m_freeSpaceInfo.size = 0;
m_freeSpaceInfo.used = 0;
m_freeSpaceInfo.usedRatio = 0;
diff --git a/src/panels/places/placesitemlistwidget.h b/src/panels/places/placesitemlistwidget.h
index d2806e4b2..9c8272fb0 100644
--- a/src/panels/places/placesitemlistwidget.h
+++ b/src/panels/places/placesitemlistwidget.h
@@ -9,7 +9,7 @@
#include "kitemviews/kstandarditemlistwidget.h"
-#include <QDateTime>
+#include <QDeadlineTimer>
#include <QPainter>
#include <QPointer>
#include <QStyleOptionGraphicsItem>
@@ -22,7 +22,7 @@
// https://invent.kde.org/frameworks/kio/-/commit/933887dc334f3498505af7a86d25db7faae91019
struct PlaceFreeSpaceInfo
{
- QDateTime lastUpdated;
+ QDeadlineTimer lastUpdated;
KIO::filesize_t used = 0;
KIO::filesize_t size = 0;
qreal usedRatio = 0;