diff --git a/src/filewidgets/kfileplacesview.cpp b/src/filewidgets/kfileplacesview.cpp --- a/src/filewidgets/kfileplacesview.cpp +++ b/src/filewidgets/kfileplacesview.cpp @@ -509,6 +509,8 @@ int insertIndicatorHeight(int itemHeight) const; void fadeCapacityBar(const QModelIndex &index, FadeType fadeType); int sectionsCount() const; + void triggerItemAppearingAnimation(); + void triggerItemDisappearingAnimation(); void _k_placeClicked(const QModelIndex &index); void _k_placeEntered(const QModelIndex &index); @@ -644,22 +646,13 @@ if (current != index && placesModel->isHidden(current) && !d->showAll) { KFilePlacesViewDelegate *delegate = static_cast(itemDelegate()); delegate->addDisappearingItem(current); - - if (d->itemDisappearTimeline.state() != QTimeLine::Running) { - delegate->setDisappearingItemProgress(0.0); - d->itemDisappearTimeline.start(); - } + d->triggerItemDisappearingAnimation(); } if (current != index && placesModel->isHidden(index) && !d->showAll) { KFilePlacesViewDelegate *delegate = static_cast(itemDelegate()); delegate->addAppearingItem(index); - - if (d->itemAppearTimeline.state() != QTimeLine::Running) { - delegate->setAppearingItemProgress(0.0); - d->itemAppearTimeline.start(); - } - + d->triggerItemAppearingAnimation(); setRowHidden(index.row(), false); } @@ -699,23 +692,15 @@ delegate->addAppearingItem(index); } } - - if (d->itemAppearTimeline.state() != QTimeLine::Running) { - delegate->setAppearingItemProgress(0.0); - d->itemAppearTimeline.start(); - } + d->triggerItemAppearingAnimation(); } else { for (int i = 0; i < rowCount; ++i) { QModelIndex index = placesModel->index(i, 0); if (index != current && placesModel->isHidden(index)) { delegate->addDisappearingItem(index); } } - - if (d->itemDisappearTimeline.state() != QTimeLine::Running) { - delegate->setDisappearingItemProgress(0.0); - d->itemDisappearTimeline.start(); - } + d->triggerItemDisappearingAnimation(); } } @@ -857,22 +842,15 @@ if (!d->showAll && hideSection->isChecked()) { delegate->addDisappearingItemGroup(index); - if (d->itemDisappearTimeline.state() != QTimeLine::Running) { - delegate->setDisappearingItemProgress(0.0); - d->itemDisappearTimeline.start(); - } + d->triggerItemDisappearingAnimation(); } } else if (hide && (result == hide)) { placesModel->setPlaceHidden(index, hide->isChecked()); QModelIndex current = placesModel->closestItem(d->currentUrl); if (index != current && !d->showAll && hide->isChecked()) { delegate->addDisappearingItem(index); - - if (d->itemDisappearTimeline.state() != QTimeLine::Running) { - delegate->setDisappearingItemProgress(0.0); - d->itemDisappearTimeline.start(); - } + d->triggerItemDisappearingAnimation(); } } else if (showAll != nullptr && result == showAll) { setShowAll(showAll->isChecked()); @@ -1075,15 +1053,13 @@ QModelIndex index = placesModel->index(i, 0, parent); if (d->showAll || !placesModel->isHidden(index)) { delegate->addAppearingItem(index); + d->triggerItemAppearingAnimation(); } else { setRowHidden(i, true); } } - if (d->itemAppearTimeline.state() != QTimeLine::Running) { - delegate->setAppearingItemProgress(0.0); - d->itemAppearTimeline.start(); - } + d->triggerItemAppearingAnimation(); d->adaptItemSize(); } @@ -1307,6 +1283,22 @@ return count; } +void KFilePlacesView::Private::triggerItemAppearingAnimation() +{ + if (itemAppearTimeline.state() != QTimeLine::Running) { + delegate->setAppearingItemProgress(0.0); + itemAppearTimeline.start(); + } +} + +void KFilePlacesView::Private::triggerItemDisappearingAnimation() +{ + if (itemDisappearTimeline.state() != QTimeLine::Running) { + delegate->setDisappearingItemProgress(0.0); + itemDisappearTimeline.start(); + } +} + void KFilePlacesView::Private::_k_placeClicked(const QModelIndex &index) { KFilePlacesModel *placesModel = qobject_cast(q->model());