X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/4322ef4114b0b92eee8aa1e941e23188496fbab5..0b130dd57e594d7433141483aa162e4414a9d07b:/src/kitemviews/kitemlistview.cpp diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index d840509da..dbeb571a4 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -27,7 +27,7 @@ #include "kitemlistcontroller.h" #include "kitemlistheader.h" #include "kitemlistselectionmanager.h" -#include "kitemlistwidget.h" +#include "kstandarditemlistwidget.h" #include "private/kitemlistheaderwidget.h" #include "private/kitemlistrubberband.h" @@ -67,7 +67,7 @@ QAccessibleInterface* accessibleInterfaceFactory(const QString& key, QObject* ob return new KItemListViewAccessible(view); } - return 0; + return nullptr; } #endif @@ -80,30 +80,30 @@ KItemListView::KItemListView(QGraphicsWidget* parent) : m_activeTransactions(0), m_endTransactionAnimationHint(Animation), m_itemSize(), - m_controller(0), - m_model(0), + m_controller(nullptr), + m_model(nullptr), m_visibleRoles(), - m_widgetCreator(0), - m_groupHeaderCreator(0), + m_widgetCreator(nullptr), + m_groupHeaderCreator(nullptr), m_styleOption(), m_visibleItems(), m_visibleGroups(), m_visibleCells(), - m_sizeHintResolver(0), - m_layouter(0), - m_animation(0), - m_layoutTimer(0), + m_sizeHintResolver(nullptr), + m_layouter(nullptr), + m_animation(nullptr), + m_layoutTimer(nullptr), m_oldScrollOffset(0), m_oldMaximumScrollOffset(0), m_oldItemOffset(0), m_oldMaximumItemOffset(0), m_skipAutoScrollForRubberBand(false), - m_rubberBand(0), + m_rubberBand(nullptr), m_mousePos(), m_autoScrollIncrement(0), - m_autoScrollTimer(0), - m_header(0), - m_headerWidget(0), + m_autoScrollTimer(nullptr), + m_header(nullptr), + m_headerWidget(nullptr), m_dropIndicator() { setAcceptHoverEvents(true); @@ -141,13 +141,13 @@ KItemListView::~KItemListView() // widgetCreator(). So it is mandatory to delete the group headers // first. delete m_groupHeaderCreator; - m_groupHeaderCreator = 0; + m_groupHeaderCreator = nullptr; delete m_widgetCreator; - m_widgetCreator = 0; + m_widgetCreator = nullptr; delete m_sizeHintResolver; - m_sizeHintResolver = 0; + m_sizeHintResolver = nullptr; } void KItemListView::setScrollOffset(qreal offset) @@ -270,13 +270,13 @@ void KItemListView::setAutoScroll(bool enabled) m_autoScrollTimer->start(InitialAutoScrollDelay); } else if (!enabled && m_autoScrollTimer) { delete m_autoScrollTimer; - m_autoScrollTimer = 0; + m_autoScrollTimer = nullptr; } } bool KItemListView::autoScroll() const { - return m_autoScrollTimer != 0; + return m_autoScrollTimer != nullptr; } void KItemListView::setEnabledSelectionToggles(bool enabled) @@ -309,9 +309,7 @@ KItemModelBase* KItemListView::model() const void KItemListView::setWidgetCreator(KItemListWidgetCreatorBase* widgetCreator) { - if (m_widgetCreator) { - delete m_widgetCreator; - } + delete m_widgetCreator; m_widgetCreator = widgetCreator; } @@ -325,9 +323,7 @@ KItemListWidgetCreatorBase* KItemListView::widgetCreator() const void KItemListView::setGroupHeaderCreator(KItemListGroupHeaderCreatorBase* groupHeaderCreator) { - if (m_groupHeaderCreator) { - delete m_groupHeaderCreator; - } + delete m_groupHeaderCreator; m_groupHeaderCreator = groupHeaderCreator; } @@ -346,7 +342,7 @@ QSizeF KItemListView::itemSize() const QSizeF KItemListView::itemSizeHint() const { - return m_sizeHintResolver->maxSizeHint(); + return m_sizeHintResolver->minSizeHint(); } const KItemListStyleOption& KItemListView::styleOption() const @@ -453,6 +449,19 @@ bool KItemListView::isAboveExpansionToggle(int index, const QPointF& pos) const return false; } +bool KItemListView::isAboveText(int index, const QPointF &pos) const +{ + const KItemListWidget* widget = m_visibleItems.value(index); + if (widget) { + const QRectF &textRect = widget->textRect(); + if (!textRect.isEmpty()) { + const QPointF mappedPos = widget->mapFromItem(this, pos); + return textRect.contains(mappedPos); + } + } + return false; +} + int KItemListView::firstVisibleIndex() const { return m_layouter->firstVisibleIndex(); @@ -620,7 +629,7 @@ QPixmap KItemListView::createDragPixmap(const KItemSet& indexes) const KItemListWidget* item = m_visibleItems.value(indexes.first()); QGraphicsView* graphicsView = scene()->views()[0]; if (item && graphicsView) { - pixmap = item->createDragPixmap(0, graphicsView); + pixmap = item->createDragPixmap(nullptr, graphicsView); } } else { // TODO: Not implemented yet. Probably extend the interface @@ -633,7 +642,7 @@ QPixmap KItemListView::createDragPixmap(const KItemSet& indexes) const void KItemListView::editRole(int index, const QByteArray& role) { - KItemListWidget* widget = m_visibleItems.value(index); + KStandardItemListWidget* widget = qobject_cast(m_visibleItems.value(index)); if (!widget || m_editingRole) { return; } @@ -645,6 +654,9 @@ void KItemListView::editRole(int index, const QByteArray& role) this, &KItemListView::slotRoleEditingCanceled); connect(widget, &KItemListWidget::roleEditingFinished, this, &KItemListView::slotRoleEditingFinished); + + connect(this, &KItemListView::scrollOffsetChanged, + widget, &KStandardItemListWidget::finishRoleEditing); } void KItemListView::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) @@ -822,12 +834,12 @@ Qt::Orientation KItemListView::scrollOrientation() const KItemListWidgetCreatorBase* KItemListView::defaultWidgetCreator() const { - return 0; + return nullptr; } KItemListGroupHeaderCreatorBase* KItemListView::defaultGroupHeaderCreator() const { - return 0; + return nullptr; } void KItemListView::initializeItemListWidget(KItemListWidget* item) @@ -2078,7 +2090,7 @@ void KItemListView::recycleGroupHeaderForWidget(KItemListWidget* widget) { KItemListGroupHeader* header = m_visibleGroups.value(widget); if (header) { - header->setParentItem(0); + header->setParentItem(nullptr); groupHeaderCreator()->recycle(header); m_visibleGroups.remove(widget); disconnect(widget, &KItemListWidget::geometryChanged, this, &KItemListView::slotGeometryOfGroupHeaderParentChanged); @@ -2539,7 +2551,7 @@ void KItemListView::updateSiblingsInformation(int firstIndex, int lastIndex) const int parents = m_model->expandedParentsCount(lastIndex + 1); for (int i = lastIndex; i >= firstIndex; --i) { if (m_model->expandedParentsCount(i) != parents) { - widget = 0; + widget = nullptr; break; } } @@ -2630,13 +2642,14 @@ bool KItemListView::hasSiblingSuccessor(int index) const void KItemListView::disconnectRoleEditingSignals(int index) { - KItemListWidget* widget = m_visibleItems.value(index); + KStandardItemListWidget* widget = qobject_cast(m_visibleItems.value(index)); if (!widget) { return; } disconnect(widget, &KItemListWidget::roleEditingCanceled, this, nullptr); disconnect(widget, &KItemListWidget::roleEditingFinished, this, nullptr); + disconnect(this, &KItemListView::scrollOffsetChanged, widget, nullptr); } int KItemListView::calculateAutoScrollingIncrement(int pos, int range, int oldInc) @@ -2701,7 +2714,7 @@ void KItemListCreatorBase::pushRecycleableWidget(QGraphicsWidget* widget) QGraphicsWidget* KItemListCreatorBase::popRecycleableWidget() { if (m_recycleableWidgets.isEmpty()) { - return 0; + return nullptr; } QGraphicsWidget* widget = m_recycleableWidgets.takeLast(); @@ -2715,7 +2728,7 @@ KItemListWidgetCreatorBase::~KItemListWidgetCreatorBase() void KItemListWidgetCreatorBase::recycle(KItemListWidget* widget) { - widget->setParentItem(0); + widget->setParentItem(nullptr); widget->setOpacity(1.0); pushRecycleableWidget(widget); }