#include "kitemlistview.h"
#include <KDebug>
+#include "kitemlistcontainer.h"
#include "kitemlistcontroller.h"
#include "kitemlistheader.h"
#include "kitemlistselectionmanager.h"
}
#ifndef QT_NO_ACCESSIBILITY
-QAccessibleInterface* accessibleViewFactory(const QString &key, QObject *object)
+QAccessibleInterface* accessibleInterfaceFactory(const QString &key, QObject *object)
{
Q_UNUSED(key)
- if (KItemListView *view = qobject_cast<KItemListView*>(object)) {
+
+ if (KItemListContainer* container = qobject_cast<KItemListContainer*>(object)) {
+ return new KItemListContainerAccessible(container);
+ } else if (KItemListView* view = qobject_cast<KItemListView*>(object)) {
return new KItemListViewAccessible(view);
}
+
return 0;
}
#endif
m_header = new KItemListHeader(this);
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::installFactory(accessibleViewFactory);
+ QAccessible::installFactory(accessibleInterfaceFactory);
#endif
}
return m_layouter->maximumItemOffset();
}
+int KItemListView::maximumVisibleItems() const
+{
+ return m_layouter->maximumVisibleItems();
+}
+
void KItemListView::setVisibleRoles(const QList<QByteArray>& roles)
{
const QList<QByteArray> previousRoles = m_visibleRoles;
}
}
+qreal KItemListView::verticalPageStep() const
+{
+ qreal headerHeight = 0;
+ if (m_headerWidget->isVisible()) {
+ headerHeight = m_headerWidget->size().height();
+ }
+ return size().height() - headerHeight;
+}
+
int KItemListView::itemAt(const QPointF& pos) const
{
QHashIterator<int, KItemListWidget*> it(m_visibleItems);
}
}
-KItemListViewLayouter* layouter() const
-{
- return m_layouter;
-}
-
void KItemListView::setItemSize(const QSizeF& size)
{
const QSizeF previousSize = m_itemSize;
// Important: Don't read any m_layouter-property inside the for-loop in case if
// multiple ranges are given! m_layouter accesses m_sizeHintResolver which is
// updated in each loop-cycle and has only a consistent state after the loop.
- Q_ASSERT(m_layouter->isDirty());
+ // TODO: This assert can be hit when filtering in Icons and Compact view,
+ // see https://bugs.kde.org/show_bug.cgi?id=317827 comments 2 and 3.
+ // We should try to figure out if the assert is wrong or if there is a bug in the code.
+ //Q_ASSERT(m_layouter->isDirty());
#endif
m_endTransactionAnimationHint = NoAnimation;
endTransaction();
doLayout(NoAnimation);
}
}
+ QAccessible::updateAccessibility(this, 0, QAccessible::TableModelChanged);
}
void KItemListView::slotGroupedSortingChanged(bool current)
const qreal newScrollOffset = qMin(scrollOffset() + m_autoScrollIncrement, maxVisibleOffset);
setScrollOffset(newScrollOffset);
- // Trigger the autoscroll timer which will periodically call
- // triggerAutoScrolling()
- m_autoScrollTimer->start(RepeatingAutoScrollDelay);
+ // Trigger the autoscroll timer which will periodically call
+ // triggerAutoScrolling()
+ m_autoScrollTimer->start(RepeatingAutoScrollDelay);
}
void KItemListView::slotGeometryOfGroupHeaderParentChanged()
void KItemListView::slotRoleEditingCanceled(int index, const QByteArray& role, const QVariant& value)
{
+ disconnectRoleEditingSignals(index);
+
emit roleEditingCanceled(index, role, value);
m_editingRole = false;
}
void KItemListView::slotRoleEditingFinished(int index, const QByteArray& role, const QVariant& value)
{
+ disconnectRoleEditingSignals(index);
+
emit roleEditingFinished(index, role, value);
m_editingRole = false;
}
return hasSuccessor;
}
+void KItemListView::disconnectRoleEditingSignals(int index)
+{
+ KItemListWidget* widget = m_visibleItems.value(index);
+ if (!widget) {
+ return;
+ }
+
+ widget->disconnect(SIGNAL(roleEditingCanceled(int,QByteArray,QVariant)), this);
+ widget->disconnect(SIGNAL(roleEditingFinished(int,QByteArray,QVariant)), this);
+}
+
int KItemListView::calculateAutoScrollingIncrement(int pos, int range, int oldInc)
{
int inc = 0;