┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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