┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Holland <[email protected]>2019-07-31 21:46:53 -0400
committerElvis Angelaccio <[email protected]>2020-11-04 23:16:12 +0000
commite75326077b443f5f1f1b19dc960a3a8a83979d81 (patch)
tree58075e29255e7aa5608ff85ae3d3d4ad6825c82d
parentac6de72048fb50bca1823b8001fb012158050c25 (diff)
Only check if place url is mount point once during polish event.
The capacity bars will no longer update when capacity changes. It only checks the size on init. Updating during polish event is only a temporarily solution just to draft code flow for seperating logic from painting. Eventually this logic update should be in a worker thread detached from blocking the rendering thread that blocks launching the dolphin window.
-rw-r--r--src/panels/places/placesitemlistwidget.cpp138
-rw-r--r--src/panels/places/placesitemlistwidget.h8
2 files changed, 91 insertions, 55 deletions
diff --git a/src/panels/places/placesitemlistwidget.cpp b/src/panels/places/placesitemlistwidget.cpp
index 52b3baf30..4d88f8c55 100644
--- a/src/panels/places/placesitemlistwidget.cpp
+++ b/src/panels/places/placesitemlistwidget.cpp
@@ -6,6 +6,8 @@
#include "placesitemlistwidget.h"
+#include <QDebug>
+
#include <QGraphicsView>
#include <QStyleOption>
@@ -18,6 +20,9 @@
PlacesItemListWidget::PlacesItemListWidget(KItemListWidgetInformant* informant, QGraphicsItem* parent) :
KStandardItemListWidget(informant, parent)
+ , m_isMountPoint(false)
+ , m_drawCapacityBar(false)
+ , m_capacityBarRatio(0)
{
}
@@ -36,78 +41,101 @@ QPalette::ColorRole PlacesItemListWidget::normalTextColorRole() const
return QPalette::WindowText;
}
-void PlacesItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
+void PlacesItemListWidget::updateCapacityBar()
{
- KStandardItemListWidget::paint(painter, option, widget);
-
- bool drawCapacityBar = false;
const QUrl url = data().value("url").toUrl();
if (url.isLocalFile()) {
const QString mountPointPath = url.toLocalFile();
+ qDebug() << "url:" << mountPointPath;
KMountPoint::Ptr mp = KMountPoint::currentMountPoints().findByPath(mountPointPath);
- bool isMountPoint = (mp && mp->mountPoint() == mountPointPath);
-
- if (isMountPoint) {
+ m_isMountPoint = (mp && mp->mountPoint() == mountPointPath);
+ qDebug() << " isMountPoint:" << m_isMountPoint;
+ if (m_isMountPoint) {
const KDiskFreeSpaceInfo info = KDiskFreeSpaceInfo::freeSpaceInfo(mountPointPath);
- drawCapacityBar = info.size() != 0;
- if (drawCapacityBar) {
- const TextInfo* textInfo = m_textInfo.value("text");
- if (textInfo) { // See KStandarItemListWidget::paint() for info on why we check textInfo.
- painter->save();
+ m_drawCapacityBar = info.size() != 0;
+ m_capacityBarRatio = (qreal)info.used() / (qreal)info.size();
+ qDebug() << " capacityBarRatio:" << m_capacityBarRatio << "(" << info.used() << "/" << info.size() << ")";
+
+ // update();
+ } else {
+ resetCapacityBar();
+ }
+ } else {
+ resetCapacityBar();
+ }
+}
+
+void PlacesItemListWidget::resetCapacityBar()
+{
+ m_isMountPoint = false;
+ m_drawCapacityBar = false;
+ m_capacityBarRatio = 0;
+}
+
+void PlacesItemListWidget::polishEvent()
+{
+ updateCapacityBar();
+
+ QGraphicsWidget::polishEvent();
+}
- QRect capacityRect(
- textInfo->pos.x(),
- option->rect.top() + option->rect.height() - CAPACITYBAR_HEIGHT - CAPACITYBAR_MARGIN,
- qMin((qreal)option->rect.width(), selectionRect().width()) - (textInfo->pos.x() - option->rect.left()),
- CAPACITYBAR_HEIGHT
- );
+void PlacesItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
+{
+ KStandardItemListWidget::paint(painter, option, widget);
- const qreal ratio = (qreal)info.used() / (qreal)info.size();
- // qDebug() << "ratio:" << ratio << "(" << info.used() << "/" << info.size() << ")";
+ if (m_drawCapacityBar) {
+ const TextInfo* textInfo = m_textInfo.value("text");
+ if (textInfo) { // See KStandarItemListWidget::paint() for info on why we check textInfo.
+ painter->save();
- const QPalette pal = palette();
- const QPalette::ColorGroup group = isActiveWindow() ? QPalette::Active : QPalette::Inactive;
- // QColor bgColor = QColor::fromRgb(230, 230, 230);
- // QColor outlineColor = QColor::fromRgb(208, 208, 208);
- // QColor bgColor = QColor::fromRgb(0, 230, 0);
- // QColor outlineColor = QColor::fromRgb(208, 0, 0, 127);
- // QColor normalUsedColor = QColor::fromRgb(38, 160, 218);
- // QColor dangerUsedColor = QColor::fromRgb(218, 38, 38);
- // QColor bgColor = pal.base().color().darker(130);
- // QColor outlineColor = pal.base().color().darker(150);
+ QRect capacityRect(
+ textInfo->pos.x(),
+ option->rect.top() + option->rect.height() - CAPACITYBAR_HEIGHT - CAPACITYBAR_MARGIN,
+ qMin((qreal)option->rect.width(), selectionRect().width()) - (textInfo->pos.x() - option->rect.left()),
+ CAPACITYBAR_HEIGHT
+ );
- QPalette::ColorRole role;
- // role = isSelected() ? QPalette::Highlight : QPalette::Window;
- // QColor bgColor = styleOption().palette.color(group, role).darker(150);
- // QColor outlineColor = styleOption().palette.color(group, role).darker(170);
- QColor bgColor = isSelected()
- ? styleOption().palette.color(group, QPalette::Highlight).darker(180)
- : styleOption().palette.color(group, QPalette::Window).darker(120);
+ const QPalette pal = palette();
+ const QPalette::ColorGroup group = isActiveWindow() ? QPalette::Active : QPalette::Inactive;
+ // QColor bgColor = QColor::fromRgb(230, 230, 230);
+ // QColor outlineColor = QColor::fromRgb(208, 208, 208);
+ // QColor bgColor = QColor::fromRgb(0, 230, 0);
+ // QColor outlineColor = QColor::fromRgb(208, 0, 0, 127);
+ // QColor normalUsedColor = QColor::fromRgb(38, 160, 218);
+ // QColor dangerUsedColor = QColor::fromRgb(218, 38, 38);
+ // QColor bgColor = pal.base().color().darker(130);
+ // QColor outlineColor = pal.base().color().darker(150);
- role = isSelected() ? QPalette::HighlightedText : QPalette::Highlight;
- QColor normalUsedColor = styleOption().palette.color(group, role);
+ QPalette::ColorRole role;
+ // role = isSelected() ? QPalette::Highlight : QPalette::Window;
+ // QColor bgColor = styleOption().palette.color(group, role).darker(150);
+ // QColor outlineColor = styleOption().palette.color(group, role).darker(170);
+ QColor bgColor = isSelected()
+ ? styleOption().palette.color(group, QPalette::Highlight).darker(180)
+ : styleOption().palette.color(group, QPalette::Window).darker(120);
- QColor dangerUsedColor = QColor::fromRgb(218, 38, 38);
+ role = isSelected() ? QPalette::HighlightedText : QPalette::Highlight;
+ QColor normalUsedColor = styleOption().palette.color(group, role);
- // Background
- painter->fillRect(capacityRect, bgColor);
+ QColor dangerUsedColor = QColor::fromRgb(218, 38, 38);
- // Outline
- // const QRect outlineRect(capacityRect.x(), capacityRect.y(), capacityRect.width() - 1, capacityRect.height() - 1);
- // painter->setPen(outlineColor);
- // painter->drawRect(outlineRect);
+ // Background
+ painter->fillRect(capacityRect, bgColor);
- // Fill
- const QRect fillRect(capacityRect.x(), capacityRect.y(), capacityRect.width() * ratio, capacityRect.height());
- if (ratio < 0.95) { // Fill
- painter->fillRect(fillRect, normalUsedColor);
- } else {
- painter->fillRect(fillRect, dangerUsedColor);
- }
+ // Outline
+ // const QRect outlineRect(capacityRect.x(), capacityRect.y(), capacityRect.width() - 1, capacityRect.height() - 1);
+ // painter->setPen(outlineColor);
+ // painter->drawRect(outlineRect);
- painter->restore();
- }
+ // Fill
+ const QRect fillRect(capacityRect.x(), capacityRect.y(), capacityRect.width() * m_capacityBarRatio, capacityRect.height());
+ if (m_capacityBarRatio < 0.95) { // Fill
+ painter->fillRect(fillRect, normalUsedColor);
+ } else {
+ painter->fillRect(fillRect, dangerUsedColor);
}
+
+ painter->restore();
}
}
}
diff --git a/src/panels/places/placesitemlistwidget.h b/src/panels/places/placesitemlistwidget.h
index e5763ad07..a82616ff3 100644
--- a/src/panels/places/placesitemlistwidget.h
+++ b/src/panels/places/placesitemlistwidget.h
@@ -22,10 +22,18 @@ public:
~PlacesItemListWidget() override;
void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override;
+ void polishEvent() override;
protected:
bool isHidden() const override;
QPalette::ColorRole normalTextColorRole() const override;
+ void updateCapacityBar();
+ void resetCapacityBar();
+
+private:
+ bool m_isMountPoint;
+ bool m_drawCapacityBar;
+ qreal m_capacityBarRatio;
};
#endif