Update the statusbar also during loading the items, not only after the loading has been completed. This fixes the issue that no current item-count is shown when doing a search.

svn path=/trunk/KDE/kdebase/apps/; revision=1184520
This commit is contained in:
Peter Penz 2010-10-10 17:11:55 +00:00
parent c40a3a1ee6
commit 4ad4d4785c
2 changed files with 27 additions and 19 deletions

View file

@ -74,6 +74,7 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
m_filterBar(0), m_filterBar(0),
m_statusBar(0), m_statusBar(0),
m_statusBarTimer(0), m_statusBarTimer(0),
m_statusBarTimestamp(),
m_dirLister(0), m_dirLister(0),
m_proxyModel(0) m_proxyModel(0)
{ {
@ -125,6 +126,8 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
this, SLOT(updateProgress(int))); this, SLOT(updateProgress(int)));
connect(m_dirLister, SIGNAL(itemsDeleted(const KFileItemList&)), connect(m_dirLister, SIGNAL(itemsDeleted(const KFileItemList&)),
this, SLOT(delayedStatusBarUpdate())); this, SLOT(delayedStatusBarUpdate()));
connect(m_dirLister, SIGNAL(newItems(KFileItemList)),
this, SLOT(delayedStatusBarUpdate()));
connect(m_dirLister, SIGNAL(completed()), connect(m_dirLister, SIGNAL(completed()),
this, SLOT(slotDirListerCompleted())); this, SLOT(slotDirListerCompleted()));
connect(m_dirLister, SIGNAL(infoMessage(const QString&)), connect(m_dirLister, SIGNAL(infoMessage(const QString&)),
@ -280,32 +283,39 @@ void DolphinViewContainer::showFilterBar(bool show)
void DolphinViewContainer::delayedStatusBarUpdate() void DolphinViewContainer::delayedStatusBarUpdate()
{ {
if (m_statusBarTimer->isActive() && (m_statusBarTimestamp.elapsed() > 2000)) {
// No update of the statusbar has been done during the last 2 seconds,
// although an update has been requested. Trigger an immediate update.
m_statusBarTimer->stop();
updateStatusBar();
} else {
// Invoke updateStatusBar() with a small delay. This assures that // Invoke updateStatusBar() with a small delay. This assures that
// when a lot of delayedStatusBarUpdates() are done in a short time, // when a lot of delayedStatusBarUpdates() are done in a short time,
// no bottleneck is given. // no bottleneck is given.
m_statusBarTimer->start(); m_statusBarTimer->start();
}
} }
void DolphinViewContainer::updateStatusBar() void DolphinViewContainer::updateStatusBar()
{ {
m_statusBarTimestamp.start();
// As the item count information is less important // As the item count information is less important
// in comparison with other messages, it should only // in comparison with other messages, it should only
// be shown if: // be shown if:
// - the status bar is empty or // - the status bar is empty or
// - shows already the item count information or // - shows already the item count information or
// - shows only a not very important information // - shows only a not very important information
// - if any progress is given don't show the item count info at all const QString newMessage = m_view->statusBarText();
const QString msg = m_statusBar->message(); const QString currentMessage = m_statusBar->message();
const bool updateStatusBarMsg = (msg.isEmpty() const bool updateStatusBarMsg = currentMessage.isEmpty()
|| (msg == m_statusBar->defaultText()) || (currentMessage == m_statusBar->defaultText())
|| (m_statusBar->type() == DolphinStatusBar::Information)) || (m_statusBar->type() == DolphinStatusBar::Information);
&& (m_statusBar->progress() == 100);
const QString text = m_view->statusBarText(); m_statusBar->setDefaultText(newMessage);
m_statusBar->setDefaultText(text);
if (updateStatusBarMsg) { if (updateStatusBarMsg) {
m_statusBar->setMessage(text, DolphinStatusBar::Default); m_statusBar->setMessage(newMessage, DolphinStatusBar::Default);
} }
} }

View file

@ -28,11 +28,8 @@
#include <kurlnavigator.h> #include <kurlnavigator.h>
#include <QtGui/QKeyEvent> #include <QElapsedTimer>
#include <QtCore/QLinkedList> #include <QWidget>
#include <QtGui/QListView>
#include <QtGui/QBoxLayout>
#include <QtGui/QWidget>
#include <views/dolphinview.h> #include <views/dolphinview.h>
@ -257,7 +254,8 @@ private:
FilterBar* m_filterBar; FilterBar* m_filterBar;
DolphinStatusBar* m_statusBar; DolphinStatusBar* m_statusBar;
QTimer* m_statusBarTimer; QTimer* m_statusBarTimer; // Triggers a delayed update
QElapsedTimer m_statusBarTimestamp; // Time in ms since last update
DolphinModel* m_dolphinModel; DolphinModel* m_dolphinModel;
DolphinDirLister* m_dirLister; DolphinDirLister* m_dirLister;