┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kitemlistwidget.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2011-11-13 16:20:42 +0100
committerPeter Penz <[email protected]>2011-11-13 16:21:56 +0100
commit2438b61d8e76f8ea016217150be711a1467c32d0 (patch)
tree8519e8eb38d7f33b50b75eaeb96dfaeb30bacab4 /src/kitemviews/kitemlistwidget.cpp
parentfddcbc7a9edbed9267ea3114c8b7316f18904aba (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.cpp57
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();
}