X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/056d12d60f93a052e19f6e2cff9b826e500eef16..533f050855a50212bba7be57a1590f9ce743e26d:/src/kitemviews/kitemlistgroupheader.cpp diff --git a/src/kitemviews/kitemlistgroupheader.cpp b/src/kitemviews/kitemlistgroupheader.cpp index ffc81eb12..fb9298989 100644 --- a/src/kitemviews/kitemlistgroupheader.cpp +++ b/src/kitemviews/kitemlistgroupheader.cpp @@ -20,24 +20,23 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ -#include "kitemlistgroupheader.h" +#include "kstandarditemlistgroupheader.h" #include "kitemlistview.h" #include #include #include -#include KItemListGroupHeader::KItemListGroupHeader(QGraphicsWidget* parent) : - QGraphicsWidget(parent, 0), + QGraphicsWidget(parent, nullptr), m_dirtyCache(true), m_role(), m_data(), m_styleOption(), m_scrollOrientation(Qt::Vertical), m_itemIndex(-1), - m_lineColor(), + m_separatorColor(), m_roleColor(), m_roleBounds() { @@ -124,6 +123,7 @@ Qt::Orientation KItemListGroupHeader::scrollOrientation() const void KItemListGroupHeader::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { + Q_UNUSED(painter); Q_UNUSED(option); Q_UNUSED(widget); @@ -131,26 +131,8 @@ void KItemListGroupHeader::paint(QPainter* painter, const QStyleOptionGraphicsIt updateCache(); } - if (m_scrollOrientation == Qt::Horizontal) { - painter->setPen(m_lineColor); - const qreal x = m_roleBounds.x() - m_styleOption.padding; - painter->drawLine(x, 0, x, size().height() - 1); - - } else if (m_itemIndex > 0) { - painter->setPen(m_lineColor); - const qreal y = m_roleBounds.y() - m_styleOption.padding; - painter->drawLine(0, y, size().width() - 1, y); - } -} - -QRectF KItemListGroupHeader::roleBounds() const -{ - return m_roleBounds; -} - -QColor KItemListGroupHeader::roleColor() const -{ - return m_roleColor; + paintSeparator(painter, m_separatorColor); + paintRole(painter, m_roleBounds, m_roleColor); } void KItemListGroupHeader::roleChanged(const QByteArray& current, const QByteArray& previous) @@ -197,25 +179,22 @@ void KItemListGroupHeader::updateCache() // Calculate the role- and line-color. No alphablending is used for // performance reasons. - const QColor c1 = m_styleOption.palette.text().color(); - const QColor c2 = m_styleOption.palette.base().color(); - m_lineColor = mixedColor(c1, c2, 10); - m_roleColor = mixedColor(c1, c2, 50); - - int horizontalMargin = 0; - if (m_scrollOrientation == Qt::Vertical) { - // The x-position of the group-header-widget will always be 0, - // Add a minimum margin. - horizontalMargin = qMax(2, m_styleOption.horizontalMargin); - } + const QColor c1 = textColor(); + const QColor c2 = baseColor(); + m_separatorColor = mixedColor(c1, c2, 10); + m_roleColor = mixedColor(c1, c2, 60); + + const int padding = qMax(1, m_styleOption.padding); + const int horizontalMargin = qMax(2, m_styleOption.horizontalMargin); - const int padding = qMax(2, m_styleOption.padding); const QFontMetrics fontMetrics(m_styleOption.font); const qreal roleHeight = fontMetrics.height(); + const int y = (m_scrollOrientation == Qt::Vertical) ? padding : horizontalMargin; + m_roleBounds = QRectF(horizontalMargin + padding, - size().height() - roleHeight - padding, - size().width() - 2 * (horizontalMargin + padding), + y, + size().width() - 2 * padding - horizontalMargin, roleHeight); m_dirtyCache = false; @@ -231,4 +210,25 @@ QColor KItemListGroupHeader::mixedColor(const QColor& c1, const QColor& c2, int (c1.blue() * c1Percent + c2.blue() * c2Percent) / 100); } -#include "kitemlistgroupheader.moc" +QPalette::ColorRole KItemListGroupHeader::normalTextColorRole() const +{ + return QPalette::Text; +} + +QPalette::ColorRole KItemListGroupHeader::normalBaseColorRole() const +{ + return QPalette::Window; +} + +QColor KItemListGroupHeader::textColor() const +{ + const QPalette::ColorGroup group = isActiveWindow() ? QPalette::Active : QPalette::Inactive; + return styleOption().palette.color(group, normalTextColorRole()); +} + +QColor KItemListGroupHeader::baseColor() const +{ + const QPalette::ColorGroup group = isActiveWindow() ? QPalette::Active : QPalette::Inactive; + return styleOption().palette.color(group, normalBaseColorRole()); +} +