┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/views/dolphinfileitemlistwidget.cpp
diff options
context:
space:
mode:
authorMéven Car <[email protected]>2025-01-14 18:52:36 +0100
committerMéven Car <[email protected]>2025-01-17 11:07:40 +0100
commit961e6270e4401a6c7512df3a2e3efd09a25df962 (patch)
treee282410c9546d0b636ca156848f6b75da722da61 /src/views/dolphinfileitemlistwidget.cpp
parent9a44aad838e111175b57a7ff14a9f6d2f44c5b65 (diff)
Refactor Overlay Handling
Now all overlays icons in kitemviews are added in KStandardItemListWidget::updatePixmapCache. data[iconOverlays] now contains icon names. DolphinFileItemListWidget::refreshCache is the sole responsible of setting the overlays either coming from KFileItemModelRolesUpdater or KVersionControlPlugin. This garantees consistency in rendering. BUG: 497372
Diffstat (limited to 'src/views/dolphinfileitemlistwidget.cpp')
-rw-r--r--src/views/dolphinfileitemlistwidget.cpp35
1 files changed, 18 insertions, 17 deletions
diff --git a/src/views/dolphinfileitemlistwidget.cpp b/src/views/dolphinfileitemlistwidget.cpp
index 11c88d402..7ad242f3f 100644
--- a/src/views/dolphinfileitemlistwidget.cpp
+++ b/src/views/dolphinfileitemlistwidget.cpp
@@ -24,6 +24,7 @@ void DolphinFileItemListWidget::refreshCache()
{
QColor color;
const QHash<QByteArray, QVariant> values = data();
+ QHash<Qt::Corner, QString> overlays;
if (values.contains("version")) {
// The item is under version control. Apply the text color corresponding
// to its version state.
@@ -70,27 +71,28 @@ void DolphinFileItemListWidget::refreshCache()
(tintColor.blue() + textColor.blue()) / 2,
(tintColor.alpha() + textColor.alpha()) / 2);
- setOverlay(overlayForState(version, styleOption().iconSize));
- } else if (!overlay().isNull()) {
- setOverlay(QPixmap());
+ overlays.insert(Qt::Corner::BottomLeftCorner, overlayForState(version));
}
+ if (values.contains("iconOverlays")) {
+ const auto corners = {Qt::Corner::BottomRightCorner, Qt::Corner::TopLeftCorner, Qt::Corner::TopRightCorner};
+ const auto iconOverlays = values.value("iconOverlays").toStringList();
+ auto overlaysIt = iconOverlays.constBegin();
+ for (const auto &corner : corners) {
+ if (overlaysIt == iconOverlays.constEnd()) {
+ break;
+ }
+ overlays.insert(corner, *overlaysIt);
+ overlaysIt = ++overlaysIt;
+ }
+ }
+
+ setOverlays(overlays);
setTextColor(color);
}
-QPixmap DolphinFileItemListWidget::overlayForState(KVersionControlPlugin::ItemVersion version, int size) const
+QString DolphinFileItemListWidget::overlayForState(KVersionControlPlugin::ItemVersion version) const
{
- int overlayHeight = KIconLoader::SizeSmall;
- if (size >= KIconLoader::SizeEnormous) {
- overlayHeight = KIconLoader::SizeMedium;
- } else if (size >= KIconLoader::SizeLarge) {
- overlayHeight = KIconLoader::SizeSmallMedium;
- } else if (size >= KIconLoader::SizeMedium) {
- overlayHeight = KIconLoader::SizeSmall;
- } else {
- overlayHeight = KIconLoader::SizeSmall / 2;
- }
-
QString iconName;
switch (version) {
case KVersionControlPlugin::NormalVersion:
@@ -123,8 +125,7 @@ QPixmap DolphinFileItemListWidget::overlayForState(KVersionControlPlugin::ItemVe
break;
}
- const qreal dpr = KItemViewsUtils::devicePixelRatio(this);
- return QIcon::fromTheme(iconName).pixmap(QSize(overlayHeight, overlayHeight), dpr);
+ return iconName;
}
#include "moc_dolphinfileitemlistwidget.cpp"