mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
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:
parent
c40a3a1ee6
commit
4ad4d4785c
2 changed files with 27 additions and 19 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue