diff options
| author | Peter Penz <[email protected]> | 2011-11-13 16:20:42 +0100 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-11-13 16:21:56 +0100 |
| commit | 2438b61d8e76f8ea016217150be711a1467c32d0 (patch) | |
| tree | 8519e8eb38d7f33b50b75eaeb96dfaeb30bacab4 /src/kitemviews/kitemlistwidget.cpp | |
| parent | fddcbc7a9edbed9267ea3114c8b7316f18904aba (diff) | |
Bring back the selection-markers
Still some finetuning is necessary, but lets first bring
back the missing features from Dolphin 1.x to 2.0 before starting
with this.
Diffstat (limited to 'src/kitemviews/kitemlistwidget.cpp')
| -rw-r--r-- | src/kitemviews/kitemlistwidget.cpp | 57 |
1 files changed, 56 insertions, 1 deletions
diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index 21bfe707f..04438262f 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -22,11 +22,13 @@ #include "kitemlistwidget.h" +#include "kitemlistselectiontoggle_p.h" #include "kitemlistview.h" #include "kitemmodelbase.h" #include <KDebug> +#include <QApplication> #include <QPainter> #include <QPropertyAnimation> #include <QStyle> @@ -39,13 +41,15 @@ KItemListWidget::KItemListWidget(QGraphicsItem* parent) : m_current(false), m_hovered(false), m_alternatingBackgroundColors(false), + m_enabledSelectionToggle(false), m_data(), m_visibleRoles(), m_visibleRolesSizes(), m_styleOption(), m_hoverOpacity(0), m_hoverCache(0), - m_hoverAnimation(0) + m_hoverAnimation(0), + m_selectionToggle(0) { } @@ -57,6 +61,9 @@ KItemListWidget::~KItemListWidget() void KItemListWidget::setIndex(int index) { if (m_index != index) { + delete m_selectionToggle; + m_selectionToggle = 0; + if (m_hoverAnimation) { m_hoverAnimation->stop(); m_hoverOpacity = 0; @@ -195,6 +202,10 @@ void KItemListWidget::setSelected(bool selected) { if (m_selected != selected) { m_selected = selected; + if (m_selectionToggle) { + m_selectionToggle->setChecked(selected); + } + selectedChanged(selected); update(); } @@ -209,6 +220,7 @@ void KItemListWidget::setCurrent(bool current) { if (m_current != current) { m_current = current; + currentChanged(current); update(); } @@ -230,11 +242,15 @@ void KItemListWidget::setHovered(bool hovered) if (!m_hoverAnimation) { m_hoverAnimation = new QPropertyAnimation(this, "hoverOpacity", this); m_hoverAnimation->setDuration(200); + connect(m_hoverAnimation, SIGNAL(finished()), this, SLOT(slotHoverAnimationFinished())); } m_hoverAnimation->stop(); if (hovered) { m_hoverAnimation->setEndValue(1.0); + if (m_enabledSelectionToggle && !(QApplication::mouseButtons() & Qt::LeftButton)) { + initializeSelectionToggle(); + } } else { m_hoverAnimation->setEndValue(0.0); } @@ -265,6 +281,19 @@ bool KItemListWidget::alternatingBackgroundColors() const return m_alternatingBackgroundColors; } +void KItemListWidget::setEnabledSelectionToggle(bool enable) +{ + if (m_enabledSelectionToggle != enable) { + m_enabledSelectionToggle = enable; + update(); + } +} + +bool KItemListWidget::enabledSelectionToggle() const +{ + return m_enabledSelectionToggle; +} + bool KItemListWidget::contains(const QPointF& point) const { if (!QGraphicsWidget::contains(point)) { @@ -350,9 +379,35 @@ qreal KItemListWidget::hoverOpacity() const return m_hoverOpacity; } +void KItemListWidget::slotHoverAnimationFinished() +{ + if (!m_hovered) { + delete m_selectionToggle; + m_selectionToggle = 0; + } +} + +void KItemListWidget::initializeSelectionToggle() +{ + Q_ASSERT(m_enabledSelectionToggle); + + if (!m_selectionToggle) { + m_selectionToggle = new KItemListSelectionToggle(this); + } + + const QRectF toggleRect = selectionToggleRect(); + m_selectionToggle->setPos(toggleRect.topLeft()); + m_selectionToggle->resize(toggleRect.size()); + + m_selectionToggle->setChecked(isSelected()); +} + void KItemListWidget::setHoverOpacity(qreal opacity) { m_hoverOpacity = opacity; + if (m_selectionToggle) { + m_selectionToggle->setOpacity(opacity); + } update(); } |
