Always periodically dispatch pending items

"Local" URLs can also be slow.
This might jeopardize loading large local directories where a resorting could take place but imho it's better than leaving the user
wondering when files will finally show up. However, it takes some time for KDirLister to initially signal items having been added,
and only then our 2 second timer starts.
Also, stop the timer when loading has completed.

Differential Revision: https://phabricator.kde.org/D23460
This commit is contained in:
Kai Uwe Broulik 2019-08-27 13:26:26 +02:00
parent 0c4f58328f
commit f4a1d1b022
2 changed files with 2 additions and 8 deletions

View file

@ -917,6 +917,7 @@ void KFileItemModel::resortAllItems()
void KFileItemModel::slotCompleted()
{
m_maximumUpdateIntervalTimer->stop();
dispatchPendingItemsToInsert();
if (!m_urlsToExpand.isEmpty()) {
@ -1007,7 +1008,7 @@ void KFileItemModel::slotItemsAdded(const QUrl &directoryUrl, const KFileItemLis
}
}
if (useMaximumUpdateInterval() && !m_maximumUpdateIntervalTimer->isActive()) {
if (!m_maximumUpdateIntervalTimer->isActive()) {
// Assure that items get dispatched if no completed() or canceled() signal is
// emitted during the maximum update interval.
m_maximumUpdateIntervalTimer->start();
@ -1875,11 +1876,6 @@ int KFileItemModel::stringCompare(const QString& a, const QString& b, const QCol
return QString::compare(a, b, Qt::CaseSensitive);
}
bool KFileItemModel::useMaximumUpdateInterval() const
{
return !m_dirLister->url().isLocalFile();
}
QList<QPair<int, QVariant> > KFileItemModel::nameRoleGroups() const
{
Q_ASSERT(!m_itemData.isEmpty());

View file

@ -382,8 +382,6 @@ private:
int stringCompare(const QString& a, const QString& b, const QCollator& collator) const;
bool useMaximumUpdateInterval() const;
QList<QPair<int, QVariant> > nameRoleGroups() const;
QList<QPair<int, QVariant> > sizeRoleGroups() const;
QList<QPair<int, QVariant> > timeRoleGroups(const std::function<QDateTime(const ItemData *)> &fileTimeCb) const;