MultiLoadingIndicator: Only emit task count change when needed

This commit is contained in:
Jonas Kvinge
2025-03-08 21:45:34 +01:00
parent 27184eb001
commit 31671af5f5
2 changed files with 11 additions and 3 deletions

View File

@@ -2,6 +2,7 @@
* Strawberry Music Player
* This file was part of Clementine.
* Copyright 2010, David Sansome <me@davidsansome.com>
* Copyright 2018-2025, Jonas Kvinge <jonas@jkvinge.net>
*
* Strawberry is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -45,7 +46,8 @@ constexpr int kSpacing = 6;
MultiLoadingIndicator::MultiLoadingIndicator(QWidget *parent)
: QWidget(parent),
task_manager_(nullptr),
spinner_(new BusyIndicator(this)) {
spinner_(new BusyIndicator(this)),
task_count_(-1) {
spinner_->move(kHorizontalPadding, kVerticalPadding);
setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Fixed);
@@ -75,7 +77,7 @@ void MultiLoadingIndicator::UpdateText() {
QStringList strings;
strings.reserve(tasks.count());
for (const TaskManager::Task &task : tasks) {
QString task_text(task.name);
QString task_text = task.name;
task_text[0] = task_text[0].toLower();
if (task.progress_max > 0) {
@@ -92,7 +94,11 @@ void MultiLoadingIndicator::UpdateText() {
text_ += "..."_L1;
}
Q_EMIT TaskCountChange(static_cast<int>(tasks.count()));
if (task_count_ != tasks.count()) {
task_count_ = tasks.count();
Q_EMIT TaskCountChange(static_cast<int>(tasks.count()));
}
update();
updateGeometry();

View File

@@ -2,6 +2,7 @@
* Strawberry Music Player
* This file was part of Clementine.
* Copyright 2010, David Sansome <me@davidsansome.com>
* Copyright 2018-2025, Jonas Kvinge <jonas@jkvinge.net>
*
* Strawberry is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -56,6 +57,7 @@ class MultiLoadingIndicator : public QWidget {
SharedPtr<TaskManager> task_manager_;
BusyIndicator *spinner_;
qint64 task_count_;
QString text_;
};