diff options
| author | Peter Penz <[email protected]> | 2012-04-10 16:30:50 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-04-10 16:36:26 +0200 |
| commit | d9dbd3398a258d04ec4517fd13e795b437c869d6 (patch) | |
| tree | 6f608d12001818cd416271ac7c4f462e9ddefc7a /src/dolphinviewcontainer.cpp | |
| parent | b8c3d933e66598c78180a73cb394b211ca6b52d0 (diff) | |
Improvements for slow sorting roles
If the sorting is done for data which is resolved asynchronously
(e.g. rating), it is important to give a visual feedback about
the state of the sorting. This is done now by a progress
indication in the statusbar.
Also optimizations for "Sort by type" have been done: Although
resolving a type can be expensive in the most often case it is a
very cheap operation. So it the sorting is done by type, try
to resolve the type synchronously for at least 200 ms to prevent
a asynchronous resorting. This is usually sufficient to have
resolved types even for directories with several thousands of
items.
BUG: 292733
FIXED-IN: 4.9.0
Diffstat (limited to 'src/dolphinviewcontainer.cpp')
| -rw-r--r-- | src/dolphinviewcontainer.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 28bf5250c..1c15c88a9 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -102,7 +102,8 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) : connect(m_view, SIGNAL(startedPathLoading(KUrl)), this, SLOT(slotStartedPathLoading())); connect(m_view, SIGNAL(finishedPathLoading(KUrl)), this, SLOT(slotFinishedPathLoading())); connect(m_view, SIGNAL(itemCountChanged()), this, SLOT(delayedStatusBarUpdate())); - connect(m_view, SIGNAL(pathLoadingProgress(int)), this, SLOT(updateProgress(int))); + connect(m_view, SIGNAL(pathLoadingProgress(int)), this, SLOT(updateLoadingProgress(int))); + connect(m_view, SIGNAL(sortProgress(int)), this, SLOT(updateSortProgress(int))); connect(m_view, SIGNAL(infoMessage(QString)), this, SLOT(showInfoMessage(QString))); connect(m_view, SIGNAL(errorMessage(QString)), this, SLOT(showErrorMessage(QString))); connect(m_view, SIGNAL(urlIsFileError(KUrl)), this, SLOT(openFile(KUrl))); @@ -332,7 +333,7 @@ void DolphinViewContainer::updateStatusBar() } } -void DolphinViewContainer::updateProgress(int percent) +void DolphinViewContainer::updateLoadingProgress(int percent) { if (m_statusBar->progressText().isEmpty()) { m_statusBar->setProgressText(i18nc("@info:progress", "Loading folder...")); @@ -340,6 +341,14 @@ void DolphinViewContainer::updateProgress(int percent) m_statusBar->setProgress(percent); } +void DolphinViewContainer::updateSortProgress(int percent) +{ + if (m_statusBar->progressText().isEmpty()) { + m_statusBar->setProgressText(i18nc("@info:progress", "Sorting...")); + } + m_statusBar->setProgress(percent); +} + void DolphinViewContainer::slotStartedPathLoading() { if (isSearchUrl(url())) { @@ -352,7 +361,7 @@ void DolphinViewContainer::slotStartedPathLoading() // Trigger an undetermined progress indication. The progress // information in percent will be triggered by the percent() signal // of the directory lister later. - updateProgress(-1); + updateLoadingProgress(-1); } } |
