mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-12 12:54:29 +00:00
[Status Bar] Remove file status Timer, add text update delay
Summary: Currently when hovering over a file we have its name, mimetype type and size display in the status bar for 1 second, after which the status of the folder is displayed. This patch removes this timer making the status bar behavior more predictable and user friendly. Instead there is a 50ms delay between when the status bar gets new text to display (for instance mouse hovering or keyboard navigation) and when the status bar displayed text is updated. This is to avoid flickering. FIXED-IN: 19.12 BUG: 399267 Reviewers: #dolphin, elvisangelaccio, ngraham Reviewed By: #dolphin, elvisangelaccio, ngraham Subscribers: kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D25218
This commit is contained in:
parent
7949aee2d2
commit
31bc909c3b
|
@ -39,7 +39,7 @@
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
const int ResetToDefaultTimeout = 1000;
|
const int UpdateDelay = 50;
|
||||||
}
|
}
|
||||||
|
|
||||||
DolphinStatusBar::DolphinStatusBar(QWidget* parent) :
|
DolphinStatusBar::DolphinStatusBar(QWidget* parent) :
|
||||||
|
@ -53,7 +53,7 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent) :
|
||||||
m_stopButton(nullptr),
|
m_stopButton(nullptr),
|
||||||
m_progress(100),
|
m_progress(100),
|
||||||
m_showProgressBarTimer(nullptr),
|
m_showProgressBarTimer(nullptr),
|
||||||
m_resetToDefaultTextTimer(nullptr),
|
m_delayUpdateTimer(nullptr),
|
||||||
m_textTimestamp()
|
m_textTimestamp()
|
||||||
{
|
{
|
||||||
// Initialize text label
|
// Initialize text label
|
||||||
|
@ -95,10 +95,12 @@ DolphinStatusBar::DolphinStatusBar(QWidget* parent) :
|
||||||
m_showProgressBarTimer->setSingleShot(true);
|
m_showProgressBarTimer->setSingleShot(true);
|
||||||
connect(m_showProgressBarTimer, &QTimer::timeout, this, &DolphinStatusBar::updateProgressInfo);
|
connect(m_showProgressBarTimer, &QTimer::timeout, this, &DolphinStatusBar::updateProgressInfo);
|
||||||
|
|
||||||
m_resetToDefaultTextTimer = new QTimer(this);
|
// initialize text updater delay timer
|
||||||
m_resetToDefaultTextTimer->setInterval(ResetToDefaultTimeout);
|
m_delayUpdateTimer = new QTimer(this);
|
||||||
m_resetToDefaultTextTimer->setSingleShot(true);
|
m_delayUpdateTimer->setInterval(UpdateDelay);
|
||||||
connect(m_resetToDefaultTextTimer, &QTimer::timeout, this, &DolphinStatusBar::slotResetToDefaultText);
|
m_delayUpdateTimer->setSingleShot(true);
|
||||||
|
connect(m_delayUpdateTimer, &QTimer::timeout,
|
||||||
|
this, &DolphinStatusBar::updateLabelText);
|
||||||
|
|
||||||
// Initialize top layout and size policies
|
// Initialize top layout and size policies
|
||||||
const int fontHeight = QFontMetrics(m_label->font()).height();
|
const int fontHeight = QFontMetrics(m_label->font()).height();
|
||||||
|
@ -154,19 +156,9 @@ void DolphinStatusBar::setText(const QString& text)
|
||||||
|
|
||||||
m_textTimestamp = QTime::currentTime();
|
m_textTimestamp = QTime::currentTime();
|
||||||
|
|
||||||
if (text.isEmpty()) {
|
m_text = text;
|
||||||
// Assure that the previous set text won't get
|
// will update status bar text in 50ms
|
||||||
// cleared immediately.
|
m_delayUpdateTimer->start();
|
||||||
m_resetToDefaultTextTimer->start();
|
|
||||||
} else {
|
|
||||||
m_text = text;
|
|
||||||
|
|
||||||
if (m_resetToDefaultTextTimer->isActive()) {
|
|
||||||
m_resetToDefaultTextTimer->start();
|
|
||||||
}
|
|
||||||
|
|
||||||
updateLabelText();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QString DolphinStatusBar::text() const
|
QString DolphinStatusBar::text() const
|
||||||
|
@ -214,12 +206,13 @@ int DolphinStatusBar::progress() const
|
||||||
|
|
||||||
void DolphinStatusBar::resetToDefaultText()
|
void DolphinStatusBar::resetToDefaultText()
|
||||||
{
|
{
|
||||||
|
m_text.clear();
|
||||||
|
|
||||||
QTime currentTime;
|
QTime currentTime;
|
||||||
if (currentTime.msecsTo(m_textTimestamp) < ResetToDefaultTimeout) {
|
if (currentTime.msecsTo(m_textTimestamp) < UpdateDelay) {
|
||||||
m_resetToDefaultTextTimer->start();
|
m_delayUpdateTimer->start();
|
||||||
} else {
|
} else {
|
||||||
m_resetToDefaultTextTimer->stop();
|
updateLabelText();
|
||||||
slotResetToDefaultText();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,12 +318,6 @@ void DolphinStatusBar::updateLabelText()
|
||||||
m_label->setText(text);
|
m_label->setText(text);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DolphinStatusBar::slotResetToDefaultText()
|
|
||||||
{
|
|
||||||
m_text.clear();
|
|
||||||
updateLabelText();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DolphinStatusBar::updateZoomSliderToolTip(int zoomLevel)
|
void DolphinStatusBar::updateZoomSliderToolTip(int zoomLevel)
|
||||||
{
|
{
|
||||||
const int size = ZoomLevelInfo::iconSizeForZoomLevel(zoomLevel);
|
const int size = ZoomLevelInfo::iconSizeForZoomLevel(zoomLevel);
|
||||||
|
|
|
@ -67,8 +67,7 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces the text set by setText() by the text that
|
* Replaces the text set by setText() by the text that
|
||||||
* has been set by setDefaultText(). It is assured that the previous
|
* has been set by setDefaultText(). DolphinStatusBar::text()
|
||||||
* text will be shown for at least 1 second. DolphinStatusBar::text()
|
|
||||||
* will return an empty string after the reset has been done.
|
* will return an empty string after the reset has been done.
|
||||||
*/
|
*/
|
||||||
void resetToDefaultText();
|
void resetToDefaultText();
|
||||||
|
@ -119,14 +118,6 @@ private slots:
|
||||||
*/
|
*/
|
||||||
void updateLabelText();
|
void updateLabelText();
|
||||||
|
|
||||||
/**
|
|
||||||
* Is invoked by m_resetToDefaultTextTimer and clears
|
|
||||||
* m_text so that the default text will be shown. This
|
|
||||||
* prevents that information-messages will be cleared
|
|
||||||
* too fast.
|
|
||||||
*/
|
|
||||||
void slotResetToDefaultText();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates the text of the zoom slider tooltip to show
|
* Updates the text of the zoom slider tooltip to show
|
||||||
* the currently used size.
|
* the currently used size.
|
||||||
|
@ -156,7 +147,7 @@ private:
|
||||||
int m_progress;
|
int m_progress;
|
||||||
QTimer* m_showProgressBarTimer;
|
QTimer* m_showProgressBarTimer;
|
||||||
|
|
||||||
QTimer* m_resetToDefaultTextTimer;
|
QTimer* m_delayUpdateTimer;
|
||||||
QTime m_textTimestamp;
|
QTime m_textTimestamp;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue